aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/ip_input.c
diff options
context:
space:
mode:
authorBruce M Simpson <bms@FreeBSD.org>2009-03-09 17:53:05 +0000
committerBruce M Simpson <bms@FreeBSD.org>2009-03-09 17:53:05 +0000
commitd10910e6cee0dca8be3d5a7fdbe404a15d9e7b52 (patch)
tree3d95180b6661648cd67dba62e6daefc7c8661793 /sys/netinet/ip_input.c
parent095b4d26893ea3091170f876be21294d6f5f172f (diff)
downloadsrc-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.c14
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)