mirror of
https://github.com/apache/nuttx.git
synced 2026-10-06 05:47:54 +00:00
net/mld: There is an issue with the general query timer design. There should be a single instance, not a per-group instance of the timer (ditto for the v1 compatibility timer). Fall back for now and use the per-group MAX query.
This commit is contained in:
parent
f8d39e2c84
commit
8cfb376f81
3 changed files with 20 additions and 3 deletions
|
|
@ -189,7 +189,7 @@ enum mld_msgtype_e
|
|||
{
|
||||
MLD_SEND_NONE = 0, /* Nothing to send */
|
||||
MLD_SEND_GENQUERY, /* Send General Query */
|
||||
MLD_SEND_MASQUERY, /* Send Multicast Address Specific (MAS) Query */
|
||||
MLD_SEND_MASQUERY, /* Send General Query */
|
||||
MLD_SEND_V1REPORT, /* Send MLDv1 Report message */
|
||||
MLD_SEND_V2REPORT, /* Send MLDv2 Report message */
|
||||
MLD_SEND_DONE /* Send Done message */
|
||||
|
|
|
|||
|
|
@ -188,10 +188,22 @@ static void mld_polldog_work(FAR void *arg)
|
|||
|
||||
if (IS_MLD_QUERIER(group->flags))
|
||||
{
|
||||
/* Schedule (and forget) the general query. */
|
||||
/* Schedule (and forget) the general query or MAS query. */
|
||||
|
||||
MLD_STATINCR(g_netstats.mld.query_sched);
|
||||
|
||||
#ifdef CONFIG_NET_MLD_ROUTER
|
||||
/* REVISIT: In order to support the RFC correctly, we would need
|
||||
* separate, single general query timer that is not part of the
|
||||
* group structure. The Querier should query across all groups,
|
||||
* with a single query, not very via multiple MAS queries as is
|
||||
* done here.
|
||||
*/
|
||||
|
||||
ret = mld_schedmsg(group, MLD_SEND_GENQUERY);
|
||||
#else
|
||||
ret = mld_schedmsg(group, MLD_SEND_MASQUERY);
|
||||
#endif
|
||||
if (ret < 0)
|
||||
{
|
||||
mlderr("ERROR: Failed to schedule message: %d\n", ret);
|
||||
|
|
@ -363,6 +375,8 @@ void mld_start_polltimer(FAR struct mld_group_s *group, clock_t ticks)
|
|||
* Description:
|
||||
* Start the MLDv1 compatibility timer.
|
||||
*
|
||||
* REVISIT: This should be a single global timer, not a per-group timer.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void mld_start_v1timer(FAR struct mld_group_s *group, clock_t ticks)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue