summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1997-01-28 11:21:21 +0000
committerphk <phk@FreeBSD.org>1997-01-28 11:21:21 +0000
commitf6dcc30e24808c270de927fa02b5d92d319fc4be (patch)
tree9666c5df78c4b67fc5aa6c790a81e309dec1eccf /sys/dev
parent0be2437c94737389c507740ea6694fc646219a96 (diff)
downloadFreeBSD-src-f6dcc30e24808c270de927fa02b5d92d319fc4be.zip
FreeBSD-src-f6dcc30e24808c270de927fa02b5d92d319fc4be.tar.gz
Some of these cards are always in promiscous mode :-(
If you enable ip forwarding your net melts down. This is a workaround, probably not the correct fix.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/vx/if_vx.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/sys/dev/vx/if_vx.c b/sys/dev/vx/if_vx.c
index a4a29cd..41dfb86 100644
--- a/sys/dev/vx/if_vx.c
+++ b/sys/dev/vx/if_vx.c
@@ -771,28 +771,25 @@ again:
*/
if (sc->arpcom.ac_if.if_bpf) {
bpf_mtap(&sc->arpcom.ac_if, m);
-
- /*
- * Note that the interface cannot be in promiscuous mode if
- * there are no BPF listeners. And if we are in promiscuous
- * mode, we have to check if this packet is really ours.
- */
- if ((ifp->if_flags & IFF_PROMISC) &&
- (eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->arpcom.ac_enaddr,
- sizeof(eh->ether_dhost)) != 0) {
- m_freem(m);
- return;
- }
}
#endif
+ /*
+ * 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) {
+ m_freem(m);
+ return;
+ }
/* We assume the header fit entirely in one mbuf. */
m_adj(m, sizeof(struct ether_header));
ether_input(ifp, eh, m);
-
-
/*
* In periods of high traffic we can actually receive enough
* packets so that the fifo overrun bit will be set at this point,
OpenPOWER on IntegriCloud