Index: sys/net/if_bridge.c =================================================================== --- sys/net/if_bridge.c +++ sys/net/if_bridge.c @@ -2448,6 +2448,22 @@ } \ 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); \ } \ \