[GRE]: Use proper net in routing calls.
authorPavel Emelyanov <xemul@openvz.org>
Wed, 16 Apr 2008 08:10:44 +0000 (01:10 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Apr 2008 08:10:44 +0000 (01:10 -0700)
As for the IPIP tunnel, there are some ip_route_output_key()
calls in there that require a proper net so give one to them.

And a proper net for the __get_dev_by_index hanging around.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ip_gre.c

index 74d4c515772edbd68ab2aaacb64923a72229a9cc..aa973812edc161d30ba8d9d40b5372aab8c465e5 100644 (file)
@@ -493,7 +493,7 @@ out:
        fl.fl4_dst = eiph->saddr;
        fl.fl4_tos = RT_TOS(eiph->tos);
        fl.proto = IPPROTO_GRE;
-       if (ip_route_output_key(&init_net, &rt, &fl)) {
+       if (ip_route_output_key(dev_net(skb->dev), &rt, &fl)) {
                kfree_skb(skb2);
                return;
        }
@@ -506,7 +506,7 @@ out:
                fl.fl4_dst = eiph->daddr;
                fl.fl4_src = eiph->saddr;
                fl.fl4_tos = eiph->tos;
-               if (ip_route_output_key(&init_net, &rt, &fl) ||
+               if (ip_route_output_key(dev_net(skb->dev), &rt, &fl) ||
                    rt->u.dst.dev->type != ARPHRD_IPGRE) {
                        ip_rt_put(rt);
                        kfree_skb(skb2);
@@ -762,7 +762,7 @@ static int ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
                                                .saddr = tiph->saddr,
                                                .tos = RT_TOS(tos) } },
                                    .proto = IPPROTO_GRE };
-               if (ip_route_output_key(&init_net, &rt, &fl)) {
+               if (ip_route_output_key(dev_net(dev), &rt, &fl)) {
                        tunnel->stat.tx_carrier_errors++;
                        goto tx_error;
                }
@@ -935,7 +935,7 @@ static void ipgre_tunnel_bind_dev(struct net_device *dev)
                                                .tos = RT_TOS(iph->tos) } },
                                    .proto = IPPROTO_GRE };
                struct rtable *rt;
-               if (!ip_route_output_key(&init_net, &rt, &fl)) {
+               if (!ip_route_output_key(dev_net(dev), &rt, &fl)) {
                        tdev = rt->u.dst.dev;
                        ip_rt_put(rt);
                }
@@ -943,7 +943,7 @@ static void ipgre_tunnel_bind_dev(struct net_device *dev)
        }
 
        if (!tdev && tunnel->parms.link)
-               tdev = __dev_get_by_index(&init_net, tunnel->parms.link);
+               tdev = __dev_get_by_index(dev_net(dev), tunnel->parms.link);
 
        if (tdev) {
                hlen = tdev->hard_header_len;
@@ -1193,7 +1193,7 @@ static int ipgre_open(struct net_device *dev)
                                                .tos = RT_TOS(t->parms.iph.tos) } },
                                    .proto = IPPROTO_GRE };
                struct rtable *rt;
-               if (ip_route_output_key(&init_net, &rt, &fl))
+               if (ip_route_output_key(dev_net(dev), &rt, &fl))
                        return -EADDRNOTAVAIL;
                dev = rt->u.dst.dev;
                ip_rt_put(rt);