mirror of
https://github.com/apache/nuttx.git
synced 2026-06-07 09:18:00 +08:00
Squashed commit of the following:
The MLD implementation did not follow the RFC correctly when it is the Querier. The Querier should use a general query and get query messages from all members of all groups. This would be driven by a single timer per sub-nset since all groups are queried at once. Instead, the design used a Multicast Address Specific Query with one timer per group and ignores groups that we are not members of.
Similary, the MLDv1 compatibility timer should be a single, separate timer, not a per-group timer.
net/mld: Group may be NULL when sending a general query
This commit is contained in:
@@ -51,7 +51,9 @@
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <stdint.h>
|
||||
#include <queue.h>
|
||||
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/net/ip.h>
|
||||
#include <nuttx/net/icmpv6.h>
|
||||
|
||||
@@ -370,6 +372,22 @@ struct mld_mcast_listen_done_s
|
||||
net_ipv6addr_t mcastaddr; /* Multicast address */
|
||||
};
|
||||
|
||||
/* This structure represents the overall MLD state for a single network.
|
||||
* This structure in included withing the net_driver_s structure.
|
||||
*
|
||||
* There will be a group for the all systems group address but this
|
||||
* will not run the state machine as it is used to kick off reports
|
||||
* from all the other groups
|
||||
*/
|
||||
|
||||
struct mld_netdev_s
|
||||
{
|
||||
sq_queue_t grplist; /* MLD group list */
|
||||
WDOG_ID gendog; /* General query timer */
|
||||
WDOG_ID v1dog; /* MLDv1 compatibility timer */
|
||||
uint8_t flags; /* See MLD_ flags definitions */
|
||||
};
|
||||
|
||||
#ifdef CONFIG_NET_STATISTICS
|
||||
/* MLD statistic counters */
|
||||
|
||||
|
||||
@@ -346,7 +346,7 @@ struct net_driver_s
|
||||
sq_queue_t d_igmp_grplist; /* IGMP group list */
|
||||
#endif
|
||||
#ifdef CONFIG_NET_MLD
|
||||
sq_queue_t d_mld_grplist; /* MLD group list */
|
||||
struct mld_netdev_s d_mld; /* MLD state information */
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NETDEV_STATISTICS
|
||||
|
||||
Reference in New Issue
Block a user