mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-03 09:41:54 +09:00
ipv6: resend MLD report if a link-local address completes DAD
RFC3590/RFC3810 specifies we should resend MLD reports as soon as a valid link-local address is available. We now use the valid_ll_addr_cnt to check if it is necessary to resend a new report. Changes since Flavio Leitner's version: a) adapt for valid_ll_addr_cnt b) resend first reports directly in the path and just arm the timer for mc_qrv-1 resends. Reported-by: 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> Signed-off-by: Flavio Leitner <fbl@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
1ec047eb47
commit
b173ee488d
@@ -155,6 +155,7 @@ extern bool ipv6_chk_mcast_addr(struct net_device *dev,
|
||||
const struct in6_addr *group,
|
||||
const struct in6_addr *src_addr);
|
||||
|
||||
extern void ipv6_mc_dad_complete(struct inet6_dev *idev);
|
||||
/*
|
||||
* identify MLD packets for MLD filter exceptions
|
||||
*/
|
||||
|
||||
@@ -174,10 +174,12 @@ struct inet6_dev {
|
||||
unsigned char mc_qrv;
|
||||
unsigned char mc_gq_running;
|
||||
unsigned char mc_ifc_count;
|
||||
unsigned char mc_dad_count;
|
||||
unsigned long mc_v1_seen;
|
||||
unsigned long mc_maxdelay;
|
||||
struct timer_list mc_gq_timer; /* general query timer */
|
||||
struct timer_list mc_ifc_timer; /* interface change timer */
|
||||
struct timer_list mc_dad_timer; /* dad complete mc timer */
|
||||
|
||||
struct ifacaddr6 *ac_list;
|
||||
rwlock_t lock;
|
||||
|
||||
Reference in New Issue
Block a user