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 <[email protected]>
@@ -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);
+}