seg6: fix skb transport_header after decap_and_validate()
authorAndrea Mayer <andrea.mayer@uniroma2.it>
Sat, 16 Nov 2019 15:05:53 +0000 (16:05 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 16 Nov 2019 20:18:32 +0000 (12:18 -0800)
commitc71644d00f9fdd87e5d54fdd388ba899ae3852fa
treeb7940fb6c9d432b945c6d5ec77bc8facc0900978
parent7f91ed8c4f4b6368b0603543bccb6b5fd10804e1
seg6: fix skb transport_header after decap_and_validate()

in the receive path (more precisely in ip6_rcv_core()) the
skb->transport_header is set to skb->network_header + sizeof(*hdr). As a
consequence, after routing operations, destination input expects to find
skb->transport_header correctly set to the next protocol (or extension
header) that follows the network protocol. However, decap behaviors (DX*,
DT*) remove the outer IPv6 and SRH extension and do not set again the
skb->transport_header pointer correctly. For this reason, the patch sets
the skb->transport_header to the skb->network_header + sizeof(hdr) in each
DX* and DT* behavior.

Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/seg6_local.c