If a bridge(4) is down packets don't flow through it, so be coherent and
do not copy them for span ports.

ok?

Index: net/if_bridge.c
===================================================================
RCS file: /cvs/src/sys/net/if_bridge.c,v
retrieving revision 1.316
diff -u -p -r1.316 if_bridge.c
--- net/if_bridge.c     17 Jan 2019 16:07:42 -0000      1.316
+++ net/if_bridge.c     22 Jan 2019 14:43:37 -0000
@@ -777,6 +777,8 @@ bridge_output(struct ifnet *ifp, struct 
        ifp->if_opackets++;
        ifp->if_obytes += m->m_pkthdr.len;
 
+       bridge_span(sc, m);
+
        /*
         * If the packet is a broadcast or we don't know a better way to
         * get there, send to all interfaces.
@@ -788,8 +790,6 @@ bridge_output(struct ifnet *ifp, struct 
                struct mbuf *mc;
                int used = 0;
 
-               bridge_span(sc, m);
-
                SLIST_FOREACH(bif, &sc->sc_iflist, bif_next) {
                        dst_if = bif->ifp;
                        if ((dst_if->if_flags & IFF_RUNNING) == 0)
@@ -850,7 +850,6 @@ sendunicast:
            ((brtag = bridge_tunneltag(m)) != NULL))
                bridge_copytag(&dst_p->brt_tunnel, brtag);
 
-       bridge_span(sc, m);
        if ((dst_if->if_flags & IFF_RUNNING) == 0) {
                m_freem(m);
                return (ENETDOWN);

Reply via email to