diff options
author | bz <bz@FreeBSD.org> | 2011-07-03 16:08:38 +0000 |
---|---|---|
committer | bz <bz@FreeBSD.org> | 2011-07-03 16:08:38 +0000 |
commit | 300a95bf76e162113e6631c5538072e8a1aec2bb (patch) | |
tree | 5b26fb6f45285f3368af628d56f5ce11128abe81 /sys/dev | |
parent | cf260e73d64c6f9645f9836a1a5e0f93061ae882 (diff) | |
download | FreeBSD-src-300a95bf76e162113e6631c5538072e8a1aec2bb.zip FreeBSD-src-300a95bf76e162113e6631c5538072e8a1aec2bb.tar.gz |
Tag mbufs of all incoming frames or packets with the interface's FIB
setting (either default or if supported as set by SIOCSIFFIB, e.g.
from ifconfig).
Submitted by: Alexander V. Chernikov (melifaro ipfw.ru)
Reviewed by: julian
MFC after: 2 weeks
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/iicbus/if_ic.c | 1 | ||||
-rw-r--r-- | sys/dev/lmc/if_lmc.c | 1 | ||||
-rw-r--r-- | sys/dev/ppbus/if_plip.c | 4 | ||||
-rw-r--r-- | sys/dev/usb/net/uhso.c | 1 |
4 files changed, 7 insertions, 0 deletions
diff --git a/sys/dev/iicbus/if_ic.c b/sys/dev/iicbus/if_ic.c index 6ac6401..fd072c1 100644 --- a/sys/dev/iicbus/if_ic.c +++ b/sys/dev/iicbus/if_ic.c @@ -308,6 +308,7 @@ icintr(device_t dev, int event, char *ptr) top = m_devget(sc->ic_ifbuf + ICHDRLEN, len, 0, sc->ic_ifp, 0); if (top) { mtx_unlock(&sc->ic_lock); + M_SETFIB(top, sc->ic_ifp->if_fib); netisr_dispatch(NETISR_IP, top); mtx_lock(&sc->ic_lock); } diff --git a/sys/dev/lmc/if_lmc.c b/sys/dev/lmc/if_lmc.c index 604e8df..d5fb9ba 100644 --- a/sys/dev/lmc/if_lmc.c +++ b/sys/dev/lmc/if_lmc.c @@ -2527,6 +2527,7 @@ lmc_raw_input(struct ifnet *ifp, struct mbuf *mbuf) { softc_t *sc = IFP2SC(ifp); + M_SETFIB(mbuf, ifp->if_fib); # if INET if (mbuf->m_data[0]>>4 == 4) netisr_dispatch(NETISR_IP, mbuf); diff --git a/sys/dev/ppbus/if_plip.c b/sys/dev/ppbus/if_plip.c index fc81aec..281baf2 100644 --- a/sys/dev/ppbus/if_plip.c +++ b/sys/dev/ppbus/if_plip.c @@ -585,6 +585,8 @@ lp_intr(void *arg) if (bpf_peers_present(sc->sc_ifp->if_bpf)) lptap(sc->sc_ifp, top); + M_SETFIB(top, sc->sc_ifp->if_fib); + /* mbuf is free'd on failure. */ netisr_queue(NETISR_IP, top); ppb_lock(ppbus); @@ -637,6 +639,8 @@ lp_intr(void *arg) if (bpf_peers_present(sc->sc_ifp->if_bpf)) lptap(sc->sc_ifp, top); + M_SETFIB(top, sc->sc_ifp->if_fib); + /* mbuf is free'd on failure. */ netisr_queue(NETISR_IP, top); ppb_lock(ppbus); diff --git a/sys/dev/usb/net/uhso.c b/sys/dev/usb/net/uhso.c index ab13093..cbb0b08 100644 --- a/sys/dev/usb/net/uhso.c +++ b/sys/dev/usb/net/uhso.c @@ -1754,6 +1754,7 @@ uhso_if_rxflush(void *arg) /* Dispatch to IP layer */ BPF_MTAP(sc->sc_ifp, m); + M_SETFIB(m, ifp->if_fib); netisr_dispatch(isr, m); m = m0 != NULL ? m0 : NULL; mtx_lock(&sc->sc_mtx); |