On Wed, 4 May 2016 16:36:31 +0900, Simon Horman wrote:
+ /* Packets from user space for execution only have metadata key
+ * attributes. OVS_KEY_ATTR_PACKET_ETHERTYPE is then used to specify
+ * the starting layer of the packet. Packets with Ethernet headers
+ * have this attribute set to 0
+ */
+ if (*attrs & (1ULL << OVS_KEY_ATTR_PACKET_ETHERTYPE)) {
+ __be16 eth_type;
+
+ if (is_mask) {
+ /* Always exact match packet EtherType */
+ eth_type = htons(0xffff);
+ } else {
+ eth_type = nla_get_be16(a[OVS_KEY_ATTR_PACKET_ETHERTYPE]);
+ is_layer3 = ((eth_type == htons(ETH_P_IP)) ||
+ (eth_type == htons(ETH_P_IPV6)));
Unknown types need to be rejected, not treated as layer2, otherwise we
may run into problems later (with combination of this kernel + newer
user space) when we add more types, such as ETH_P_NSH.
Jiri
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev