summaryrefslogtreecommitdiffstats
path: root/net/ipv6/addrconf.c
diff options
context:
space:
mode:
authorHannes Frederic Sowa <hannes@stressinduktion.org>2013-06-24 22:03:28 +0200
committerDavid S. Miller <davem@davemloft.net>2013-06-26 01:28:24 +0200
commit2b9651d72d3fc1a9053ae1a323f8407e1f63b436 (patch)
tree79bcd3ca876fac70e072cb370036349399159f15 /net/ipv6/addrconf.c
parentipv6: don't disable interface if last ipv6 address is removed (diff)
downloadlinux-2b9651d72d3fc1a9053ae1a323f8407e1f63b436.tar.xz
linux-2b9651d72d3fc1a9053ae1a323f8407e1f63b436.zip
ipv6: remove old token ipv6 address as soon as possible
If the tokenized ip address is re-set on an interface we depend on the arrival of a new router advertisment to call addrconf_verify to clean up the old address (which valid_lft is now set to 0). Old addresses can linger around for a longer time if e.g. the source of router advertisments vanishes. So, call addrconf_verify immediately after setting the new tokenized address to get rid of the old tokenized addresses. Cc: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Acked-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
-rw-r--r--net/ipv6/addrconf.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index e799a8838ed0..afaf3cdadf58 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -4375,6 +4375,7 @@ static int inet6_set_iftoken(struct inet6_dev *idev, struct in6_addr *token)
}
write_unlock_bh(&idev->lock);
+ addrconf_verify(0);
return 0;
}