aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/vx
diff options
context:
space:
mode:
authorArchie Cobbs <archie@FreeBSD.org>2000-05-14 02:18:43 +0000
committerArchie Cobbs <archie@FreeBSD.org>2000-05-14 02:18:43 +0000
commit2e2de7f23f09ed445e6d2503174e890cc64b9a7c (patch)
tree3bb6d87c220b15e365d011925cab4b92d4ba1bb9 /sys/dev/vx
parente3227bc7a68281f480934b30853e25233d70f57d (diff)
downloadsrc-2e2de7f23f09ed445e6d2503174e890cc64b9a7c.tar.gz
src-2e2de7f23f09ed445e6d2503174e890cc64b9a7c.zip
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
Notes
Notes: svn path=/head/; revision=60536
Diffstat (limited to 'sys/dev/vx')
-rw-r--r--sys/dev/vx/if_vx.c17
1 files changed, 4 insertions, 13 deletions
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
@@ -739,26 +739,17 @@ again:
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);