Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 Feb 2012 11:41:11 -0500
From:      Jason Hellenthal <jhell@DataIX.net>
To:        "Bjoern A. Zeeb" <bz@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
Message-ID:  <20120210164111.GB43164@DataIX.net>
In-Reply-To: <20120210163622.GA43164@DataIX.net>
References:  <201202100642.q1A6g1PI058085@svn.freebsd.org> <20120210163622.GA43164@DataIX.net>

next in thread | previous in thread | raw e-mail | index | archive | help

Ignore this please. I have not been feeling that great and missed the
header updates :(

On Fri, Feb 10, 2012 at 11:36:22AM -0500, Jason Hellenthal wrote:
> 
> 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 <sys/param.h>
> > +#include <sys/ioctl.h>
> > +#include <sys/socket.h>
> > +#include <sys/sockio.h>
> > +
> > +#include <net/if.h>
> > +#include <net/route.h>
> > +
> > +#include <stdio.h>
> > +#include <stdlib.h>
> > +#include <string.h>
> > +#include <err.h>
> > +
> > +#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 <sys/taskqueue.h>
> >  #include <sys/domain.h>
> >  #include <sys/jail.h>
> > +#include <sys/priv.h>
> > +
> >  #include <machine/stdarg.h>
> >  #include <vm/uma.h>
> >  
> > @@ -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 =;

-- 
;s =;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120210164111.GB43164>