From f6dcc30e24808c270de927fa02b5d92d319fc4be Mon Sep 17 00:00:00 2001 From: phk Date: Tue, 28 Jan 1997 11:21:21 +0000 Subject: 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. --- sys/dev/vx/if_vx.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'sys/dev') 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, -- cgit v1.1