diff options
author | luigi <luigi@FreeBSD.org> | 1999-03-17 16:44:53 +0000 |
---|---|---|
committer | luigi <luigi@FreeBSD.org> | 1999-03-17 16:44:53 +0000 |
commit | f29f19c7578e275f2a6e9880e7a0fa29ad17b8e9 (patch) | |
tree | e736287dc4e791daddd66dffb6ba5e02ab1a02f9 /sys/pci/if_de.c | |
parent | 4be2884249eb602a6c2fc4afe26187935f039eed (diff) | |
download | FreeBSD-src-f29f19c7578e275f2a6e9880e7a0fa29ad17b8e9.zip FreeBSD-src-f29f19c7578e275f2a6e9880e7a0fa29ad17b8e9.tar.gz |
MF22... add bridging support to the device drivers. Without this
bridging cannot work on -current/releng3!
Diffstat (limited to 'sys/pci/if_de.c')
-rw-r--r-- | sys/pci/if_de.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/sys/pci/if_de.c b/sys/pci/if_de.c index facad11..d9c52f7 100644 --- a/sys/pci/if_de.c +++ b/sys/pci/if_de.c @@ -1,5 +1,5 @@ /* $NetBSD: if_de.c,v 1.82 1999/02/28 17:08:51 explorer Exp $ */ -/* $Id: if_de.c,v 1.100 1999/03/13 09:21:27 peter Exp $ */ +/* $Id: if_de.c,v 1.101 1999/03/14 08:32:52 peter Exp $ */ /*- * Copyright (c) 1994-1997 Matt Thomas (matt@3am-software.com) @@ -124,6 +124,10 @@ #include <pci/dc21040reg.h> #define DEVAR_INCLUDE "pci/if_devar.h" #endif +#include "opt_bdg.h" +#ifdef BRIDGE +#include <net/bridge.h> +#endif #endif /* __FreeBSD__ */ #if defined(__bsdi__) @@ -3544,6 +3548,23 @@ tulip_rx_intr( } #endif sc->tulip_flags |= TULIP_RXACT; + +#ifdef BRIDGE /* see code in if_ed.c */ + ms->m_pkthdr.rcvif = ifp; /* XXX */ + ms->m_pkthdr.len = total_len; /* XXX */ + if (do_bridge) { + struct ifnet *bdg_ifp ; + bdg_ifp = bridge_in(ms); + if (bdg_ifp == BDG_DROP) + goto next ; /* and drop */ + if (bdg_ifp != BDG_LOCAL) + bdg_forward(&ms, bdg_ifp); + if (bdg_ifp != BDG_LOCAL && bdg_ifp != BDG_BCAST && + bdg_ifp != BDG_MCAST) + goto next ; /* and drop */ + /* all others accepted locally */ + } else +#endif if ((sc->tulip_flags & (TULIP_PROMISC|TULIP_HASHONLY)) && (eh.ether_dhost[0] & 1) == 0 && !TULIP_ADDREQUAL(eh.ether_dhost, sc->tulip_enaddr)) |