From fa7e02e4fa534eaf4f5a42be42d735a0908ec7fa Mon Sep 17 00:00:00 2001 From: Michael Dalton Date: Mon, 11 Mar 2013 06:52:28 +0000 Subject: [PATCH] --- yaml --- r: 368183 b: refs/heads/master c: e1733de2243609073534cf56afb146a62af3c3d8 h: refs/heads/master i: 368181: 17f4882d116eaf7909e6bf7912f01642b2256ce1 368179: 355311a80116be82159864d686813124059f022d 368175: c0ea518ba58c9b72e0b09a74d9b46bf995539019 v: v3 --- [refs] | 2 +- trunk/net/core/flow_dissector.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index d6f8362d9d98..85d4e96ead0a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f4f3efdaf9f0770b69fb2c86f1a67547ad756942 +refs/heads/master: e1733de2243609073534cf56afb146a62af3c3d8 diff --git a/trunk/net/core/flow_dissector.c b/trunk/net/core/flow_dissector.c index 9d4c7201400d..f8d9e03b7a7c 100644 --- a/trunk/net/core/flow_dissector.c +++ b/trunk/net/core/flow_dissector.c @@ -119,6 +119,17 @@ bool skb_flow_dissect(const struct sk_buff *skb, struct flow_keys *flow) nhoff += 4; if (hdr->flags & GRE_SEQ) nhoff += 4; + if (proto == htons(ETH_P_TEB)) { + const struct ethhdr *eth; + struct ethhdr _eth; + + eth = skb_header_pointer(skb, nhoff, + sizeof(_eth), &_eth); + if (!eth) + return false; + proto = eth->h_proto; + nhoff += sizeof(*eth); + } goto again; } break;