If we change the "rcvif" pointer of a packet we need to run if_input() again otherwise we might skip the handlers on the new interface.
Ultimately it would be nice to only assign "rcvif" in if_input(), but that's for another diff. This fix one case I left out in my previous conversion, ok? Index: net/if_bridge.c =================================================================== RCS file: /cvs/src/sys/net/if_bridge.c,v retrieving revision 1.238 diff -u -p -r1.238 if_bridge.c --- net/if_bridge.c 15 May 2015 10:15:13 -0000 1.238 +++ net/if_bridge.c 15 May 2015 10:50:32 -0000 @@ -1478,12 +1478,9 @@ bridge_dispatch(struct bridge_iflist *if m->m_pkthdr.rcvif = ifl->ifp; m->m_pkthdr.ph_rtableid = ifl->ifp->if_rdomain; - if (ifp->if_type == IFT_GIF) { - m->m_flags |= M_PROTO1; - ether_input_mbuf(ifl->ifp, m); - m = NULL; - } - return (m); + m->m_flags |= M_PROTO1; + ether_input_mbuf(ifl->ifp, m); + return (NULL); } if (bcmp(ac->ac_enaddr, eh->ether_shost, ETHER_ADDR_LEN) == 0 #if NCARP > 0