[IPV6]: Address autoconfiguration does not work after device down/up cycle
authorKristian Slavov <kristian.slavov@nomadiclab.com>
Thu, 9 Feb 2006 00:10:53 +0000 (16:10 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Thu, 9 Feb 2006 00:13:28 +0000 (16:13 -0800)
If you set network interface down and up again, the IPv6 address
autoconfiguration does not work. 'ip addr' shows that the link-local
address is in tentative state. We don't even react to periodical router
advertisements.

During NETDEV_DOWN we clear IF_READY, and we don't set it back in
NETDEV_UP. While starting to perform DAD on the link-local address, we
notice that the device is not in IF_READY, and we abort autoconfiguration
process (which would eventually send router solicitations).

Acked-by: Juha-Matti Tapio <jmtapio@verkkotelakka.net>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/addrconf.c

index 1db50487916bf002a3ed92316d57b9cbe377f6e5..b7d8822c1be49cbcd73ca303d7d253e93cdec406 100644 (file)
@@ -2165,6 +2165,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
                                        dev->name);
                                break;
                        }
+
+                       if (idev)
+                               idev->if_flags |= IF_READY;
                } else {
                        if (!netif_carrier_ok(dev)) {
                                /* device is still not ready. */