summaryrefslogtreecommitdiffstats
path: root/sys/dev/de
diff options
context:
space:
mode:
authorluigi <luigi@FreeBSD.org>1999-03-17 16:44:53 +0000
committerluigi <luigi@FreeBSD.org>1999-03-17 16:44:53 +0000
commitf29f19c7578e275f2a6e9880e7a0fa29ad17b8e9 (patch)
treee736287dc4e791daddd66dffb6ba5e02ab1a02f9 /sys/dev/de
parent4be2884249eb602a6c2fc4afe26187935f039eed (diff)
downloadFreeBSD-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/dev/de')
-rw-r--r--sys/dev/de/if_de.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/sys/dev/de/if_de.c b/sys/dev/de/if_de.c
index facad11..d9c52f7 100644
--- a/sys/dev/de/if_de.c
+++ b/sys/dev/de/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))
OpenPOWER on IntegriCloud