summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSheena Mira-ato <sheena.mira-ato@alliedtelesis.co.nz>2019-03-31 20:04:42 -0400
committerDavid S. Miller <davem@davemloft.net>2019-04-02 16:19:34 -0400
commitb2e54b09a3d29c4db883b920274ca8dca4d9f04d (patch)
tree50fd48490dad00e9045971f284ace876a87d1387
parent1d3ff0950e2b40dc861b1739029649d03f591820 (diff)
ip6_tunnel: Match to ARPHRD_TUNNEL6 for dev type
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>
-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 0c6403cf8b52..ade1390c6348 100644
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -627,7 +627,7 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
627 rt = ip_route_output_ports(dev_net(skb->dev), &fl4, NULL, 627 rt = ip_route_output_ports(dev_net(skb->dev), &fl4, NULL,
628 eiph->daddr, eiph->saddr, 0, 0, 628 eiph->daddr, eiph->saddr, 0, 0,
629 IPPROTO_IPIP, RT_TOS(eiph->tos), 0); 629 IPPROTO_IPIP, RT_TOS(eiph->tos), 0);
630 if (IS_ERR(rt) || rt->dst.dev->type != ARPHRD_TUNNEL) { 630 if (IS_ERR(rt) || rt->dst.dev->type != ARPHRD_TUNNEL6) {
631 if (!IS_ERR(rt)) 631 if (!IS_ERR(rt))
632 ip_rt_put(rt); 632 ip_rt_put(rt);
633 goto out; 633 goto out;
@@ -636,7 +636,7 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
636 } else { 636 } else {
637 if (ip_route_input(skb2, eiph->daddr, eiph->saddr, eiph->tos, 637 if (ip_route_input(skb2, eiph->daddr, eiph->saddr, eiph->tos,
638 skb2->dev) || 638 skb2->dev) ||
639 skb_dst(skb2)->dev->type != ARPHRD_TUNNEL) 639 skb_dst(skb2)->dev->type != ARPHRD_TUNNEL6)
640 goto out; 640 goto out;
641 } 641 }
642 642