svn commit: r345192 - head/sys/net
Kyle Evans
kevans at FreeBSD.org
Fri Mar 15 17:13:06 UTC 2019
Author: kevans
Date: Fri Mar 15 17:13:05 2019
New Revision: 345192
URL: https://svnweb.freebsd.org/changeset/base/345192
Log:
if_bridge(4): Drop pointless rtflush
At this point, all routes should've already been dropped by removing all
members from the bridge. This condition is in-fact KASSERT'd in the line
immediately above where this nop flush was added.
Modified:
head/sys/net/if_bridge.c
Modified: head/sys/net/if_bridge.c
==============================================================================
--- head/sys/net/if_bridge.c Fri Mar 15 17:04:33 2019 (r345191)
+++ head/sys/net/if_bridge.c Fri Mar 15 17:13:05 2019 (r345192)
@@ -2449,6 +2449,22 @@ bridge_input(struct ifnet *ifp, struct mbuf *m)
} \
m->m_pkthdr.rcvif = iface; \
BRIDGE_UNLOCK(sc); \
+ /* \
+ * These mbufs will not have another chance to get sent \
+ * to bpf elsewhere in the stack as being received \
+ * by this interface, because they are coming in over \
+ * the bridge. They likely have been accounted for \
+ * when received by the interface that they came from, \
+ * but this is not enough for other consumers, \
+ * e.g. dhclient, to be satisfied. \
+ * \
+ * rcvif needs to be set on the mbuf here, lest we risk \
+ * losing the mbuf as a "duplicate" because it's \
+ * considered outgoing by bpf. \
+ */ \
+ if ((iface)->if_type != IFT_BRIDGE && \
+ (iface)->if_bpf != NULL && (iface) != (ifp)) \
+ ETHER_BPF_MTAP(iface, m); \
return (m); \
} \
\
@@ -2890,7 +2906,6 @@ bridge_rtable_fini(struct bridge_softc *sc)
KASSERT(sc->sc_brtcnt == 0,
("%s: %d bridge routes referenced", __func__, sc->sc_brtcnt));
- bridge_rtflush(sc, 1);
free(sc->sc_rthash, M_DEVBUF);
}
More information about the svn-src-all
mailing list