Index: if_bridge.c =================================================================== RCS file: /home/ncvs/src/sys/net/if_bridge.c,v retrieving revision 1.102 diff -u -p -r1.102 if_bridge.c --- if_bridge.c 1 Aug 2007 00:33:52 -0000 1.102 +++ if_bridge.c 14 Aug 2007 02:11:16 -0000 @@ -1852,9 +1852,16 @@ bridge_start(struct ifnet *ifp) dst_if = NULL; BRIDGE_LOCK(sc); - if ((m->m_flags & (M_BCAST|M_MCAST)) == 0) { + if (ETHER_IS_MULTICAST(eh->ether_dhost)) + /* + * XXX bpf injected packets do not have M_MCAST or + * M_BCAST set, bridge_broadcast() makes assumptions + * based on this. + */ + if ((m->m_flags & (M_BCAST|M_MCAST)) == 0) + m->m_flags |= M_MCAST; + else dst_if = bridge_rtlookup(sc, eh->ether_dhost, 1); - } if (dst_if == NULL) bridge_broadcast(sc, ifp, m, 0);