addrconf.c (de3cb747ffac5f2a4a6bb156e7e2fd5229e688e5) | addrconf.c (2774c7aba6c97a2535be3309a2209770953780b3) |
---|---|
1/* 2 * IPv6 Address [auto]configuration 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> 8 * --- 2396 unchanged lines hidden (view full) --- 2405static int addrconf_ifdown(struct net_device *dev, int how) 2406{ 2407 struct inet6_dev *idev; 2408 struct inet6_ifaddr *ifa, **bifa; 2409 int i; 2410 2411 ASSERT_RTNL(); 2412 | 1/* 2 * IPv6 Address [auto]configuration 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> 8 * --- 2396 unchanged lines hidden (view full) --- 2405static int addrconf_ifdown(struct net_device *dev, int how) 2406{ 2407 struct inet6_dev *idev; 2408 struct inet6_ifaddr *ifa, **bifa; 2409 int i; 2410 2411 ASSERT_RTNL(); 2412 |
2413 if (dev == loopback_dev && how == 1) | 2413 if (dev == init_net.loopback_dev && how == 1) |
2414 how = 0; 2415 2416 rt6_ifdown(dev); 2417 neigh_ifdown(&nd_tbl, dev); 2418 2419 idev = __in6_dev_get(dev); 2420 if (idev == NULL) 2421 return -ENODEV; --- 1785 unchanged lines hidden (view full) --- 4207 * devices to fail to get a link-local address. 4208 * 4209 * So, as a temporary fix, allocate the ipv6 structure for 4210 * loopback_dev first by hand. 4211 * Longer term, all of the dependencies ipv6 has upon the loopback 4212 * device and it being up should be removed. 4213 */ 4214 rtnl_lock(); | 2414 how = 0; 2415 2416 rt6_ifdown(dev); 2417 neigh_ifdown(&nd_tbl, dev); 2418 2419 idev = __in6_dev_get(dev); 2420 if (idev == NULL) 2421 return -ENODEV; --- 1785 unchanged lines hidden (view full) --- 4207 * devices to fail to get a link-local address. 4208 * 4209 * So, as a temporary fix, allocate the ipv6 structure for 4210 * loopback_dev first by hand. 4211 * Longer term, all of the dependencies ipv6 has upon the loopback 4212 * device and it being up should be removed. 4213 */ 4214 rtnl_lock(); |
4215 if (!ipv6_add_dev(loopback_dev)) | 4215 if (!ipv6_add_dev(init_net.loopback_dev)) |
4216 err = -ENOMEM; 4217 rtnl_unlock(); 4218 if (err) 4219 return err; 4220 | 4216 err = -ENOMEM; 4217 rtnl_unlock(); 4218 if (err) 4219 return err; 4220 |
4221 ip6_null_entry.u.dst.dev = loopback_dev; 4222 ip6_null_entry.rt6i_idev = in6_dev_get(loopback_dev); | 4221 ip6_null_entry.u.dst.dev = init_net.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; 4225 ip6_prohibit_entry.rt6i_idev = in6_dev_get(loopback_dev); 4226 ip6_blk_hole_entry.u.dst.dev = loopback_dev; 4227 ip6_blk_hole_entry.rt6i_idev = in6_dev_get(loopback_dev); | 4224 ip6_prohibit_entry.u.dst.dev = init_net.loopback_dev; 4225 ip6_prohibit_entry.rt6i_idev = in6_dev_get(init_net.loopback_dev); 4226 ip6_blk_hole_entry.u.dst.dev = init_net.loopback_dev; 4227 ip6_blk_hole_entry.rt6i_idev = in6_dev_get(init_net.loopback_dev); |
4228#endif 4229 4230 register_netdevice_notifier(&ipv6_dev_notf); 4231 4232 addrconf_verify(0); 4233 4234 err = __rtnl_register(PF_INET6, RTM_GETLINK, NULL, inet6_dump_ifinfo); 4235 if (err < 0) --- 38 unchanged lines hidden (view full) --- 4274 * clean dev list. 4275 */ 4276 4277 for_each_netdev(&init_net, dev) { 4278 if (__in6_dev_get(dev) == NULL) 4279 continue; 4280 addrconf_ifdown(dev, 1); 4281 } | 4228#endif 4229 4230 register_netdevice_notifier(&ipv6_dev_notf); 4231 4232 addrconf_verify(0); 4233 4234 err = __rtnl_register(PF_INET6, RTM_GETLINK, NULL, inet6_dump_ifinfo); 4235 if (err < 0) --- 38 unchanged lines hidden (view full) --- 4274 * clean dev list. 4275 */ 4276 4277 for_each_netdev(&init_net, dev) { 4278 if (__in6_dev_get(dev) == NULL) 4279 continue; 4280 addrconf_ifdown(dev, 1); 4281 } |
4282 addrconf_ifdown(loopback_dev, 2); | 4282 addrconf_ifdown(init_net.loopback_dev, 2); |
4283 4284 /* 4285 * Check hash table. 4286 */ 4287 4288 write_lock_bh(&addrconf_hash_lock); 4289 for (i=0; i < IN6_ADDR_HSIZE; i++) { 4290 for (ifa=inet6_addr_lst[i]; ifa; ) { --- 20 unchanged lines hidden --- | 4283 4284 /* 4285 * Check hash table. 4286 */ 4287 4288 write_lock_bh(&addrconf_hash_lock); 4289 for (i=0; i < IN6_ADDR_HSIZE; i++) { 4290 for (ifa=inet6_addr_lst[i]; ifa; ) { --- 20 unchanged lines hidden --- |