[ovs-dev] [Missing vlan V2 2/2] datapath: Fix missing VLAN netlink attribute handling
Andy Zhou
azhou at nicira.com
Mon Jul 29 20:26:09 UTC 2013
Missing VLAN netlink attribute should be interpreted as exact match
of no VLAN tag, instead of wildcarded match for all VLAN tags.
Bug #18736.
Signed-off-by: Andy Zhou <azhou at nicira.com>
---
v1->v2
*Remove the fix for in_port.
*Always set VLAN_TAG_PRESENT bit in the mask.
---
datapath/flow.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/datapath/flow.c b/datapath/flow.c
index 7f69538..eed841c 100644
--- a/datapath/flow.c
+++ b/datapath/flow.c
@@ -225,6 +225,12 @@ static bool ovs_match_validate(const struct sw_flow_match *match,
return false;
}
+ if (match->mask &&
+ !(match->mask->key.eth.tci & htons(VLAN_TAG_PRESENT))) {
+ OVS_NLERR("VLAN present bit can not be wildcarded.\n");
+ match->mask->key.eth.tci |= htons(VLAN_TAG_PRESENT);
+ }
+
return true;
}
@@ -1373,7 +1379,8 @@ static int ovs_key_from_nlattrs(struct sw_flow_match *match, u64 attrs,
SW_FLOW_KEY_PUT(match, eth.tci, tci, is_mask);
attrs &= ~(1ULL << OVS_KEY_ATTR_VLAN);
- }
+ } else if (!is_mask)
+ SW_FLOW_KEY_PUT(match, eth.tci, htons(0xffff), true);
if (attrs & (1ULL << OVS_KEY_ATTR_ETHERTYPE)) {
__be16 eth_type;
--
1.7.9.5
More information about the dev
mailing list