From 2e2de7f23f09ed445e6d2503174e890cc64b9a7c Mon Sep 17 00:00:00 2001 From: Archie Cobbs Date: Sun, 14 May 2000 02:18:43 +0000 Subject: Move code to handle BPF and bridging for incoming Ethernet packets out of the individual drivers and into the common routine ether_input(). Also, remove the (incomplete) hack for matching ethernet headers in the ip_fw code. The good news: net result of 1016 lines removed, and this should make bridging now work with *all* Ethernet drivers. The bad news: it's nearly impossible to test every driver, especially for bridging, and I was unable to get much testing help on the mailing lists. Reviewed by: freebsd-net --- sys/dev/vx/if_vx.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) (limited to 'sys/dev/vx') diff --git a/sys/dev/vx/if_vx.c b/sys/dev/vx/if_vx.c index 0aac0726258c..33f376f0a103 100644 --- a/sys/dev/vx/if_vx.c +++ b/sys/dev/vx/if_vx.c @@ -738,27 +738,18 @@ again: /* We assume the header fit entirely in one mbuf. */ eh = mtod(m, struct ether_header *); - /* - * Check if there's a BPF listener on this interface. - * If so, hand off the raw packet to BPF. - */ - if (sc->arpcom.ac_if.if_bpf) { - bpf_mtap(&sc->arpcom.ac_if, m); - } - /* * XXX: Some cards seem to be in promiscous mode all the time. * we need to make sure we only get our own stuff always. * bleah! */ - if ((eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */ - bcmp(eh->ether_dhost, sc->arpcom.ac_enaddr, - sizeof(eh->ether_dhost)) != 0) { + if ((eh->ether_dhost[0] & 1) == 0 /* !mcast and !bcast */ + && bcmp(eh->ether_dhost, sc->arpcom.ac_enaddr, ETHER_ADDR_LEN) != 0) { m_freem(m); - return; + return; } - /* We assume the header fit entirely in one mbuf. */ + m_adj(m, sizeof(struct ether_header)); ether_input(ifp, eh, m); -- cgit v1.3