diff options
author | Hannes Frederic Sowa <hannes@stressinduktion.org> | 2013-06-27 00:06:56 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-06-28 21:19:17 -0700 |
commit | 1ec047eb4751e331bc61cff0e98f0db67db8b8dc (patch) | |
tree | 51f7272d5c26eb44e90624e682daa54c96064886 /include/net | |
parent | ae0d67505ca30c635f7763564622c9710913f293 (diff) | |
download | blackbird-op-linux-1ec047eb4751e331bc61cff0e98f0db67db8b8dc.tar.gz blackbird-op-linux-1ec047eb4751e331bc61cff0e98f0db67db8b8dc.zip |
ipv6: introduce per-interface counter for dad-completed ipv6 addresses
To reduce the number of unnecessary router solicitations, MLDv2 and IGMPv3
messages we need to track the number of valid (as in non-optimistic,
no-dad-failed and non-tentative) link-local addresses. Therefore, this
patch implements a valid_ll_addr_cnt in struct inet6_dev.
We now only emit router solicitations if the first link-local address
finishes duplicate address detection.
The changes for MLDv2 and IGMPv3 are in a follow-up patch.
While there, also simplify one if statement(one minor nit I made in one
of my previous patches):
if (!...)
do();
else
return;
<<into>>
if (...)
return;
do();
Cc: Flavio Leitner <fbl@redhat.com>
Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Cc: David Stevens <dlstevens@us.ibm.com>
Suggested-by: David Stevens <dlstevens@us.ibm.com>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Acked-by: Flavio Leitner <fbl@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/if_inet6.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/if_inet6.h b/include/net/if_inet6.h index e4c5a2d2ba34..1628b8f5fb26 100644 --- a/include/net/if_inet6.h +++ b/include/net/if_inet6.h @@ -166,6 +166,7 @@ struct inet6_dev { struct net_device *dev; struct list_head addr_list; + int valid_ll_addr_cnt; struct ifmcaddr6 *mc_list; struct ifmcaddr6 *mc_tomb; |