diff options
author | Lorenzo Bianconi <lorenzo.bianconi@redhat.com> | 2019-01-18 14:05:39 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-01-22 22:52:17 +0300 |
commit | cb73ee40b1b381eaf3749e6dbeed567bb38e5258 (patch) | |
tree | 4a46c80cac3f7bb0f044f1cbf2d73a66129a9456 /net/ipv6/ip6_gre.c | |
parent | 56cb4e5034998b5522a657957321ca64ca2ea0a0 (diff) | |
download | linux-cb73ee40b1b381eaf3749e6dbeed567bb38e5258.tar.xz |
net: ip_gre: use erspan key field for tunnel lookup
Use ERSPAN key header field as tunnel key in gre_parse_header routine
since ERSPAN protocol sets the key field of the external GRE header to
0 resulting in a tunnel lookup fail in ip6gre_err.
In addition remove key field parsing and pskb_may_pull check in
erspan_rcv and ip6erspan_rcv
Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support")
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/ip6_gre.c')
-rw-r--r-- | net/ipv6/ip6_gre.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c index b1be67ca6768..4416368dbd49 100644 --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c @@ -534,13 +534,9 @@ static int ip6erspan_rcv(struct sk_buff *skb, int gre_hdr_len, struct ip6_tnl *tunnel; u8 ver; - if (unlikely(!pskb_may_pull(skb, sizeof(*ershdr)))) - return PACKET_REJECT; - ipv6h = ipv6_hdr(skb); ershdr = (struct erspan_base_hdr *)skb->data; ver = ershdr->ver; - tpi->key = cpu_to_be32(get_session_id(ershdr)); tunnel = ip6gre_tunnel_lookup(skb->dev, &ipv6h->saddr, &ipv6h->daddr, tpi->key, |