[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <c805a77e-f21d-754c-79fe-12be45262888@brocade.com>
Date: Thu, 21 Jul 2016 14:44:16 +0100
From: Mike Manning <mmanning@...cade.com>
To: netdev <netdev@...r.kernel.org>
Subject: [PATCH] net: ipv6: Always leave subnet anycast group on link down
Default kernel behavior is to delete IPv6 addresses on link
down, which entails deletion of the address-derived
subnet-router anycast address. The latter does not happen
with sysctl setting to keep global IPv6 addrs on link down,
so every link down/up causes an increment of the anycast
refcount, cf aca_users in __ipv6_dev_ac_inc(). This bogus
refcount stops the anycast being removed on subsequent
calls to delete the address. The solution is to leave the
group for this subnet anycast on link down also for the
callflow when global IPv6 addresses are kept.
Fixes: f1705ec197e7 ("net: ipv6: Make address flushing on ifdown optional")
Signed-off-by: Mike Manning <mmanning@...cade.com>
---
net/ipv6/addrconf.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 47f837a..3c69e56 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -3562,6 +3562,8 @@ restart:
if (state != INET6_IFADDR_STATE_DEAD) {
__ipv6_ifa_notify(RTM_DELADDR, ifa);
inet6addr_notifier_call_chain(NETDEV_DOWN, ifa);
+ } else if (idev->cnf.forwarding) {
+ addrconf_leave_anycast(ifa);
}
write_lock_bh(&idev->lock);
--
1.7.10.4
Powered by blists - more mailing lists