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 | |
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
-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 | ||||
-rw-r--r-- | sys/net/if_arcsubr.c | 1 | ||||
-rw-r--r-- | sys/net/if_atmsubr.c | 1 | ||||
-rw-r--r-- | sys/net/if_ethersubr.c | 2 | ||||
-rw-r--r-- | sys/net/if_fddisubr.c | 1 | ||||
-rw-r--r-- | sys/net/if_fwsubr.c | 1 | ||||
-rw-r--r-- | sys/net/if_gif.c | 1 | ||||
-rw-r--r-- | sys/net/if_iso88025subr.c | 1 | ||||
-rw-r--r-- | sys/net/if_spppfr.c | 2 | ||||
-rw-r--r-- | sys/net/if_spppsubr.c | 1 | ||||
-rw-r--r-- | sys/net/if_stf.c | 1 | ||||
-rw-r--r-- | sys/net/if_tun.c | 1 | ||||
-rw-r--r-- | sys/netgraph/ng_iface.c | 1 |
16 files changed, 21 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); diff --git a/sys/net/if_arcsubr.c b/sys/net/if_arcsubr.c index 0e23b24..2a58d5a 100644 --- a/sys/net/if_arcsubr.c +++ b/sys/net/if_arcsubr.c @@ -608,6 +608,7 @@ arc_input(struct ifnet *ifp, struct mbuf *m) m_freem(m); return; } + M_SETFIB(m, ifp->if_fib); netisr_dispatch(isr, m); } diff --git a/sys/net/if_atmsubr.c b/sys/net/if_atmsubr.c index d8a3313..fb63fd5 100644 --- a/sys/net/if_atmsubr.c +++ b/sys/net/if_atmsubr.c @@ -332,6 +332,7 @@ atm_input(struct ifnet *ifp, struct atm_pseudohdr *ah, struct mbuf *m, return; } } + M_SETFIB(m, ifp->if_fib); netisr_dispatch(isr, m); } diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c index be90f5a..aa8113b 100644 --- a/sys/net/if_ethersubr.c +++ b/sys/net/if_ethersubr.c @@ -692,6 +692,8 @@ ether_input_internal(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, diff --git a/sys/net/if_fddisubr.c b/sys/net/if_fddisubr.c index 13fdd72..d98029c 100644 --- a/sys/net/if_fddisubr.c +++ b/sys/net/if_fddisubr.c @@ -550,6 +550,7 @@ fddi_input(ifp, m) ifp->if_noproto++; goto dropanyway; } + M_SETFIB(m, ifp->if_fib); netisr_dispatch(isr, m); return; diff --git a/sys/net/if_fwsubr.c b/sys/net/if_fwsubr.c index eac049a..7c57feb 100644 --- a/sys/net/if_fwsubr.c +++ b/sys/net/if_fwsubr.c @@ -627,6 +627,7 @@ firewire_input(struct ifnet *ifp, struct mbuf *m, uint16_t src) return; } + M_SETFIB(m, ifp->if_fib); netisr_dispatch(isr, m); } diff --git a/sys/net/if_gif.c b/sys/net/if_gif.c index 4a8df34..2b6b2b4 100644 --- a/sys/net/if_gif.c +++ b/sys/net/if_gif.c @@ -609,6 +609,7 @@ gif_input(m, af, ifp) ifp->if_ipackets++; ifp->if_ibytes += m->m_pkthdr.len; + M_SETFIB(m, ifp->if_fib); netisr_dispatch(isr, m); } diff --git a/sys/net/if_iso88025subr.c b/sys/net/if_iso88025subr.c index 933065e..7961df0 100644 --- a/sys/net/if_iso88025subr.c +++ b/sys/net/if_iso88025subr.c @@ -680,6 +680,7 @@ iso88025_input(ifp, m) break; } + M_SETFIB(m, ifp->if_fib); netisr_dispatch(isr, m); return; diff --git a/sys/net/if_spppfr.c b/sys/net/if_spppfr.c index ae4f959..ca84656 100644 --- a/sys/net/if_spppfr.c +++ b/sys/net/if_spppfr.c @@ -280,6 +280,8 @@ drop: ++ifp->if_ierrors; if (! (ifp->if_flags & IFF_UP)) goto drop; + M_SETFIB(m, ifp->if_fib); + /* Check queue. */ if (netisr_queue(isr, m)) { /* (0) on success. */ if (debug) diff --git a/sys/net/if_spppsubr.c b/sys/net/if_spppsubr.c index 3f0faaf..363d9aa 100644 --- a/sys/net/if_spppsubr.c +++ b/sys/net/if_spppsubr.c @@ -737,6 +737,7 @@ sppp_input(struct ifnet *ifp, struct mbuf *m) goto drop; SPPP_UNLOCK(sp); + M_SETFIB(m, ifp->if_fib); /* Check queue. */ if (netisr_queue(isr, m)) { /* (0) on success. */ if (debug) diff --git a/sys/net/if_stf.c b/sys/net/if_stf.c index 1ef5581..e32956e 100644 --- a/sys/net/if_stf.c +++ b/sys/net/if_stf.c @@ -781,6 +781,7 @@ in_stf_input(m, off) */ ifp->if_ipackets++; ifp->if_ibytes += m->m_pkthdr.len; + M_SETFIB(m, ifp->if_fib); netisr_dispatch(NETISR_IPV6, m); } diff --git a/sys/net/if_tun.c b/sys/net/if_tun.c index 49a5249..d74c9fe 100644 --- a/sys/net/if_tun.c +++ b/sys/net/if_tun.c @@ -929,6 +929,7 @@ tunwrite(struct cdev *dev, struct uio *uio, int flag) ifp->if_ibytes += m->m_pkthdr.len; ifp->if_ipackets++; CURVNET_SET(ifp->if_vnet); + M_SETFIB(m, ifp->if_fib); netisr_dispatch(isr, m); CURVNET_RESTORE(); return (0); diff --git a/sys/netgraph/ng_iface.c b/sys/netgraph/ng_iface.c index a08595f..e774098 100644 --- a/sys/netgraph/ng_iface.c +++ b/sys/netgraph/ng_iface.c @@ -777,6 +777,7 @@ ng_iface_rcvdata(hook_p hook, item_p item) /* First chunk of an mbuf contains good junk */ if (harvest.point_to_point) random_harvest(m, 16, 3, 0, RANDOM_NET); + M_SETFIB(m, ifp->if_fib); netisr_dispatch(isr, m); return (0); } |