odp-util: Always encode mask of 0xffff for dl_type < ETH_TYPE_MIN.
authorJustin Pettit <jpettit@nicira.com>
Mon, 1 Jul 2013 17:43:18 +0000 (10:43 -0700)
committerJustin Pettit <jpettit@nicira.com>
Wed, 3 Jul 2013 16:40:49 +0000 (09:40 -0700)
For non-Ethernet II packets, we don't set an EtherType netlink attribute
and set the Ethertype mask attribute to 0xffff.  The code was encoding
whatever mask was passed in, which could lead to bugs if the caller
didn't know the userspace-kernel interface.

Found by inspection.

Signed-off-by: Justin Pettit <jpettit@nicira.com>
Acked-by: Andy Zhou <azhou@nicira.com>
lib/odp-util.c

index 14994a9..c05664c 100644 (file)
@@ -2373,7 +2373,7 @@ odp_flow_key_from_flow__(struct ofpbuf *buf, const struct flow *data,
          *                    802.3 SNAP packet with valid eth_type).
          */
         if (is_mask) {
-            nl_msg_put_be16(buf, OVS_KEY_ATTR_ETHERTYPE, data->dl_type);
+            nl_msg_put_be16(buf, OVS_KEY_ATTR_ETHERTYPE, htons(UINT16_MAX));
         }
         goto unencap;
     }