From 2c112cdc6db374303f43581f6b272e321bc1be55 Mon Sep 17 00:00:00 2001 From: SUZUKI Shinsuke Date: Sat, 4 Mar 2006 09:17:11 +0000 Subject: [PATCH] fixed a bug that an MLD report is not advertised when group-specific MLD query is received. PR: kern/93526 Obtained from: KAME MFC after: 1 day --- sys/netinet6/mld6.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/netinet6/mld6.c b/sys/netinet6/mld6.c index 13fe86700c5..8c0888fc3a5 100644 --- a/sys/netinet6/mld6.c +++ b/sys/netinet6/mld6.c @@ -327,7 +327,8 @@ mld6_input(m, off) * * In Non-Listener state, we simply don't have a membership record. * In Delaying Listener state, our timer is running (in6m->in6m_timer) - * In Idle Listener state, our timer is not running (in6m->in6m_timer==0) + * In Idle Listener state, our timer is not running + * (in6m->in6m_timer==IN6M_TIMER_UNDEF) * * The flag is in6m->in6m_state, it is set to MLD_OTHERLISTENER if * we have heard a report from another member, or MLD_IREPORTEDLAST @@ -395,7 +396,7 @@ mld6_input(m, off) in6m->in6m_timer = 0; /* reset timer */ in6m->in6m_state = MLD_IREPORTEDLAST; } - else if (in6m->in6m_timer == 0 || /*idle state*/ + else if (in6m->in6m_timer == IN6M_TIMER_UNDEF || mld_timerresid(in6m) > (u_long)timer) { in6m->in6m_timer = arc4random() % (int)((long)(timer * hz) / 1000);