After commit cd51b74bdd0b ("ipv6: Fix redirect exception creation for UDP/RAW sockets") the two redirect calls are now equivalent and there is no need to specifically call ip6_redirect() for tunnel sockets. Simplify and call ip6_sk_redirect() for both tunnel sockets and regular sockets. Note that for ICMPv6 Redirect Message packets the VRF driver does not reset skb->dev to the VRF device, so skb->dev->ifindex is equivalent to inet6_iif(skb), even when the packet was received from a VRF port. Suggested-by: Eric Dumazet Signed-off-by: Ido Schimmel --- net/ipv6/udp.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 93478d1ad576..59f9872c3552 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -751,13 +751,7 @@ static int udpv6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, harderr = 1; } if (type == NDISC_REDIRECT) { - if (tunnel) { - ip6_redirect(skb, sock_net(sk), inet6_iif(skb), - READ_ONCE(sk->sk_mark), - sk_uid(sk)); - } else { - ip6_sk_redirect(skb, sk); - } + ip6_sk_redirect(skb, sk); goto out; } -- 2.55.0