Hi,
>
> It's this line:
>
> if (igmp->igmp_group.s_addr != 0 &&
> !IN_MULTICAST(ntohl(igmp->igmp_group.s_addr))) {
> ++igmpstat.igps_rcv_badqueries;
> m_freem(m);
> return;
> }
>
> This test gets executed when it's a v2 query (mtu !=
> 0). The test stops
> further processing if the group address is NOT
> "0.0.0.0" or NOT a valid
> multicast address.
>
I understand that above code gets excuted only if
query is Version 2 type. But above test is only for
Group-Specific query where igmp_group.s_addr != 0(it
^^^^^^^^^^^^^^
contains the group address being reported to). In this
case we need to check whether given address is a valid
multicast addredd is or not.
But where is the validity check being done when query
is Version 2 General query in which case
igmp_group.s_addr SHOULD BE Zero and ip_dst.s_addr
SHOULD be igmp_all_hosts_group.
i.e., we need a validity check something like
if (igmp->igmp_group.s_addr == 0 &&
ip->ip_dst.s_addr != igmp_all_hosts_group) {
++igmpstat.igps_rcv_badqueries;
m_freem(m);
return;
}
Don't we need this for V2 GENERAL query?
Regards,
Deepika
__________________________________________________
Terrorist Attacks on U.S. - How can you help?
Donate cash, emergency relief information
http://dailynews.yahoo.com/fc/US/Emergency_Information/
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message