openvswitch: Fix parsing invalid LLC/SNAP ethertypes
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@bigswitch.com> Signed-off-by: Jesse Gross <jesse@nicira.com>
This commit is contained in:
parent
a15ff76c95
commit
17b682a048
@ -484,7 +484,11 @@ static __be16 parse_ethertype(struct sk_buff *skb)
|
|||||||
return htons(ETH_P_802_2);
|
return htons(ETH_P_802_2);
|
||||||
|
|
||||||
__skb_pull(skb, sizeof(struct llc_snap_hdr));
|
__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,
|
static int parse_icmpv6(struct sk_buff *skb, struct sw_flow_key *key,
|
||||||
|
Loading…
Reference in New Issue
Block a user