mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 22:05:19 +00:00
flow: Zero tun_id if wildcarded.
Normally match fields are zeroed if they are wildcarded in normalize_match(). However, tun_id isn't part of struct ofp_match so do it when we convert to a flow instead.
This commit is contained in:
16
lib/flow.c
16
lib/flow.c
@@ -273,20 +273,16 @@ flow_to_match(const flow_t *flow, uint32_t wildcards, bool tun_id_from_cookie,
|
||||
|
||||
void
|
||||
flow_from_match(const struct ofp_match *match, bool tun_id_from_cookie,
|
||||
uint64_t cookie, flow_t *flow, uint32_t *wildcards)
|
||||
uint64_t cookie, flow_t *flow, uint32_t *flow_wildcards)
|
||||
{
|
||||
if (wildcards) {
|
||||
*wildcards = ntohl(match->wildcards);
|
||||
uint32_t wildcards = ntohl(match->wildcards);
|
||||
|
||||
if (!tun_id_from_cookie) {
|
||||
*wildcards |= NXFW_TUN_ID;
|
||||
}
|
||||
}
|
||||
flow->nw_src = match->nw_src;
|
||||
flow->nw_dst = match->nw_dst;
|
||||
if (tun_id_from_cookie) {
|
||||
if (tun_id_from_cookie && !(wildcards & NXFW_TUN_ID)) {
|
||||
flow->tun_id = htonl(ntohll(cookie) >> 32);
|
||||
} else {
|
||||
wildcards |= NXFW_TUN_ID;
|
||||
flow->tun_id = 0;
|
||||
}
|
||||
flow->in_port = (match->in_port == htons(OFPP_LOCAL) ? ODPP_LOCAL
|
||||
@@ -301,6 +297,10 @@ flow_from_match(const struct ofp_match *match, bool tun_id_from_cookie,
|
||||
flow->nw_tos = match->nw_tos;
|
||||
flow->nw_proto = match->nw_proto;
|
||||
memset(flow->reserved, 0, sizeof flow->reserved);
|
||||
|
||||
if (flow_wildcards) {
|
||||
*flow_wildcards = wildcards;
|
||||
}
|
||||
}
|
||||
|
||||
char *
|
||||
|
Reference in New Issue
Block a user