Module Name:    src
Committed By:   ozaki-r
Date:           Mon Sep  5 02:25:38 UTC 2016

Modified Files:
        src/distrib/sets/lists/base: shl.mi
        src/distrib/sets/lists/comp: mi shl.mi
        src/distrib/sets/lists/debug: mi shl.mi
        src/sys/net: if_tun.c
        src/sys/rump/net: Makefile.rumpnetcomp
Added Files:
        src/sys/rump/net/lib/libtun: Makefile TUN.ioconf tun_component.c

Log Message:
Support tun devices on rump kernels


To generate a diff of this commit:
cvs rdiff -u -r1.783 -r1.784 src/distrib/sets/lists/base/shl.mi
cvs rdiff -u -r1.2059 -r1.2060 src/distrib/sets/lists/comp/mi
cvs rdiff -u -r1.294 -r1.295 src/distrib/sets/lists/comp/shl.mi
cvs rdiff -u -r1.166 -r1.167 src/distrib/sets/lists/debug/mi
cvs rdiff -u -r1.143 -r1.144 src/distrib/sets/lists/debug/shl.mi
cvs rdiff -u -r1.129 -r1.130 src/sys/net/if_tun.c
cvs rdiff -u -r1.14 -r1.15 src/sys/rump/net/Makefile.rumpnetcomp
cvs rdiff -u -r0 -r1.1 src/sys/rump/net/lib/libtun/Makefile \
    src/sys/rump/net/lib/libtun/TUN.ioconf \
    src/sys/rump/net/lib/libtun/tun_component.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/base/shl.mi
diff -u src/distrib/sets/lists/base/shl.mi:1.783 src/distrib/sets/lists/base/shl.mi:1.784
--- src/distrib/sets/lists/base/shl.mi:1.783	Sat Aug 20 11:34:49 2016
+++ src/distrib/sets/lists/base/shl.mi	Mon Sep  5 02:25:37 2016
@@ -1,4 +1,4 @@
-# $NetBSD: shl.mi,v 1.783 2016/08/20 11:34:49 christos Exp $
+# $NetBSD: shl.mi,v 1.784 2016/09/05 02:25:37 ozaki-r Exp $
 #
 # Note:	Don't delete entries from here - mark them as "obsolete" instead,
 #	unless otherwise stated below.
@@ -736,6 +736,9 @@
 ./usr/lib/librumpnet_tap.so			base-rump-shlib		rump
 ./usr/lib/librumpnet_tap.so.0			base-rump-shlib		rump
 ./usr/lib/librumpnet_tap.so.0.0			base-rump-shlib		rump
+./usr/lib/librumpnet_tun.so			base-rump-shlib		rump
+./usr/lib/librumpnet_tun.so.0			base-rump-shlib		rump
+./usr/lib/librumpnet_tun.so.0.0			base-rump-shlib		rump
 ./usr/lib/librumpnet_virtif.so			base-rump-shlib		rump
 ./usr/lib/librumpnet_virtif.so.0		base-rump-shlib		rump
 ./usr/lib/librumpnet_virtif.so.0.0		base-rump-shlib		rump

Index: src/distrib/sets/lists/comp/mi
diff -u src/distrib/sets/lists/comp/mi:1.2059 src/distrib/sets/lists/comp/mi:1.2060
--- src/distrib/sets/lists/comp/mi:1.2059	Sat Aug 27 08:03:47 2016
+++ src/distrib/sets/lists/comp/mi	Mon Sep  5 02:25:37 2016
@@ -1,4 +1,4 @@
-#	$NetBSD: mi,v 1.2059 2016/08/27 08:03:47 dholland Exp $
+#	$NetBSD: mi,v 1.2060 2016/09/05 02:25:37 ozaki-r Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 ./etc/mtree/set.comp				comp-sys-root
@@ -3563,6 +3563,8 @@
 ./usr/lib/librumpnet_sockin_p.a			comp-c-proflib		rump,profile
 ./usr/lib/librumpnet_tap.a			comp-c-lib		rump
 ./usr/lib/librumpnet_tap_p.a			comp-c-proflib		rump,profile
+./usr/lib/librumpnet_tun.a			comp-c-lib		rump
+./usr/lib/librumpnet_tun_p.a			comp-c-proflib		rump,profile
 ./usr/lib/librumpnet_virtif.a			comp-c-lib		rump
 ./usr/lib/librumpnet_virtif_p.a			comp-c-proflib		rump,profile
 ./usr/lib/librumpuser.a				comp-c-lib		compatfile,rump

Index: src/distrib/sets/lists/comp/shl.mi
diff -u src/distrib/sets/lists/comp/shl.mi:1.294 src/distrib/sets/lists/comp/shl.mi:1.295
--- src/distrib/sets/lists/comp/shl.mi:1.294	Sat Aug 27 07:54:31 2016
+++ src/distrib/sets/lists/comp/shl.mi	Mon Sep  5 02:25:37 2016
@@ -1,4 +1,4 @@
-# $NetBSD: shl.mi,v 1.294 2016/08/27 07:54:31 christos Exp $
+# $NetBSD: shl.mi,v 1.295 2016/09/05 02:25:37 ozaki-r Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -231,6 +231,7 @@
 ./usr/lib/librumpnet_shmif_pic.a		comp-c-piclib		picinstall,rump
 ./usr/lib/librumpnet_sockin_pic.a		comp-c-piclib		picinstall,rump
 ./usr/lib/librumpnet_tap_pic.a			comp-c-piclib		picinstall,rump
+./usr/lib/librumpnet_tun_pic.a			comp-c-piclib		picinstall,rump
 ./usr/lib/librumpnet_virtif_pic.a		comp-c-piclib		picinstall,rump
 ./usr/lib/librumpuser_pic.a			comp-c-piclib		compatfile,picinstall,rump
 ./usr/lib/librumpvfs_aio_pic.a			comp-c-piclib		picinstall,rump

Index: src/distrib/sets/lists/debug/mi
diff -u src/distrib/sets/lists/debug/mi:1.166 src/distrib/sets/lists/debug/mi:1.167
--- src/distrib/sets/lists/debug/mi:1.166	Wed Aug 31 14:05:09 2016
+++ src/distrib/sets/lists/debug/mi	Mon Sep  5 02:25:38 2016
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.166 2016/08/31 14:05:09 maya Exp $
+# $NetBSD: mi,v 1.167 2016/09/05 02:25:38 ozaki-r Exp $
 ./etc/mtree/set.debug                           comp-sys-root
 ./usr/lib					comp-sys-usr		compatdir
 ./usr/lib/i18n/libBIG5_g.a			comp-c-debuglib		debuglib,compatfile
@@ -223,6 +223,7 @@
 ./usr/lib/librumpnet_shmif_g.a			comp-c-debuglib		debuglib,rump
 ./usr/lib/librumpnet_sockin_g.a			comp-c-debuglib		debuglib,rump
 ./usr/lib/librumpnet_tap_g.a			comp-c-debuglib		debuglib,rump
+./usr/lib/librumpnet_tun_g.a			comp-c-debuglib		debuglib,rump
 ./usr/lib/librumpnet_virtif_g.a			comp-c-debuglib		debuglib,rump
 ./usr/lib/librumpuser_g.a			comp-c-debuglib		debuglib,compatfile,rump
 ./usr/lib/librumpvfs_aio_g.a			comp-c-debuglib		debuglib,rump

Index: src/distrib/sets/lists/debug/shl.mi
diff -u src/distrib/sets/lists/debug/shl.mi:1.143 src/distrib/sets/lists/debug/shl.mi:1.144
--- src/distrib/sets/lists/debug/shl.mi:1.143	Sat Aug 20 11:34:49 2016
+++ src/distrib/sets/lists/debug/shl.mi	Mon Sep  5 02:25:38 2016
@@ -1,4 +1,4 @@
-# $NetBSD: shl.mi,v 1.143 2016/08/20 11:34:49 christos Exp $
+# $NetBSD: shl.mi,v 1.144 2016/09/05 02:25:38 ozaki-r Exp $
 ./usr/libdata/debug/lib						base-sys-usr	debug,dynamicroot,compatdir
 ./usr/libdata/debug/lib/libblacklist.so.0.0.debug		comp-sys-debug	debug,dynamicroot
 ./usr/libdata/debug/lib/libc.so.12.203.debug			comp-sys-debug	debug,dynamicroot
@@ -250,6 +250,7 @@
 ./usr/libdata/debug/usr/lib/librumpnet_shmif.so.0.0.debug	comp-rump-debug	debug,rump
 ./usr/libdata/debug/usr/lib/librumpnet_sockin.so.0.0.debug	comp-rump-debug	debug,rump
 ./usr/libdata/debug/usr/lib/librumpnet_tap.so.0.0.debug		comp-rump-debug	debug,rump
+./usr/libdata/debug/usr/lib/librumpnet_tun.so.0.0.debug		comp-rump-debug	debug,rump
 ./usr/libdata/debug/usr/lib/librumpnet_virtif.so.0.0.debug	comp-rump-debug	debug,rump
 ./usr/libdata/debug/usr/lib/librumpuser.so.0.1.debug		comp-rump-debug	debug,compatfile,rump
 ./usr/libdata/debug/usr/lib/librumpvfs.so.0.0.debug		comp-rump-debug	debug,compatfile,rump

Index: src/sys/net/if_tun.c
diff -u src/sys/net/if_tun.c:1.129 src/sys/net/if_tun.c:1.130
--- src/sys/net/if_tun.c:1.129	Mon Sep  5 01:57:54 2016
+++ src/sys/net/if_tun.c	Mon Sep  5 02:25:37 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_tun.c,v 1.129 2016/09/05 01:57:54 ozaki-r Exp $	*/
+/*	$NetBSD: if_tun.c,v 1.130 2016/09/05 02:25:37 ozaki-r Exp $	*/
 
 /*
  * Copyright (c) 1988, Julian Onions <j...@cs.nott.ac.uk>
@@ -15,7 +15,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_tun.c,v 1.129 2016/09/05 01:57:54 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_tun.c,v 1.130 2016/09/05 02:25:37 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -115,6 +115,10 @@ const struct cdevsw tun_cdevsw = {
 	.d_flag = D_OTHER
 };
 
+#ifdef _MODULE
+devmajor_t tun_bmajor = -1, tun_cmajor = -1;
+#endif
+
 void
 tunattach(int unused)
 {
@@ -133,6 +137,9 @@ tuninit(void)
 	LIST_INIT(&tun_softc_list);
 	LIST_INIT(&tunz_softc_list);
 	if_clone_attach(&tun_cloner);
+#ifdef _MODULE
+	devsw_attach("tun", NULL, &tun_bmajor, &tun_cdevsw, &tun_cmajor);
+#endif
 }
 
 static int
@@ -143,6 +150,10 @@ tundetach(void)
 	if (!LIST_EMPTY(&tun_softc_list) || !LIST_EMPTY(&tunz_softc_list))
 		error = EBUSY;
 
+#ifdef _MODULE
+	if (error == 0)
+		error = devsw_detach(NULL, &tun_cdevsw);
+#endif
 	if (error == 0) {
 		if_clone_detach(&tun_cloner);
 		mutex_destroy(&tun_softc_lock);

Index: src/sys/rump/net/Makefile.rumpnetcomp
diff -u src/sys/rump/net/Makefile.rumpnetcomp:1.14 src/sys/rump/net/Makefile.rumpnetcomp:1.15
--- src/sys/rump/net/Makefile.rumpnetcomp:1.14	Fri Apr 15 01:35:26 2016
+++ src/sys/rump/net/Makefile.rumpnetcomp	Mon Sep  5 02:25:38 2016
@@ -1,10 +1,10 @@
-#	$NetBSD: Makefile.rumpnetcomp,v 1.14 2016/04/15 01:35:26 ozaki-r Exp $
+#	$NetBSD: Makefile.rumpnetcomp,v 1.15 2016/09/05 02:25:38 ozaki-r Exp $
 #
 
 .include <bsd.own.mk>
 
 RUMPNETCOMP=	agr bridge net net80211 netbt netinet netinet6
-RUMPNETCOMP+=	gif netmpls npf local pppoe shmif tap
+RUMPNETCOMP+=	gif netmpls npf local pppoe shmif tap tun
 
 .if ${MKSLJIT} != "no" || make(rumpdescribe)
 RUMPNETCOMP+=	bpfjit

Added files:

Index: src/sys/rump/net/lib/libtun/Makefile
diff -u /dev/null src/sys/rump/net/lib/libtun/Makefile:1.1
--- /dev/null	Mon Sep  5 02:25:38 2016
+++ src/sys/rump/net/lib/libtun/Makefile	Mon Sep  5 02:25:38 2016
@@ -0,0 +1,15 @@
+#	$NetBSD: Makefile,v 1.1 2016/09/05 02:25:38 ozaki-r Exp $
+#
+
+.PATH:	${.CURDIR}/../../../../net
+
+LIB=	rumpnet_tun
+COMMENT=/dev/tun network tunneling over tty
+
+IOCONF=	TUN.ioconf
+SRCS=	if_tun.c
+
+SRCS+=	tun_component.c
+
+.include <bsd.lib.mk>
+.include <bsd.klinks.mk>
Index: src/sys/rump/net/lib/libtun/TUN.ioconf
diff -u /dev/null src/sys/rump/net/lib/libtun/TUN.ioconf:1.1
--- /dev/null	Mon Sep  5 02:25:38 2016
+++ src/sys/rump/net/lib/libtun/TUN.ioconf	Mon Sep  5 02:25:38 2016
@@ -0,0 +1,7 @@
+#	$NetBSD: TUN.ioconf,v 1.1 2016/09/05 02:25:38 ozaki-r Exp $
+
+ioconf		tun
+
+include		"conf/files"
+
+pseudo-device   tun
Index: src/sys/rump/net/lib/libtun/tun_component.c
diff -u /dev/null src/sys/rump/net/lib/libtun/tun_component.c:1.1
--- /dev/null	Mon Sep  5 02:25:38 2016
+++ src/sys/rump/net/lib/libtun/tun_component.c	Mon Sep  5 02:25:38 2016
@@ -0,0 +1,63 @@
+/*	$NetBSD: tun_component.c,v 1.1 2016/09/05 02:25:38 ozaki-r Exp $	*/
+
+/*
+ * Copyright (c) 2016 Internet Initiative Japan Inc.
+ * 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 ``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.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: tun_component.c,v 1.1 2016/09/05 02:25:38 ozaki-r Exp $");
+
+#include <sys/param.h>
+#include <sys/device.h>
+#include <sys/stat.h>
+
+#include <rump-sys/kern.h>
+#include <rump-sys/vfs.h>
+
+#include "ioconf.h"
+
+RUMP_COMPONENT(RUMP_COMPONENT_NET_IF)
+{
+	extern const struct cdevsw tun_cdevsw;
+	extern devmajor_t tun_bmajor, tun_cmajor;
+	int error;
+
+	error = devsw_attach("tun", NULL, &tun_bmajor,
+	    &tun_cdevsw, &tun_cmajor);
+	if (error != 0)
+		panic("tun devsw attach failed: %d", error);
+
+	error = rump_vfs_makeonedevnode(S_IFCHR, "/dev/tun", tun_cmajor,
+	    0xfffff);
+	if (error != 0)
+		panic("cannot create tun device node: %d", error);
+
+	error = rump_vfs_makedevnodes(S_IFCHR, "/dev/tun", '0', tun_cmajor,
+	    0, 4);
+	if (error != 0)
+		panic("cannot create tun[0-4] device node: %d", error);
+
+	devsw_detach(NULL, &tun_cdevsw);
+}

Reply via email to