ipv6: rearm router solicitaion timer when setting new tokenized address
authorHannes Frederic Sowa <hannes@stressinduktion.org>
Wed, 26 Jun 2013 01:41:49 +0000 (03:41 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 26 Jun 2013 22:23:01 +0000 (15:23 -0700)
When a new tokenized address gets installed we send out just one
router solicition. We should send out `rtr_solicits' in case one router
advertisment got lost.

So, rearm the timer as we do in addrconf_dad_complete.

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>
net/ipv6/addrconf.c

index afaf3cdadf58dab8903ed12e71a2686280e73c6c..4e4cc1fc26d148e51f5a3fa8e8f950a16eaa7de6 100644 (file)
@@ -4361,8 +4361,11 @@ static int inet6_set_iftoken(struct inet6_dev *idev, struct in6_addr *token)
 
        write_lock_bh(&idev->lock);
 
-       if (update_rs)
+       if (update_rs) {
                idev->if_flags |= IF_RS_SENT;
+               idev->rs_probes = 1;
+               addrconf_mod_rs_timer(idev, idev->cnf.rtr_solicit_interval);
+       }
 
        /* Well, that's kinda nasty ... */
        list_for_each_entry(ifp, &idev->addr_list, if_list) {