bridge callbacks in if_ed.c?
Gleb Smirnoff
glebius at freebsd.org
Sun Sep 5 13:52:53 PDT 2004
Luigi,
I see that bridge callbacks are still living in if_ed.c
from FreeBSD 2.x times. See if_ed.c:2816. I think this is
not correct.
Bridge code is called from ether_input(), which is
indirectly called from if_ed.c:2836.
Any objections about attached patch?
[ccing hackers@ and net@ to get more eyes reviewing]
--
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE
-------------- next part --------------
Index: if_ed.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/ed/if_ed.c,v
retrieving revision 1.233
diff -u -r1.233 if_ed.c
--- if_ed.c 13 Aug 2004 23:04:23 -0000 1.233
+++ if_ed.c 5 Sep 2004 20:48:19 -0000
@@ -2810,26 +2810,9 @@
eh = mtod(m, struct ether_header *);
/*
- * Don't read in the entire packet if we know we're going to drop it
- * and no bpf is active.
+ * Get packet, including link layer address, from interface.
*/
- if (!ifp->if_bpf && BDG_ACTIVE( (ifp) ) ) {
- struct ifnet *bif;
-
- ed_ring_copy(sc, buf, (char *)eh, ETHER_HDR_LEN);
- bif = bridge_in_ptr(ifp, eh) ;
- if (bif == BDG_DROP) {
- m_freem(m);
- return;
- }
- if (len > ETHER_HDR_LEN)
- ed_ring_copy(sc, buf + ETHER_HDR_LEN,
- (char *)(eh + 1), len - ETHER_HDR_LEN);
- } else
- /*
- * Get packet, including link layer address, from interface.
- */
- ed_ring_copy(sc, buf, (char *)eh, len);
+ ed_ring_copy(sc, buf, (char *)eh, len);
m->m_pkthdr.len = m->m_len = len;
More information about the freebsd-net
mailing list