diff mbox

net: ipv6: Do not keep IPv6 addresses when IPv6 is disabled

Message ID 1470999758-11535-1-git-send-email-mmanning@brocade.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Mike Manning Aug. 12, 2016, 11:02 a.m. UTC
If IPv6 is disabled when the option is set to keep IPv6
addresses on link down, userspace is unaware of this as
there is no such indication via netlink. The solution is to
remove the IPv6 addresses in this case, which results in
netlink messages indicating removal of addresses in the
usual manner. This fix also makes the behavior consistent
with the case of having IPv6 disabled first, which stops
IPv6 addresses from being added.

Fixes: f1705ec197e7 ("net: ipv6: Make address flushing on ifdown optional")
Signed-off-by: Mike Manning <mmanning@brocade.com>
---
 net/ipv6/addrconf.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

David Ahern Aug. 12, 2016, 5:01 p.m. UTC | #1
On 8/12/16 5:02 AM, Mike Manning wrote:
> If IPv6 is disabled when the option is set to keep IPv6
> addresses on link down, userspace is unaware of this as
> there is no such indication via netlink. The solution is to
> remove the IPv6 addresses in this case, which results in
> netlink messages indicating removal of addresses in the
> usual manner. This fix also makes the behavior consistent
> with the case of having IPv6 disabled first, which stops
> IPv6 addresses from being added.
> 
> Fixes: f1705ec197e7 ("net: ipv6: Make address flushing on ifdown optional")
> Signed-off-by: Mike Manning <mmanning@brocade.com>
> ---


Acked-by: David Ahern <dsa@cumulusnetworks.com>
David Miller Aug. 13, 2016, 10:14 p.m. UTC | #2
From: Mike Manning <mmanning@brocade.com>
Date: Fri, 12 Aug 2016 12:02:38 +0100

> If IPv6 is disabled when the option is set to keep IPv6
> addresses on link down, userspace is unaware of this as
> there is no such indication via netlink. The solution is to
> remove the IPv6 addresses in this case, which results in
> netlink messages indicating removal of addresses in the
> usual manner. This fix also makes the behavior consistent
> with the case of having IPv6 disabled first, which stops
> IPv6 addresses from being added.
> 
> Fixes: f1705ec197e7 ("net: ipv6: Make address flushing on ifdown optional")
> Signed-off-by: Mike Manning <mmanning@brocade.com>

Applied and queued up for -stable, thanks.
diff mbox

Patch

diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index ab3e796..df8425f 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -3543,7 +3543,7 @@  static int addrconf_ifdown(struct net_device *dev, int how)
 	/* combine the user config with event to determine if permanent
 	 * addresses are to be removed from address hash table
 	 */
-	keep_addr = !(how || _keep_addr <= 0);
+	keep_addr = !(how || _keep_addr <= 0 || idev->cnf.disable_ipv6);
 
 	/* Step 2: clear hash table */
 	for (i = 0; i < IN6_ADDR_HSIZE; i++) {
@@ -3599,7 +3599,7 @@  restart:
 	/* re-combine the user config with event to determine if permanent
 	 * addresses are to be removed from the interface list
 	 */
-	keep_addr = (!how && _keep_addr > 0);
+	keep_addr = (!how && _keep_addr > 0 && !idev->cnf.disable_ipv6);
 
 	INIT_LIST_HEAD(&del_list);
 	list_for_each_entry_safe(ifa, tmp, &idev->addr_list, if_list) {