diff options
author | Bruce M Simpson <bms@FreeBSD.org> | 2009-03-09 17:53:05 +0000 |
---|---|---|
committer | Bruce M Simpson <bms@FreeBSD.org> | 2009-03-09 17:53:05 +0000 |
commit | d10910e6cee0dca8be3d5a7fdbe404a15d9e7b52 (patch) | |
tree | 3d95180b6661648cd67dba62e6daefc7c8661793 /sys/netinet/ip_input.c | |
parent | 095b4d26893ea3091170f876be21294d6f5f172f (diff) | |
download | src-d10910e6cee0dca8be3d5a7fdbe404a15d9e7b52.tar.gz src-d10910e6cee0dca8be3d5a7fdbe404a15d9e7b52.zip |
Merge IGMPv3 and Source-Specific Multicast (SSM) to the FreeBSD
IPv4 stack.
Diffs are minimized against p4.
PCS has been used for some protocol verification, more widespread
testing of recorded sources in Group-and-Source queries is needed.
sizeof(struct igmpstat) has changed.
__FreeBSD_version is bumped to 800070.
Notes
Notes:
svn path=/head/; revision=189592
Diffstat (limited to 'sys/netinet/ip_input.c')
-rw-r--r-- | sys/netinet/ip_input.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index dcf282528ea3..a75ee72a3df8 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -592,7 +592,6 @@ passin: return; } if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) { - struct in_multi *inm; if (V_ip_mrouter) { /* * If we are acting as a multicast router, all @@ -619,17 +618,10 @@ passin: V_ipstat.ips_forward++; } /* - * See if we belong to the destination multicast group on the - * arrival interface. + * Assume the packet is for us, to avoid prematurely taking + * a lock on the in_multi hash. Protocols must perform + * their own filtering and update statistics accordingly. */ - IN_MULTI_LOCK(); - IN_LOOKUP_MULTI(ip->ip_dst, m->m_pkthdr.rcvif, inm); - IN_MULTI_UNLOCK(); - if (inm == NULL) { - V_ipstat.ips_notmember++; - m_freem(m); - return; - } goto ours; } if (ip->ip_dst.s_addr == (u_long)INADDR_BROADCAST) |