From owner-svn-src-projects@FreeBSD.ORG Mon Jan 19 21:27:36 2015 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1120A656; Mon, 19 Jan 2015 21:27:36 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E47C8BA3; Mon, 19 Jan 2015 21:27:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0JLRZip057738; Mon, 19 Jan 2015 21:27:35 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0JLRZeD057734; Mon, 19 Jan 2015 21:27:35 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201501192127.t0JLRZeD057734@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 19 Jan 2015 21:27:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r277397 - in projects/ifnet/sys: net netgraph X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jan 2015 21:27:36 -0000 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); }