net: allow traceroute with a specified interface in a vrf
authorMike Manning <mmanning@vyatta.att-mail.com>
Fri, 26 Oct 2018 11:24:35 +0000 (12:24 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 26 Oct 2018 23:03:08 +0000 (16:03 -0700)
commitf64bf6b8ae802e93231155b0d92a619d896cd0bd
treecefc8aa7c022d3e08ff6ee02c3d27c9e61e444a3
parent5a2de63fd1a59c30c02526d427bc014b98adf508
net: allow traceroute with a specified interface in a vrf

Traceroute executed in a vrf succeeds if no device is given or if the
vrf is given as the device, but fails if the interface is given as the
device. This is for default UDP probes, it succeeds for TCP SYN or ICMP
ECHO probes. As the skb bound dev is the interface and the sk dev is
the vrf, sk lookup fails for ICMP_DEST_UNREACH and ICMP_TIME_EXCEEDED
messages. The solution is for the secondary dev to be passed so that
the interface is available for the device match to succeed, in the same
way as is already done for non-error cases.

Signed-off-by: Mike Manning <mmanning@vyatta.att-mail.com>
Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/udp.c
net/ipv6/udp.c