diff options
Diffstat (limited to 'freebsd/sys/net/if_ethersubr.c')
-rw-r--r-- | freebsd/sys/net/if_ethersubr.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/freebsd/sys/net/if_ethersubr.c b/freebsd/sys/net/if_ethersubr.c index 02a5d002..b7c48731 100644 --- a/freebsd/sys/net/if_ethersubr.c +++ b/freebsd/sys/net/if_ethersubr.c @@ -662,8 +662,10 @@ ether_input(struct ifnet *ifp, struct mbuf *m) m = (*lagg_input_p)(ifp, m); if (m != NULL) ifp = m->m_pkthdr.rcvif; - else + else { + CURVNET_RESTORE(); return; + } } /* @@ -682,6 +684,7 @@ ether_input(struct ifnet *ifp, struct mbuf *m) #endif ifp->if_ierrors++; m_freem(m); + CURVNET_RESTORE(); return; } @@ -694,6 +697,8 @@ ether_input(struct ifnet *ifp, struct mbuf *m) m_adj(m, ETHER_VLAN_ENCAP_LEN); } + M_SETFIB(m, ifp->if_fib); + /* Allow ng_ether(4) to claim this frame. */ if (IFP2AC(ifp)->ac_netgraph != NULL) { KASSERT(ng_ether_input_p != NULL, |