diff options
author | Denis V. Lunev <den@openvz.org> | 2007-11-20 01:26:51 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 17:54:25 -0500 |
commit | 97c53cacf00d1f5aa04adabfebcc806ca8b22b10 (patch) | |
tree | 6b7223df312aa27a5017c4d7c4d1e500a33ed8d8 /net/ipv4 | |
parent | b854272b3c732316676e9128f7b9e6f1e1ff88b0 (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.c | 4 | ||||
-rw-r--r-- | net/ipv4/fib_semantics.c | 4 | ||||
-rw-r--r-- | net/ipv4/ipmr.c | 4 | ||||
-rw-r--r-- | net/ipv4/route.c | 2 |
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); |
1244 | errout: | 1244 | errout: |
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); |
325 | errout: | 325 | errout: |
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); |
2614 | errout: | 2614 | errout: |
2615 | return err; | 2615 | return err; |
2616 | 2616 | ||