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);