Date: Mon, 19 Jan 2015 21:27:35 +0000 (UTC) From: Gleb Smirnoff <glebius@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r277397 - in projects/ifnet/sys: net netgraph Message-ID: <201501192127.t0JLRZeD057734@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: glebius Date: Mon Jan 19 21:27:34 2015 New Revision: 277397 URL: https://svnweb.freebsd.org/changeset/base/277397 Log: Remove IF_FIB feature and pass SIOCSIFFIB down to drivers, so that they can cache it if needed. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: projects/ifnet/sys/net/if.c projects/ifnet/sys/net/if.h projects/ifnet/sys/netgraph/ng_iface.c Modified: projects/ifnet/sys/net/if.c ============================================================================== --- projects/ifnet/sys/net/if.c Mon Jan 19 20:39:48 2015 (r277396) +++ projects/ifnet/sys/net/if.c Mon Jan 19 21:27:34 2015 (r277397) @@ -1528,9 +1528,6 @@ if_getfeature(if_t ifp, ift_feature f, u case IF_FLAGS: *f32 = &ifp->if_flags; break; - case IF_FIB: - *f32 = &ifp->if_fib; - break; case IF_BAUDRATE: *f64 = &ifp->if_baudrate; break; @@ -2475,8 +2472,8 @@ if_drvioctl(u_long cmd, struct ifnet *if return (error); if (ifr->ifr_fib >= rt_numfibs) return (EINVAL); - ifp->if_fib = ifr->ifr_fib; + (void )if_ioctl(ifp, cmd, data, td); break; case SIOCSIFFLAGS: Modified: projects/ifnet/sys/net/if.h ============================================================================== --- projects/ifnet/sys/net/if.h Mon Jan 19 20:39:48 2015 (r277396) +++ projects/ifnet/sys/net/if.h Mon Jan 19 21:27:34 2015 (r277397) @@ -575,7 +575,6 @@ typedef enum { typedef enum { /* uint32_t */ IF_FLAGS, - IF_FIB, /* uint64_t */ IF_BAUDRATE, /* pointers */ Modified: projects/ifnet/sys/netgraph/ng_iface.c ============================================================================== --- projects/ifnet/sys/netgraph/ng_iface.c Mon Jan 19 20:39:48 2015 (r277396) +++ projects/ifnet/sys/netgraph/ng_iface.c Mon Jan 19 21:27:34 2015 (r277397) @@ -107,7 +107,8 @@ const static struct iffam gFamilies[] = /* Node private data */ struct ng_iface_private { - struct ifnet *ifp; /* Our interface */ + if_t ifp; /* Our interface */ + u_int fib; /* Interface fib */ int unit; /* Interface unit number */ node_p node; /* Our netgraph node */ hook_p hooks[NUM_FAMILIES]; /* Hook for each address family */ @@ -275,6 +276,7 @@ get_iffam_from_name(const char *name) static int ng_iface_ioctl(if_t ifp, u_long command, void *data, struct thread *td) { + const priv_p priv = if_getsoftc(ifp, IF_DRIVER_SOFTC); struct ifreq *const ifr = (struct ifreq *) data; int error = 0; @@ -295,6 +297,11 @@ ng_iface_ioctl(if_t ifp, u_long command, error = EINVAL; break; + /* Update interface FIB */ + case SIOCSIFFIB: + priv->fib = ifr->ifr_fib; + break; + /* Stuff that's not supported */ case SIOCGIFADDR: case SIOCSIFFLAGS: @@ -643,7 +650,7 @@ ng_iface_rcvdata(hook_p hook, item_p ite return (EAFNOSUPPORT); } random_harvest(&(m->m_data), 12, 2, RANDOM_NET_NG); - M_SETFIB(m, if_get(ifp, IF_FIB)); + M_SETFIB(m, priv->fib); netisr_dispatch(isr, m); return (0); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201501192127.t0JLRZeD057734>