[ovs-dev] [PATCH 3/5] odp-util: Fix converting masked VLAN from flow.

Justin Pettit jpettit at nicira.com
Fri Jun 28 01:16:16 UTC 2013


When converting the VLAN from a flow to an ODP key, the processing logic
would always store the VLAN ethertype.  However, when handling a mask,
it should be a mask, not an ethertype.  And since we don't support
bit-wise masking of the ethertype, just make it an exact-match mask.

Signed-off-by: Justin Pettit <jpettit at nicira.com>
---
 lib/odp-util.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/lib/odp-util.c b/lib/odp-util.c
index 7724be4..5be8118 100644
--- a/lib/odp-util.c
+++ b/lib/odp-util.c
@@ -2285,7 +2285,11 @@ odp_flow_key_from_flow__(struct ofpbuf *buf, const struct flow *data,
     memcpy(eth_key->eth_dst, data->dl_dst, ETH_ADDR_LEN);
 
     if (flow->vlan_tci != htons(0) || flow->dl_type == htons(ETH_TYPE_VLAN)) {
-        nl_msg_put_be16(buf, OVS_KEY_ATTR_ETHERTYPE, htons(ETH_TYPE_VLAN));
+        if (is_mask) {
+            nl_msg_put_be16(buf, OVS_KEY_ATTR_ETHERTYPE, htons(UINT16_MAX));
+        } else {
+            nl_msg_put_be16(buf, OVS_KEY_ATTR_ETHERTYPE, htons(ETH_TYPE_VLAN));
+        }
         nl_msg_put_be16(buf, OVS_KEY_ATTR_VLAN, data->vlan_tci);
         encap = nl_msg_start_nested(buf, OVS_KEY_ATTR_ENCAP);
         if (flow->vlan_tci == htons(0)) {
-- 
1.7.5.4




More information about the dev mailing list