From owner-svn-src-stable-8@FreeBSD.ORG Fri Feb 10 16:36:33 2012 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DDCCB106566B; Fri, 10 Feb 2012 16:36:33 +0000 (UTC) (envelope-from jhellenthal@gmail.com) Received: from mail-yx0-f182.google.com (mail-yx0-f182.google.com [209.85.213.182]) by mx1.freebsd.org (Postfix) with ESMTP id 543188FC12; Fri, 10 Feb 2012 16:36:32 +0000 (UTC) Received: by yenl12 with SMTP id l12so2040498yen.13 for ; Fri, 10 Feb 2012 08:36:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to; bh=yB0zCyWs7610VDrTvxQFB6s+iQp5T0n4RccoGhS6tWw=; b=MGy6GMngBdE7cVWBZq0WPObXpI0nQVlD1bjpiRDS/B9i5AyZzhqqC+GCo25CaBZlXc pGr4anjxGw9+eszpz4eJbCtIfMNOdwSAZ+lk/exbfEfr3ONRm7gIalH+3HlGOCHSU84e g1MTGLfQdMsQcFbWqSO2ADf6P7OPCM8JfrMMk= Received: by 10.50.170.41 with SMTP id aj9mr12377940igc.0.1328891792266; Fri, 10 Feb 2012 08:36:32 -0800 (PST) Received: from DataIX.net (adsl-99-19-42-38.dsl.klmzmi.sbcglobal.net. [99.19.42.38]) by mx.google.com with ESMTPS id va6sm3203627igc.4.2012.02.10.08.36.25 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 10 Feb 2012 08:36:29 -0800 (PST) Sender: Jason Hellenthal Received: from DataIX.net (localhost [127.0.0.1]) by DataIX.net (8.14.5/8.14.5) with ESMTP id q1AGaNcY083751 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 10 Feb 2012 11:36:23 -0500 (EST) (envelope-from jhell@DataIX.net) Received: (from jhell@localhost) by DataIX.net (8.14.5/8.14.5/Submit) id q1AGaM6l082841; Fri, 10 Feb 2012 11:36:22 -0500 (EST) (envelope-from jhell@DataIX.net) Date: Fri, 10 Feb 2012 11:36:22 -0500 From: Jason Hellenthal To: "Bjoern A. Zeeb" Message-ID: <20120210163622.GA43164@DataIX.net> References: <201202100642.q1A6g1PI058085@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201202100642.q1A6g1PI058085@svn.freebsd.org> Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-8@freebsd.org Subject: Re: svn commit: r231346 - in stable/8: sbin/ifconfig share/man/man9 sys/kern sys/net sys/sys X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Feb 2012 16:36:34 -0000 Not quite sure if this is a problem with the kernel not being updated prior building this but the following errors are present without the build as I know for the mean time. Building the kernel now to test. /usr/src/sbin/ifconfig/iffib.c: In function 'fib_status': /usr/src/sbin/ifconfig/iffib.c:54: error: 'SIOCGIFFIB' undeclared (first use in this function) /usr/src/sbin/ifconfig/iffib.c:54: error: (Each undeclared identifier is reported only once /usr/src/sbin/ifconfig/iffib.c:54: error: for each function it appears in.) /usr/src/sbin/ifconfig/iffib.c:58: error: 'struct ifreq' has no member named 'ifr_fib' /usr/src/sbin/ifconfig/iffib.c:61: error: 'struct ifreq' has no member named 'ifr_fib' /usr/src/sbin/ifconfig/iffib.c: In function 'setiffib': /usr/src/sbin/ifconfig/iffib.c:78: error: 'struct ifreq' has no member named 'ifr_fib' /usr/src/sbin/ifconfig/iffib.c:79: error: 'SIOCSIFFIB' undeclared (first use in this function) *** Error code 1 On Fri, Feb 10, 2012 at 06:42:01AM +0000, Bjoern A. Zeeb wrote: > Author: bz > Date: Fri Feb 10 06:42:00 2012 > New Revision: 231346 > URL: http://svn.freebsd.org/changeset/base/231346 > > Log: > MFC r223735: > > Add infrastructure to allow all frames/packets received on an interface > to be assigned to a non-default FIB instance. > > Submitted by: cjsp > Submitted by: Alexander V. Chernikov (melifaro ipfw.ru) > (original versions) > Reviewed by: julian > Reviewed by: Alexander V. Chernikov (melifaro ipfw.ru) > > Reviewed by: melifaro > > Added: > stable/8/sbin/ifconfig/iffib.c > - copied unchanged from r223735, head/sbin/ifconfig/iffib.c > Modified: > stable/8/sbin/ifconfig/Makefile > stable/8/sbin/ifconfig/ifconfig.8 > stable/8/share/man/man9/ifnet.9 > stable/8/sys/kern/kern_jail.c > stable/8/sys/net/if.c > stable/8/sys/net/if.h > stable/8/sys/net/if_debug.c > stable/8/sys/net/if_var.h > stable/8/sys/sys/priv.h > stable/8/sys/sys/sockio.h > Directory Properties: > stable/8/sbin/ifconfig/ (props changed) > stable/8/share/man/man9/ (props changed) > stable/8/sys/ (props changed) > > Modified: stable/8/sbin/ifconfig/Makefile > ============================================================================== > --- stable/8/sbin/ifconfig/Makefile Fri Feb 10 06:38:57 2012 (r231345) > +++ stable/8/sbin/ifconfig/Makefile Fri Feb 10 06:42:00 2012 (r231346) > @@ -23,6 +23,7 @@ SRCS+= af_nd6.c # ND6 support > SRCS+= ifclone.c # clone device support > SRCS+= ifmac.c # MAC support > SRCS+= ifmedia.c # SIOC[GS]IFMEDIA support > +SRCS+= iffib.c # non-default FIB support > SRCS+= ifvlan.c # SIOC[GS]ETVLAN support > SRCS+= ifgre.c # GRE keys etc > SRCS+= ifgif.c # GIF reversed header workaround > > Modified: stable/8/sbin/ifconfig/ifconfig.8 > ============================================================================== > --- stable/8/sbin/ifconfig/ifconfig.8 Fri Feb 10 06:38:57 2012 (r231345) > +++ stable/8/sbin/ifconfig/ifconfig.8 Fri Feb 10 06:42:00 2012 (r231346) > @@ -294,6 +294,19 @@ Remove the interface from the given > Fill interface index > (lowermost 64bit of an IPv6 address) > automatically. > +.It Cm fib Ar fib_number > +Specify interface FIB. > +A FIB > +.Ar fib_number > +is assigned to all frames or packets received on that interface. > +The FIB is not inherited, e.g. vlans or other sub-interfaces will use > +the default FIB (0) irrespective of the parent interface's FIB. > +The kernel needs to be tuned to support more than the default FIB > +using the > +.Va ROUTETABLES > +kernel configuration option, or the > +.Va net.fibs > +tunable. > .It Cm ipdst > This is used to specify an Internet host who is willing to receive > IP packets encapsulating IPX packets bound for a remote network. > > Copied: stable/8/sbin/ifconfig/iffib.c (from r223735, head/sbin/ifconfig/iffib.c) > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ stable/8/sbin/ifconfig/iffib.c Fri Feb 10 06:42:00 2012 (r231346, copy of r223735, head/sbin/ifconfig/iffib.c) > @@ -0,0 +1,103 @@ > +/*- > + * Copyright (c) 2011 Alexander V. Chernikov > + * Copyright (c) 2011 Christian S.J. Peron > + * Copyright (c) 2011 Bjoern A. Zeeb > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE > + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL > + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT > + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY > + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > + * SUCH DAMAGE. > + * > + * $FreeBSD$ > + */ > + > +#include > +#include > +#include > +#include > + > +#include > +#include > + > +#include > +#include > +#include > +#include > + > +#include "ifconfig.h" > + > +static void > +fib_status(int s) > +{ > + struct ifreq ifr; > + > + memset(&ifr, 0, sizeof(ifr)); > + strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); > + > + if (ioctl(s, SIOCGIFFIB, (caddr_t)&ifr) < 0) > + return; > + > + /* Ignore if it is the default. */ > + if (ifr.ifr_fib == 0) > + return; > + > + printf("\tfib: %u\n", ifr.ifr_fib); > +} > + > +static void > +setiffib(const char *val, int dummy __unused, int s, > + const struct afswtch *afp) > +{ > + unsigned long fib; > + char *ep; > + > + fib = strtoul(val, &ep, 0); > + if (*ep != '\0' || fib > UINT_MAX) { > + warn("fib %s not valid", val); > + return; > + } > + > + strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name)); > + ifr.ifr_fib = fib; > + if (ioctl(s, SIOCSIFFIB, (caddr_t)&ifr) < 0) > + warn("ioctl (SIOCSIFFIB)"); > +} > + > +static struct cmd fib_cmds[] = { > + DEF_CMD_ARG("fib", setiffib), > +}; > + > +static struct afswtch af_fib = { > + .af_name = "af_fib", > + .af_af = AF_UNSPEC, > + .af_other_status = fib_status, > +}; > + > +static __constructor void > +fib_ctor(void) > +{ > +#define N(a) (sizeof(a) / sizeof(a[0])) > + size_t i; > + > + for (i = 0; i < N(fib_cmds); i++) > + cmd_register(&fib_cmds[i]); > + af_register(&af_fib); > +#undef N > +} > > Modified: stable/8/share/man/man9/ifnet.9 > ============================================================================== > --- stable/8/share/man/man9/ifnet.9 Fri Feb 10 06:38:57 2012 (r231345) > +++ stable/8/share/man/man9/ifnet.9 Fri Feb 10 06:42:00 2012 (r231346) > @@ -28,7 +28,7 @@ > .\" > .\" $FreeBSD$ > .\" > -.Dd March 14, 2007 > +.Dd July 3, 2011 > .Dt IFNET 9 > .Os > .Sh NAME > @@ -1156,11 +1156,12 @@ list. > Caller must have appropriate privilege. > (No call-down to driver.) > .It Dv SIOCGIFCAP > +.It Dv SIOCGIFFIB > .It Dv SIOCGIFFLAGS > .It Dv SIOCGIFMETRIC > .It Dv SIOCGIFMTU > .It Dv SIOCGIFPHYS > -Get interface capabilities, flags, metric, MTU, medium selection. > +Get interface capabilities, FIB, flags, metric, MTU, medium selection. > (No call-down to driver.) > .Pp > .It Dv SIOCSIFCAP > @@ -1179,6 +1180,12 @@ and > .Va if_data.ifi_hwassist > appropriately. > .Pp > +.It Dv SIOCSIFFIB > +Sets interface FIB. > +Caller must have appropriate privilege. > +FIB values start at 0 and values greater or equals than > +.Va net.fibs > +are considered invalid. > .It Dv SIOCSIFFLAGS > Change interface flags. > Caller must have appropriate privilege. > > Modified: stable/8/sys/kern/kern_jail.c > ============================================================================== > --- stable/8/sys/kern/kern_jail.c Fri Feb 10 06:38:57 2012 (r231345) > +++ stable/8/sys/kern/kern_jail.c Fri Feb 10 06:42:00 2012 (r231346) > @@ -3620,6 +3620,7 @@ prison_priv_check(struct ucred *cred, in > case PRIV_NET_LAGG: > case PRIV_NET_GIF: > case PRIV_NET_SETIFVNET: > + case PRIV_NET_SETIFFIB: > > /* > * 802.11-related privileges. > > Modified: stable/8/sys/net/if.c > ============================================================================== > --- stable/8/sys/net/if.c Fri Feb 10 06:38:57 2012 (r231345) > +++ stable/8/sys/net/if.c Fri Feb 10 06:42:00 2012 (r231346) > @@ -58,6 +58,8 @@ > #include > #include > #include > +#include > + > #include > #include > > @@ -2195,6 +2197,20 @@ ifhwioctl(u_long cmd, struct ifnet *ifp, > free(odescrbuf, M_IFDESCR); > break; > > + case SIOCGIFFIB: > + ifr->ifr_fib = ifp->if_fib; > + break; > + > + case SIOCSIFFIB: > + error = priv_check(td, PRIV_NET_SETIFFIB); > + if (error) > + return (error); > + if (ifr->ifr_fib >= rt_numfibs) > + return (EINVAL); > + > + ifp->if_fib = ifr->ifr_fib; > + break; > + > case SIOCSIFFLAGS: > error = priv_check(td, PRIV_NET_SETIFFLAGS); > if (error) > > Modified: stable/8/sys/net/if.h > ============================================================================== > --- stable/8/sys/net/if.h Fri Feb 10 06:38:57 2012 (r231345) > +++ stable/8/sys/net/if.h Fri Feb 10 06:42:00 2012 (r231346) > @@ -315,6 +315,7 @@ struct ifreq { > int ifru_media; > caddr_t ifru_data; > int ifru_cap[2]; > + u_int ifru_fib; > } ifr_ifru; > #define ifr_addr ifr_ifru.ifru_addr /* address */ > #define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ > @@ -331,6 +332,7 @@ struct ifreq { > #define ifr_reqcap ifr_ifru.ifru_cap[0] /* requested capabilities */ > #define ifr_curcap ifr_ifru.ifru_cap[1] /* current capabilities */ > #define ifr_index ifr_ifru.ifru_index /* interface index */ > +#define ifr_fib ifr_ifru.ifru_fib /* interface fib */ > }; > > #define _SIZEOF_ADDR_IFREQ(ifr) \ > > Modified: stable/8/sys/net/if_debug.c > ============================================================================== > --- stable/8/sys/net/if_debug.c Fri Feb 10 06:38:57 2012 (r231345) > +++ stable/8/sys/net/if_debug.c Fri Feb 10 06:42:00 2012 (r231346) > @@ -86,6 +86,7 @@ if_show_ifnet(struct ifnet *ifp) > IF_DB_PRINTF("%d", if_snd.ifq_drv_maxlen); > IF_DB_PRINTF("%d", if_snd.altq_type); > IF_DB_PRINTF("%x", if_snd.altq_flags); > + IF_DB_PRINTF("%u", if_fib); > #undef IF_DB_PRINTF > } > > > Modified: stable/8/sys/net/if_var.h > ============================================================================== > --- stable/8/sys/net/if_var.h Fri Feb 10 06:38:57 2012 (r231345) > +++ stable/8/sys/net/if_var.h Fri Feb 10 06:42:00 2012 (r231346) > @@ -207,7 +207,8 @@ struct ifnet { > char if_cspare[3]; > char *if_description; /* interface description */ > void *if_pspare[7]; > - int if_ispare[4]; > + int if_ispare[3]; > + u_int if_fib; /* interface FIB */ > }; > > typedef void if_init_f_t(void *); > > Modified: stable/8/sys/sys/priv.h > ============================================================================== > --- stable/8/sys/sys/priv.h Fri Feb 10 06:38:57 2012 (r231345) > +++ stable/8/sys/sys/priv.h Fri Feb 10 06:42:00 2012 (r231346) > @@ -336,6 +336,7 @@ > #define PRIV_NET_GIF 416 /* Administer gif interface. */ > #define PRIV_NET_SETIFVNET 417 /* Move interface to vnet. */ > #define PRIV_NET_SETIFDESCR 418 /* Set interface description. */ > +#define PRIV_NET_SETIFFIB 419 /* Set interface fib. */ > > /* > * 802.11-related privileges. > > Modified: stable/8/sys/sys/sockio.h > ============================================================================== > --- stable/8/sys/sys/sockio.h Fri Feb 10 06:38:57 2012 (r231345) > +++ stable/8/sys/sys/sockio.h Fri Feb 10 06:42:00 2012 (r231346) > @@ -110,6 +110,9 @@ > #define SIOCSIFVNET _IOWR('i', 90, struct ifreq) /* move IF jail/vnet */ > #define SIOCSIFRVNET _IOWR('i', 91, struct ifreq) /* reclaim vnet IF */ > > +#define SIOCGIFFIB _IOWR('i', 92, struct ifreq) /* get IF fib */ > +#define SIOCSIFFIB _IOW('i', 93, struct ifreq) /* set IF fib */ > + > #define SIOCSDRVSPEC _IOW('i', 123, struct ifdrv) /* set driver-specific > parameters */ > #define SIOCGDRVSPEC _IOWR('i', 123, struct ifdrv) /* get driver-specific > _______________________________________________ > svn-src-stable-8@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/svn-src-stable-8 > To unsubscribe, send any mail to "svn-src-stable-8-unsubscribe@freebsd.org" -- ;s =;