[ovs-dev] [PATCH 2/2] datapath: Fix parsing invalid LLC/SNAP ethertypes

Rich Lane rich.lane at bigswitch.com
Fri Feb 8 23:29:57 UTC 2013


Before this patch, if an LLC/SNAP packet with OUI 00:00:00 had an ethertype
less than 1536 the flow key given to userspace in the upcall would contain the
invalid ethertype (for example, 3). If userspace attempted to insert a kernel
flow for this key it would be rejected by ovs_flow_from_nlattrs.

This patch allows OVS to pass the OFTest pktact.DirectBadLlcPackets.

Signed-off-by: Rich Lane <rlane at bigswitch.com>
---
 datapath/flow.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/datapath/flow.c b/datapath/flow.c
index fad9e19..b14229f 100644
--- a/datapath/flow.c
+++ b/datapath/flow.c
@@ -500,7 +500,11 @@ static __be16 parse_ethertype(struct sk_buff *skb)
 		return htons(ETH_P_802_2);
 
 	__skb_pull(skb, sizeof(struct llc_snap_hdr));
-	return llc->ethertype;
+
+	if (ntohs(llc->ethertype) >= 1536)
+		return llc->ethertype;
+
+	return htons(ETH_P_802_2);
 }
 
 static int parse_icmpv6(struct sk_buff *skb, struct sw_flow_key *key,
-- 
1.7.9.5




More information about the dev mailing list