Patchwork [net-next] ipv6: don't disable interface if last ipv6 address is removed

login
register
mail settings
Submitter Hannes Frederic Sowa
Date June 23, 2013, 10:22 p.m.
Message ID <20130623222220.GD13836@order.stressinduktion.org>
Download mbox | patch
Permalink /patch/253610/
State Accepted
Delegated to: David Miller
Headers show

Comments

Hannes Frederic Sowa - June 23, 2013, 10:22 p.m.
The reason behind this change is that as soon as we delete
the last ipv6 address of an interface we also lose the
/proc/sys/net/ipv6/conf/<interface> directory. This seems to be a
usability problem for me.

I don't see any reason why we should shutdown ipv6 on that interface in
such cases.

Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
---
 net/ipv6/addrconf.c | 6 ------
 1 file changed, 6 deletions(-)
David Miller - June 25, 2013, 11:24 p.m.
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date: Mon, 24 Jun 2013 00:22:20 +0200

> The reason behind this change is that as soon as we delete
> the last ipv6 address of an interface we also lose the
> /proc/sys/net/ipv6/conf/<interface> directory. This seems to be a
> usability problem for me.
> 
> I don't see any reason why we should shutdown ipv6 on that interface in
> such cases.
> 
> Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
> Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 8044912..3c1c789 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -2502,12 +2502,6 @@  static int inet6_addr_del(struct net *net, int ifindex, const struct in6_addr *p
 			read_unlock_bh(&idev->lock);
 
 			ipv6_del_addr(ifp);
-
-			/* If the last address is deleted administratively,
-			   disable IPv6 on this interface.
-			 */
-			if (list_empty(&idev->addr_list))
-				addrconf_ifdown(idev->dev, 1);
 			return 0;
 		}
 	}