diff options
Diffstat (limited to 'sys/net/bridge.c')
-rw-r--r-- | sys/net/bridge.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/sys/net/bridge.c b/sys/net/bridge.c index 745eaa2fca0d..7c2e0f23508f 100644 --- a/sys/net/bridge.c +++ b/sys/net/bridge.c @@ -77,7 +77,6 @@ #include <sys/param.h> #include <sys/mbuf.h> -#include <sys/malloc.h> #include <sys/systm.h> #include <sys/socket.h> /* for net/if.h */ #include <sys/kernel.h> @@ -90,11 +89,9 @@ #include <netinet/if_ether.h> /* for struct arpcom */ #include "opt_ipfw.h" -#include "opt_ipdn.h" #if defined(IPFIREWALL) && defined(DUMMYNET) #include <net/route.h> -#include <netinet/ip_fw.h> #include <netinet/ip_dummynet.h> #endif @@ -239,10 +236,11 @@ bdg_timeout(void *dummy) if (--slowtimer <= 0 ) { slowtimer = 5 ; - for (ifp = ifnet.tqh_first; ifp; ifp = ifp->if_link.tqe_next) { + for (ifp = ifnet; ifp; ifp = ifp->if_next) { if (ifp->if_type != IFT_ETHER) continue ; if ( 0 == ( ifp->if_flags & IFF_UP) ) { + int ret ; s = splimp(); if_up(ifp); splx(s); @@ -281,7 +279,7 @@ static void bdginit(dummy) void *dummy; { - int i ; + int s, i ; struct ifnet *ifp; struct arpcom *ac ; u_char *eth_addr ; @@ -301,9 +299,8 @@ bdginit(dummy) bdg_ports = 0 ; eth_addr = bdg_addresses ; - printf("BRIDGE 981214, have %d interfaces\n", if_index); - for (i = 0 , ifp = ifnet.tqh_first ; i < if_index ; - i++, ifp = ifp->if_link.tqe_next) + printf("BRIDGE 980911, have %d interfaces\n", if_index); + for (i = 0 , ifp = ifnet ; i < if_index ; i++, ifp = ifp->if_next) if (ifp->if_type == IFT_ETHER) { /* ethernet ? */ ac = (struct arpcom *)ifp; sprintf(bdg_stats.s[ifp->if_index].name, @@ -325,7 +322,7 @@ bdginit(dummy) bdg_ports ++ ; } bdg_timeout(0); - do_bridge=0; + do_bridge=1; } /* @@ -467,7 +464,7 @@ bdg_forward (struct mbuf **m0, struct ifnet *dst) return 0; } if (dst == BDG_BCAST || dst == BDG_MCAST || dst == BDG_UNKNOWN) { - ifp = ifnet.tqh_first ; + ifp = ifnet ; once = 0 ; if (dst != BDG_UNKNOWN) canfree = 0 ; @@ -518,7 +515,7 @@ bdg_forward (struct mbuf **m0, struct ifnet *dst) } dummy = 0 ; - off= (*ip_fw_chk_ptr)(NULL, 0, src, &dummy, &m, &rule, NULL /*next hop */ ) ; + off=(*ip_fw_chk_ptr)(NULL, 0, src, &dummy, &m, &rule) ; if (m == NULL) { /* pkt discarded by firewall */ printf("-- bdg: firewall discarded pkt\n"); if (canfree) @@ -559,12 +556,12 @@ forward: else m = NULL ; - for ( ; ifp ; ifp = ifp->if_link.tqe_next ) { + for ( ; ifp ; ifp = ifp->if_next ) { if (ifp != src && ifp->if_type == IFT_ETHER && (ifp->if_flags & (IFF_UP|IFF_RUNNING)) == (IFF_UP|IFF_RUNNING) && SAMEGROUP(ifp, src) && !MUTED(ifp) ) { if (m == NULL) { /* do i need to make a copy ? */ - if (canfree && ifp->if_link.tqe_next == NULL) /* last one! */ + if (canfree && ifp->if_next == NULL) /* last one! */ m = *m0 ; else /* on a P5-90, m_packetcopy takes 540 ticks */ m = m_copypacket(*m0, M_DONTWAIT); |