diff options
author | suz <suz@FreeBSD.org> | 2006-03-04 09:17:11 +0000 |
---|---|---|
committer | suz <suz@FreeBSD.org> | 2006-03-04 09:17:11 +0000 |
commit | 97cfef1237dcc2e829b75d2dac0244768e471067 (patch) | |
tree | 1c353da301d1daddf120f499df597b2dfa330486 /sys | |
parent | 5609fb149944cd356e785821c6082c0a08a6f36c (diff) | |
download | FreeBSD-src-97cfef1237dcc2e829b75d2dac0244768e471067.zip FreeBSD-src-97cfef1237dcc2e829b75d2dac0244768e471067.tar.gz |
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
Diffstat (limited to 'sys')
-rw-r--r-- | sys/netinet6/mld6.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/netinet6/mld6.c b/sys/netinet6/mld6.c index 13fe867..8c0888f 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); |