diff options
Diffstat (limited to 'net/ipv6/sit.c')
-rw-r--r-- | net/ipv6/sit.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index f82494bc4c58..7badac6c7416 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c | |||
@@ -527,11 +527,12 @@ out: | |||
527 | skb_reset_network_header(skb2); | 527 | skb_reset_network_header(skb2); |
528 | 528 | ||
529 | /* Try to guess incoming interface */ | 529 | /* Try to guess incoming interface */ |
530 | rt6i = rt6_lookup(&init_net, &iph6->saddr, NULL, NULL, 0); | 530 | rt6i = rt6_lookup(dev_net(skb->dev), &iph6->saddr, NULL, NULL, 0); |
531 | if (rt6i && rt6i->rt6i_dev) { | 531 | if (rt6i && rt6i->rt6i_dev) { |
532 | skb2->dev = rt6i->rt6i_dev; | 532 | skb2->dev = rt6i->rt6i_dev; |
533 | 533 | ||
534 | rt6i = rt6_lookup(&init_net, &iph6->daddr, &iph6->saddr, NULL, 0); | 534 | rt6i = rt6_lookup(dev_net(skb->dev), |
535 | &iph6->daddr, &iph6->saddr, NULL, 0); | ||
535 | 536 | ||
536 | if (rt6i && rt6i->rt6i_dev && rt6i->rt6i_dev->type == ARPHRD_SIT) { | 537 | if (rt6i && rt6i->rt6i_dev && rt6i->rt6i_dev->type == ARPHRD_SIT) { |
537 | struct ip_tunnel *t = netdev_priv(rt6i->rt6i_dev); | 538 | struct ip_tunnel *t = netdev_priv(rt6i->rt6i_dev); |
@@ -701,7 +702,7 @@ static int ipip6_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) | |||
701 | .tos = RT_TOS(tos) } }, | 702 | .tos = RT_TOS(tos) } }, |
702 | .oif = tunnel->parms.link, | 703 | .oif = tunnel->parms.link, |
703 | .proto = IPPROTO_IPV6 }; | 704 | .proto = IPPROTO_IPV6 }; |
704 | if (ip_route_output_key(&init_net, &rt, &fl)) { | 705 | if (ip_route_output_key(dev_net(dev), &rt, &fl)) { |
705 | tunnel->stat.tx_carrier_errors++; | 706 | tunnel->stat.tx_carrier_errors++; |
706 | goto tx_error_icmp; | 707 | goto tx_error_icmp; |
707 | } | 708 | } |
@@ -830,7 +831,7 @@ static void ipip6_tunnel_bind_dev(struct net_device *dev) | |||
830 | .oif = tunnel->parms.link, | 831 | .oif = tunnel->parms.link, |
831 | .proto = IPPROTO_IPV6 }; | 832 | .proto = IPPROTO_IPV6 }; |
832 | struct rtable *rt; | 833 | struct rtable *rt; |
833 | if (!ip_route_output_key(&init_net, &rt, &fl)) { | 834 | if (!ip_route_output_key(dev_net(dev), &rt, &fl)) { |
834 | tdev = rt->u.dst.dev; | 835 | tdev = rt->u.dst.dev; |
835 | ip_rt_put(rt); | 836 | ip_rt_put(rt); |
836 | } | 837 | } |
@@ -838,7 +839,7 @@ static void ipip6_tunnel_bind_dev(struct net_device *dev) | |||
838 | } | 839 | } |
839 | 840 | ||
840 | if (!tdev && tunnel->parms.link) | 841 | if (!tdev && tunnel->parms.link) |
841 | tdev = __dev_get_by_index(&init_net, tunnel->parms.link); | 842 | tdev = __dev_get_by_index(dev_net(dev), tunnel->parms.link); |
842 | 843 | ||
843 | if (tdev) { | 844 | if (tdev) { |
844 | dev->hard_header_len = tdev->hard_header_len + sizeof(struct iphdr); | 845 | dev->hard_header_len = tdev->hard_header_len + sizeof(struct iphdr); |