diff options
author | Kristian Slavov <kristian.slavov@nomadiclab.com> | 2006-02-08 19:10:53 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-02-08 19:13:28 -0500 |
commit | 9908104935325bd6beba67d637b6f5396d47075c (patch) | |
tree | ec3bf2213993e21598403e4aeb68ba1e92d536b5 | |
parent | 4b88f09364e94b05b66fb1441131e8460495a2f8 (diff) |
[IPV6]: Address autoconfiguration does not work after device down/up cycle
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>
-rw-r--r-- | net/ipv6/addrconf.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 1db50487916b..b7d8822c1be4 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -2165,6 +2165,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event, | |||
2165 | dev->name); | 2165 | dev->name); |
2166 | break; | 2166 | break; |
2167 | } | 2167 | } |
2168 | |||
2169 | if (idev) | ||
2170 | idev->if_flags |= IF_READY; | ||
2168 | } else { | 2171 | } else { |
2169 | if (!netif_carrier_ok(dev)) { | 2172 | if (!netif_carrier_ok(dev)) { |
2170 | /* device is still not ready. */ | 2173 | /* device is still not ready. */ |