ipv6: split duplicate address detection and router solicitation timer
authorHannes Frederic Sowa <hannes@stressinduktion.org>
Fri, 16 Dec 2016 10:15:37 +0000 (10:15 +0000)
committerWilly Tarreau <w@1wt.eu>
Fri, 10 Feb 2017 10:03:42 +0000 (11:03 +0100)
commit973d5956f754cfc306f5e274d71503498f4b0324
treec88d845d7a4b610a096549b159659551b4fb49b7
parentaf80b973dfd72d733212a1fe874c8252c7749632
ipv6: split duplicate address detection and router solicitation timer

commit b7b1bfce0bb68bd8f6e62a28295922785cc63781 upstream.

This patch splits the timers for duplicate address detection and router
solicitations apart. The router solicitations timer goes into inet6_dev
and the dad timer stays in inet6_ifaddr.

The reason behind this patch is to reduce the number of unneeded router
solicitations send out by the host if additional link-local addresses
are created. Currently we send out RS for every link-local address on
an interface.

If the RS timer fires we pick a source address with ipv6_get_lladdr. This
change could hurt people adding additional link-local addresses and
specifying these addresses in the radvd clients section because we
no longer guarantee that we use every ll address as source address in
router solicitations.

Cc: Flavio Leitner <fleitner@redhat.com>
Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
Cc: David Stevens <dlstevens@us.ibm.com>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Reviewed-by: Flavio Leitner <fbl@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Cc: <stable@vger.kernel.org> # 3.10.y
[Mike Manning <mmanning@brocade.com>: resolved conflicts with 36bddb]
Signed-off-by: Mike Manning <mmanning@brocade.com>
Signed-off-by: Willy Tarreau <w@1wt.eu>
include/net/if_inet6.h
net/ipv6/addrconf.c