diff options
Diffstat (limited to 'net/ipv6/addrconf.c')
-rw-r--r-- | net/ipv6/addrconf.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index ab3e796596b1..df8425fcbc2c 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) | |||
3543 | /* combine the user config with event to determine if permanent | 3543 | /* combine the user config with event to determine if permanent |
3544 | * addresses are to be removed from address hash table | 3544 | * addresses are to be removed from address hash table |
3545 | */ | 3545 | */ |
3546 | keep_addr = !(how || _keep_addr <= 0); | 3546 | keep_addr = !(how || _keep_addr <= 0 || idev->cnf.disable_ipv6); |
3547 | 3547 | ||
3548 | /* Step 2: clear hash table */ | 3548 | /* Step 2: clear hash table */ |
3549 | for (i = 0; i < IN6_ADDR_HSIZE; i++) { | 3549 | for (i = 0; i < IN6_ADDR_HSIZE; i++) { |
@@ -3599,7 +3599,7 @@ restart: | |||
3599 | /* re-combine the user config with event to determine if permanent | 3599 | /* re-combine the user config with event to determine if permanent |
3600 | * addresses are to be removed from the interface list | 3600 | * addresses are to be removed from the interface list |
3601 | */ | 3601 | */ |
3602 | keep_addr = (!how && _keep_addr > 0); | 3602 | keep_addr = (!how && _keep_addr > 0 && !idev->cnf.disable_ipv6); |
3603 | 3603 | ||
3604 | INIT_LIST_HEAD(&del_list); | 3604 | INIT_LIST_HEAD(&del_list); |
3605 | list_for_each_entry_safe(ifa, tmp, &idev->addr_list, if_list) { | 3605 | list_for_each_entry_safe(ifa, tmp, &idev->addr_list, if_list) { |