diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2007-09-27 01:10:56 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:52:49 -0400 |
commit | 2774c7aba6c97a2535be3309a2209770953780b3 (patch) | |
tree | 9327c795707f6d723c6395c31e1c060e70b5e0db /net/ipv6/addrconf.c | |
parent | 0cc217e16cb8ca8ef2544363571fce94259900e0 (diff) |
[NET]: Make the loopback device per network namespace.
This patch makes loopback_dev per network namespace. Adding
code to create a different loopback device for each network
namespace and adding the code to free a loopback device
when a network namespace exits.
This patch modifies all users the loopback_dev so they
access it as init_net.loopback_dev, keeping all of the
code compiling and working. A later pass will be needed to
update the users to use something other than the initial network
namespace.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/addrconf.c')
-rw-r--r-- | net/ipv6/addrconf.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index b43574f73375..6d5c3c299148 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -2410,7 +2410,7 @@ static int addrconf_ifdown(struct net_device *dev, int how) | |||
2410 | 2410 | ||
2411 | ASSERT_RTNL(); | 2411 | ASSERT_RTNL(); |
2412 | 2412 | ||
2413 | if (dev == loopback_dev && how == 1) | 2413 | if (dev == init_net.loopback_dev && how == 1) |
2414 | how = 0; | 2414 | how = 0; |
2415 | 2415 | ||
2416 | rt6_ifdown(dev); | 2416 | rt6_ifdown(dev); |
@@ -4212,19 +4212,19 @@ int __init addrconf_init(void) | |||
4212 | * device and it being up should be removed. | 4212 | * device and it being up should be removed. |
4213 | */ | 4213 | */ |
4214 | rtnl_lock(); | 4214 | rtnl_lock(); |
4215 | if (!ipv6_add_dev(loopback_dev)) | 4215 | if (!ipv6_add_dev(init_net.loopback_dev)) |
4216 | err = -ENOMEM; | 4216 | err = -ENOMEM; |
4217 | rtnl_unlock(); | 4217 | rtnl_unlock(); |
4218 | if (err) | 4218 | if (err) |
4219 | return err; | 4219 | return err; |
4220 | 4220 | ||
4221 | ip6_null_entry.u.dst.dev = loopback_dev; | 4221 | ip6_null_entry.u.dst.dev = init_net.loopback_dev; |
4222 | ip6_null_entry.rt6i_idev = in6_dev_get(loopback_dev); | 4222 | ip6_null_entry.rt6i_idev = in6_dev_get(init_net.loopback_dev); |
4223 | #ifdef CONFIG_IPV6_MULTIPLE_TABLES | 4223 | #ifdef CONFIG_IPV6_MULTIPLE_TABLES |
4224 | ip6_prohibit_entry.u.dst.dev = loopback_dev; | 4224 | ip6_prohibit_entry.u.dst.dev = init_net.loopback_dev; |
4225 | ip6_prohibit_entry.rt6i_idev = in6_dev_get(loopback_dev); | 4225 | ip6_prohibit_entry.rt6i_idev = in6_dev_get(init_net.loopback_dev); |
4226 | ip6_blk_hole_entry.u.dst.dev = loopback_dev; | 4226 | ip6_blk_hole_entry.u.dst.dev = init_net.loopback_dev; |
4227 | ip6_blk_hole_entry.rt6i_idev = in6_dev_get(loopback_dev); | 4227 | ip6_blk_hole_entry.rt6i_idev = in6_dev_get(init_net.loopback_dev); |
4228 | #endif | 4228 | #endif |
4229 | 4229 | ||
4230 | register_netdevice_notifier(&ipv6_dev_notf); | 4230 | register_netdevice_notifier(&ipv6_dev_notf); |
@@ -4279,7 +4279,7 @@ void __exit addrconf_cleanup(void) | |||
4279 | continue; | 4279 | continue; |
4280 | addrconf_ifdown(dev, 1); | 4280 | addrconf_ifdown(dev, 1); |
4281 | } | 4281 | } |
4282 | addrconf_ifdown(loopback_dev, 2); | 4282 | addrconf_ifdown(init_net.loopback_dev, 2); |
4283 | 4283 | ||
4284 | /* | 4284 | /* |
4285 | * Check hash table. | 4285 | * Check hash table. |