svn commit: r194871 - in head: rescue/rescue sbin/ifconfig

Jamie Gritton jamie at FreeBSD.org
Wed Jun 24 18:21:38 UTC 2009


Author: jamie
Date: Wed Jun 24 18:21:37 2009
New Revision: 194871
URL: http://svn.freebsd.org/changeset/base/194871

Log:
  Add the "vnet" and "-vnet" options, to allow moving interfaces between
  jails with VIMAGE.
  
  Approved by:	bz (mentor)

Modified:
  head/rescue/rescue/Makefile
  head/sbin/ifconfig/Makefile
  head/sbin/ifconfig/ifconfig.8
  head/sbin/ifconfig/ifconfig.c

Modified: head/rescue/rescue/Makefile
==============================================================================
--- head/rescue/rescue/Makefile	Wed Jun 24 18:19:55 2009	(r194870)
+++ head/rescue/rescue/Makefile	Wed Jun 24 18:21:37 2009	(r194871)
@@ -143,7 +143,7 @@ CRUNCH_LIBS+= -lipx
 .if ${MK_ZFS} != "no"
 CRUNCH_LIBS+= -lzfs -lnvpair -luutil -lavl
 .endif
-CRUNCH_LIBS+= -lgeom -lbsdxml -lkiconv -lmd -lreadline -lsbuf -lufs -lz
+CRUNCH_LIBS+= -lgeom -lbsdxml -ljail -lkiconv -lmd -lreadline -lsbuf -lufs -lz
 
 .if ${MACHINE_ARCH} == "i386"
 CRUNCH_PROGS_sbin+= bsdlabel sconfig fdisk

Modified: head/sbin/ifconfig/Makefile
==============================================================================
--- head/sbin/ifconfig/Makefile	Wed Jun 24 18:19:55 2009	(r194870)
+++ head/sbin/ifconfig/Makefile	Wed Jun 24 18:21:37 2009	(r194871)
@@ -27,8 +27,8 @@ SRCS+=	ifgre.c			# GRE keys etc
 SRCS+=	ifgif.c			# GIF reversed header workaround
 
 SRCS+=	ifieee80211.c regdomain.c # SIOC[GS]IEEE80211 support
-DPADD+=	${LIBBSDXML} ${LIBSBUF}
-LDADD+=	-lbsdxml -lsbuf
+DPADD+=	${LIBBSDXML} ${LIBSBUF} ${LIBJAIL}
+LDADD+=	-lbsdxml -ljail -lsbuf
 
 SRCS+=	ifcarp.c		# SIOC[GS]VH support
 SRCS+=	ifgroup.c		# ...

Modified: head/sbin/ifconfig/ifconfig.8
==============================================================================
--- head/sbin/ifconfig/ifconfig.8	Wed Jun 24 18:19:55 2009	(r194870)
+++ head/sbin/ifconfig/ifconfig.8	Wed Jun 24 18:21:37 2009	(r194871)
@@ -28,7 +28,7 @@
 .\"     From: @(#)ifconfig.8	8.3 (Berkeley) 1/5/94
 .\" $FreeBSD$
 .\"
-.Dd January 7, 2009
+.Dd June 24, 2009
 .Dt IFCONFIG 8
 .Os
 .Sh NAME
@@ -417,6 +417,18 @@ If the driver offers user-configurable V
 reception of extended frames, tag processing in hardware, or
 frame filtering in hardware,
 respectively.
+.It Cm vnet Ar jail
+Move the interface to the
+.Xr jail 8 ,
+specified by name or JID.
+If the jail has a virtual network stack, the interface will disappear
+from the current environment and become visible to the jail.
+.It Fl vnet Ar jail
+Reclaim the interface from the
+.Xr jail 8 ,
+specified by name or JID.
+If the jail has a virtual network stack, the interface will disappear
+from the jail, and become visible to the current network environment.
 .It Cm polling
 Turn on
 .Xr polling 4
@@ -2367,6 +2379,7 @@ tried to alter an interface's configurat
 .\" .Xr eon 5 ,
 .Xr rc 8 ,
 .Xr routed 8 ,
+.Xr jail 8 ,
 .Xr sysctl 8
 .Sh HISTORY
 The

Modified: head/sbin/ifconfig/ifconfig.c
==============================================================================
--- head/sbin/ifconfig/ifconfig.c	Wed Jun 24 18:19:55 2009	(r194870)
+++ head/sbin/ifconfig/ifconfig.c	Wed Jun 24 18:21:37 2009	(r194871)
@@ -67,6 +67,7 @@ static const char rcsid[] =
 #include <err.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <jail.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -629,6 +630,34 @@ deletetunnel(const char *vname, int para
 }
 
 static void
+setifvnet(const char *jname, int dummy __unused, int s,
+    const struct afswtch *afp)
+{
+	struct ifreq my_ifr;
+
+	memcpy(&my_ifr, &ifr, sizeof(my_ifr));
+	ifr.ifr_jid = jail_getid(jname);
+	if (ifr.ifr_jid < 0)
+		errx(1, "%s", jail_errmsg);
+	if (ioctl(s, SIOCSIFVNET, &ifr) < 0)
+		err(1, "SIOCSIFVNET");
+}
+
+static void
+setifrvnet(const char *jname, int dummy __unused, int s,
+    const struct afswtch *afp)
+{
+	struct ifreq my_ifr;
+
+	memcpy(&my_ifr, &ifr, sizeof(my_ifr));
+	ifr.ifr_jid = jail_getid(jname);
+	if (ifr.ifr_jid < 0)
+		errx(1, "%s", jail_errmsg);
+	if (ioctl(s, SIOCSIFRVNET, &ifr) < 0)
+		err(1, "SIOCSIFRVNET");
+}
+
+static void
 setifnetmask(const char *addr, int dummy __unused, int s,
     const struct afswtch *afp)
 {
@@ -1012,6 +1041,8 @@ static struct cmd basic_cmds[] = {
 	DEF_CMD_ARG2("tunnel",			settunnel),
 	DEF_CMD("-tunnel", 0,			deletetunnel),
 	DEF_CMD("deletetunnel", 0,		deletetunnel),
+	DEF_CMD_ARG("vnet",			setifvnet),
+	DEF_CMD_ARG("-vnet",			setifrvnet),
 	DEF_CMD("link0",	IFF_LINK0,	setifflags),
 	DEF_CMD("-link0",	-IFF_LINK0,	setifflags),
 	DEF_CMD("link1",	IFF_LINK1,	setifflags),


More information about the svn-src-head mailing list