aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
authorDenis V. Lunev <den@openvz.org>2007-11-20 01:26:51 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:54:25 -0500
commit97c53cacf00d1f5aa04adabfebcc806ca8b22b10 (patch)
tree6b7223df312aa27a5017c4d7c4d1e500a33ed8d8 /net/ipv4
parentb854272b3c732316676e9128f7b9e6f1e1ff88b0 (diff)
[NET]: Make rtnetlink infrastructure network namespace aware (v3)
After this patch none of the netlink callback support anything except the initial network namespace but the rtnetlink infrastructure now handles multiple network namespaces. Changes from v2: - IPv6 addrlabel processing Changes from v1: - no need for special rtnl_unlock handling - fixed IPv6 ndisc Signed-off-by: Denis V. Lunev <den@openvz.org> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/devinet.c4
-rw-r--r--net/ipv4/fib_semantics.c4
-rw-r--r--net/ipv4/ipmr.c4
-rw-r--r--net/ipv4/route.c2
4 files changed, 7 insertions, 7 deletions
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index c0eb26a0d0bc..6e75c884e1af 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -1240,10 +1240,10 @@ static void rtmsg_ifa(int event, struct in_ifaddr* ifa, struct nlmsghdr *nlh,
1240 kfree_skb(skb); 1240 kfree_skb(skb);
1241 goto errout; 1241 goto errout;
1242 } 1242 }
1243 err = rtnl_notify(skb, pid, RTNLGRP_IPV4_IFADDR, nlh, GFP_KERNEL); 1243 err = rtnl_notify(skb, &init_net, pid, RTNLGRP_IPV4_IFADDR, nlh, GFP_KERNEL);
1244errout: 1244errout:
1245 if (err < 0) 1245 if (err < 0)
1246 rtnl_set_sk_err(RTNLGRP_IPV4_IFADDR, err); 1246 rtnl_set_sk_err(&init_net, RTNLGRP_IPV4_IFADDR, err);
1247} 1247}
1248 1248
1249#ifdef CONFIG_SYSCTL 1249#ifdef CONFIG_SYSCTL
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index 1351a2617dce..33ec96001d90 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -320,11 +320,11 @@ void rtmsg_fib(int event, __be32 key, struct fib_alias *fa,
320 kfree_skb(skb); 320 kfree_skb(skb);
321 goto errout; 321 goto errout;
322 } 322 }
323 err = rtnl_notify(skb, info->pid, RTNLGRP_IPV4_ROUTE, 323 err = rtnl_notify(skb, &init_net, info->pid, RTNLGRP_IPV4_ROUTE,
324 info->nlh, GFP_KERNEL); 324 info->nlh, GFP_KERNEL);
325errout: 325errout:
326 if (err < 0) 326 if (err < 0)
327 rtnl_set_sk_err(RTNLGRP_IPV4_ROUTE, err); 327 rtnl_set_sk_err(&init_net, RTNLGRP_IPV4_ROUTE, err);
328} 328}
329 329
330/* Return the first fib alias matching TOS with 330/* Return the first fib alias matching TOS with
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
index 8e5d47a60602..11879283ad52 100644
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -321,7 +321,7 @@ static void ipmr_destroy_unres(struct mfc_cache *c)
321 e->error = -ETIMEDOUT; 321 e->error = -ETIMEDOUT;
322 memset(&e->msg, 0, sizeof(e->msg)); 322 memset(&e->msg, 0, sizeof(e->msg));
323 323
324 rtnl_unicast(skb, NETLINK_CB(skb).pid); 324 rtnl_unicast(skb, &init_net, NETLINK_CB(skb).pid);
325 } else 325 } else
326 kfree_skb(skb); 326 kfree_skb(skb);
327 } 327 }
@@ -533,7 +533,7 @@ static void ipmr_cache_resolve(struct mfc_cache *uc, struct mfc_cache *c)
533 memset(&e->msg, 0, sizeof(e->msg)); 533 memset(&e->msg, 0, sizeof(e->msg));
534 } 534 }
535 535
536 rtnl_unicast(skb, NETLINK_CB(skb).pid); 536 rtnl_unicast(skb, &init_net, NETLINK_CB(skb).pid);
537 } else 537 } else
538 ip_mr_forward(skb, c, 0); 538 ip_mr_forward(skb, c, 0);
539 } 539 }
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 1d2839571d2f..e4b6fb4b1f4f 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2610,7 +2610,7 @@ static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr* nlh, void
2610 if (err <= 0) 2610 if (err <= 0)
2611 goto errout_free; 2611 goto errout_free;
2612 2612
2613 err = rtnl_unicast(skb, NETLINK_CB(in_skb).pid); 2613 err = rtnl_unicast(skb, &init_net, NETLINK_CB(in_skb).pid);
2614errout: 2614errout:
2615 return err; 2615 return err;
2616 2616