summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorbz <bz@FreeBSD.org>2011-07-03 16:08:38 +0000
committerbz <bz@FreeBSD.org>2011-07-03 16:08:38 +0000
commit300a95bf76e162113e6631c5538072e8a1aec2bb (patch)
tree5b26fb6f45285f3368af628d56f5ce11128abe81 /sys/dev
parentcf260e73d64c6f9645f9836a1a5e0f93061ae882 (diff)
downloadFreeBSD-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.c1
-rw-r--r--sys/dev/lmc/if_lmc.c1
-rw-r--r--sys/dev/ppbus/if_plip.c4
-rw-r--r--sys/dev/usb/net/uhso.c1
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);
OpenPOWER on IntegriCloud