summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSheena Mira-ato <sheena.mira-ato@alliedtelesis.co.nz>2019-04-01 13:04:42 +1300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-04-17 08:36:46 +0200
commita3320acb47874c0977dd49d8adc19d5047f52f1a (patch)
treeade2a5143902f47b60708d37f6a9f64f353e6cbb
parent77b924d94dd7a7719933ba9d97a7ba4d19d09d00 (diff)
downloadlinux-stable-a3320acb47874c0977dd49d8adc19d5047f52f1a.tar.gz
linux-stable-a3320acb47874c0977dd49d8adc19d5047f52f1a.tar.bz2
linux-stable-a3320acb47874c0977dd49d8adc19d5047f52f1a.zip
ip6_tunnel: Match to ARPHRD_TUNNEL6 for dev type
[ Upstream commit b2e54b09a3d29c4db883b920274ca8dca4d9f04d ] The device type for ip6 tunnels is set to ARPHRD_TUNNEL6. However, the ip4ip6_err function is expecting the device type of the tunnel to be ARPHRD_TUNNEL. Since the device types do not match, the function exits and the ICMP error packet is not sent to the originating host. Note that the device type for IPv4 tunnels is set to ARPHRD_TUNNEL. Fix is to expect a tunnel device type of ARPHRD_TUNNEL6 instead. Now the tunnel device type matches and the ICMP error packet is sent to the originating host. Signed-off-by: Sheena Mira-ato <sheena.mira-ato@alliedtelesis.co.nz> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--net/ipv6/ip6_tunnel.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
index f89516d04150..42f363661d25 100644
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -634,7 +634,7 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
IPPROTO_IPIP,
RT_TOS(eiph->tos), 0);
if (IS_ERR(rt) ||
- rt->dst.dev->type != ARPHRD_TUNNEL) {
+ rt->dst.dev->type != ARPHRD_TUNNEL6) {
if (!IS_ERR(rt))
ip_rt_put(rt);
goto out;
@@ -644,7 +644,7 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
ip_rt_put(rt);
if (ip_route_input(skb2, eiph->daddr, eiph->saddr, eiph->tos,
skb2->dev) ||
- skb_dst(skb2)->dev->type != ARPHRD_TUNNEL)
+ skb_dst(skb2)->dev->type != ARPHRD_TUNNEL6)
goto out;
}