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

Reply via email to