Module Name:    src
Committed By:   snj
Date:           Mon Feb 26 00:41:14 UTC 2018

Modified Files:
        src/sys/net [netbsd-8]: if_bridge.c
        src/tests/net [netbsd-8]: net_common.sh
        src/tests/net/if_bridge [netbsd-8]: t_bridge.sh
        src/tests/net/if_gif [netbsd-8]: t_gif.sh
        src/tests/net/if_ipsec [netbsd-8]: t_ipsec.sh
        src/tests/net/if_l2tp [netbsd-8]: t_l2tp.sh
        src/tests/net/if_loop [netbsd-8]: t_basic.sh
        src/tests/net/if_pppoe [netbsd-8]: t_pppoe.sh
        src/tests/net/if_tap [netbsd-8]: t_tap.sh
        src/tests/net/if_tun [netbsd-8]: Makefile t_tun.sh
        src/tests/net/if_vlan [netbsd-8]: t_vlan.sh

Log Message:
Pull up following revision(s) (requested by ozaki-r in ticket #572):
        sys/net/if_bridge.c: 1.138, 1.148
        tests/net/if_bridge/t_bridge.sh: 1.18
        tests/net/if_gif/t_gif.sh: 1.12
        tests/net/if_ipsec/t_ipsec.sh: 1.3
        tests/net/if_l2tp/t_l2tp.sh: 1.4
        tests/net/if_loop/t_basic.sh: 1.2
        tests/net/if_pppoe/t_pppoe.sh: 1.18
        tests/net/if_tap/t_tap.sh: 1.7
        tests/net/if_tun/Makefile: 1.2
        tests/net/if_tun/t_tun.sh: 1.5
        tests/net/if_vlan/t_vlan.sh: 1.8
        tests/net/net_common.sh: 1.26
Remove unnecessary splsoftnet
--
If the bridge is not running, don't call bridge_stop. Otherwise the
following commands will crash the kernel:
        ifconfig bridge0 create
        ifconfig bridge0 destroy
--
Commonalize and add tests of creating/destroying interfaces


To generate a diff of this commit:
cvs rdiff -u -r1.134.6.6 -r1.134.6.7 src/sys/net/if_bridge.c
cvs rdiff -u -r1.18.2.3 -r1.18.2.4 src/tests/net/net_common.sh
cvs rdiff -u -r1.17 -r1.17.4.1 src/tests/net/if_bridge/t_bridge.sh
cvs rdiff -u -r1.10.2.1 -r1.10.2.2 src/tests/net/if_gif/t_gif.sh
cvs rdiff -u -r1.3.2.2 -r1.3.2.3 src/tests/net/if_ipsec/t_ipsec.sh
cvs rdiff -u -r1.2.8.1 -r1.2.8.2 src/tests/net/if_l2tp/t_l2tp.sh
cvs rdiff -u -r1.1 -r1.1.8.1 src/tests/net/if_loop/t_basic.sh
cvs rdiff -u -r1.17 -r1.17.4.1 src/tests/net/if_pppoe/t_pppoe.sh
cvs rdiff -u -r1.6 -r1.6.6.1 src/tests/net/if_tap/t_tap.sh
cvs rdiff -u -r1.1 -r1.1.8.1 src/tests/net/if_tun/Makefile
cvs rdiff -u -r1.4 -r1.4.6.1 src/tests/net/if_tun/t_tun.sh
cvs rdiff -u -r1.1.8.1 -r1.1.8.2 src/tests/net/if_vlan/t_vlan.sh

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

Modified files:

Index: src/sys/net/if_bridge.c
diff -u src/sys/net/if_bridge.c:1.134.6.6 src/sys/net/if_bridge.c:1.134.6.7
--- src/sys/net/if_bridge.c:1.134.6.6	Tue Jan 16 13:01:10 2018
+++ src/sys/net/if_bridge.c	Mon Feb 26 00:41:13 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_bridge.c,v 1.134.6.6 2018/01/16 13:01:10 martin Exp $	*/
+/*	$NetBSD: if_bridge.c,v 1.134.6.7 2018/02/26 00:41:13 snj Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -80,7 +80,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.134.6.6 2018/01/16 13:01:10 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.134.6.7 2018/02/26 00:41:13 snj Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_bridge_ipf.h"
@@ -468,11 +468,9 @@ bridge_clone_destroy(struct ifnet *ifp)
 {
 	struct bridge_softc *sc = ifp->if_softc;
 	struct bridge_iflist *bif;
-	int s;
-
-	s = splsoftnet();
 
-	bridge_stop(ifp, 1);
+	if ((ifp->if_flags & IFF_RUNNING) != 0)
+		bridge_stop(ifp, 1);
 
 	BRIDGE_LOCK(sc);
 	for (;;) {
@@ -485,8 +483,6 @@ bridge_clone_destroy(struct ifnet *ifp)
 	PSLIST_DESTROY(&sc->sc_iflist_psref.bip_iflist);
 	BRIDGE_UNLOCK(sc);
 
-	splx(s);
-
 	if_detach(ifp);
 
 	/* Tear down the routing table. */

Index: src/tests/net/net_common.sh
diff -u src/tests/net/net_common.sh:1.18.2.3 src/tests/net/net_common.sh:1.18.2.4
--- src/tests/net/net_common.sh:1.18.2.3	Fri Nov 17 20:43:11 2017
+++ src/tests/net/net_common.sh	Mon Feb 26 00:41:13 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: net_common.sh,v 1.18.2.3 2017/11/17 20:43:11 snj Exp $
+#	$NetBSD: net_common.sh,v 1.18.2.4 2018/02/26 00:41:13 snj Exp $
 #
 # Copyright (c) 2016 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -431,3 +431,45 @@ skip_if_qemu()
 	    atf_skip "unreliable under qemu, skip until PR kern/43997 fixed"
 	fi
 }
+
+test_create_destroy_common()
+{
+	local sock=$1
+	local ifname=$2
+	local test_address=${3:-false}
+	local ipv4="10.0.0.1/24"
+	local ipv6="fc00::1"
+
+	export RUMP_SERVER=$sock
+
+	atf_check -s exit:0 rump.ifconfig $ifname create
+	atf_check -s exit:0 rump.ifconfig $ifname destroy
+
+	atf_check -s exit:0 rump.ifconfig $ifname create
+	atf_check -s exit:0 rump.ifconfig $ifname up
+	atf_check -s exit:0 rump.ifconfig $ifname down
+	atf_check -s exit:0 rump.ifconfig $ifname destroy
+
+	# Destroy while UP
+	atf_check -s exit:0 rump.ifconfig $ifname create
+	atf_check -s exit:0 rump.ifconfig $ifname up
+	atf_check -s exit:0 rump.ifconfig $ifname destroy
+
+	if ! $test_address; then
+		return
+	fi
+
+	# With an IPv4 address
+	atf_check -s exit:0 rump.ifconfig $ifname create
+	atf_check -s exit:0 rump.ifconfig $ifname inet $ipv4
+	atf_check -s exit:0 rump.ifconfig $ifname up
+	atf_check -s exit:0 rump.ifconfig $ifname destroy
+
+	# With an IPv6 address
+	atf_check -s exit:0 rump.ifconfig $ifname create
+	atf_check -s exit:0 rump.ifconfig $ifname inet6 $ipv6
+	atf_check -s exit:0 rump.ifconfig $ifname up
+	atf_check -s exit:0 rump.ifconfig $ifname destroy
+
+	unset RUMP_SERVER
+}

Index: src/tests/net/if_bridge/t_bridge.sh
diff -u src/tests/net/if_bridge/t_bridge.sh:1.17 src/tests/net/if_bridge/t_bridge.sh:1.17.4.1
--- src/tests/net/if_bridge/t_bridge.sh:1.17	Sat Mar 11 04:24:52 2017
+++ src/tests/net/if_bridge/t_bridge.sh	Mon Feb 26 00:41:13 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: t_bridge.sh,v 1.17 2017/03/11 04:24:52 ozaki-r Exp $
+#	$NetBSD: t_bridge.sh,v 1.17.4.1 2018/02/26 00:41:13 snj Exp $
 #
 # Copyright (c) 2014 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -40,11 +40,19 @@ IP6BR2=fc00::12
 DEBUG=${DEBUG:-false}
 TIMEOUT=5
 
+atf_test_case bridge_create_destroy cleanup
 atf_test_case bridge_ipv4 cleanup
 atf_test_case bridge_ipv6 cleanup
 atf_test_case bridge_member_ipv4 cleanup
 atf_test_case bridge_member_ipv6 cleanup
 
+bridge_create_destroy_head()
+{
+
+	atf_set "descr" "Test creating/destroying bridge interfaces"
+	atf_set "require.progs" "rump_server"
+}
+
 bridge_ipv4_head()
 {
 	atf_set "descr" "Does simple if_bridge tests"
@@ -312,6 +320,14 @@ test_ping6_member()
 	rump.ifconfig -v shmif0
 }
 
+bridge_create_destroy_body()
+{
+
+	rump_server_start $SOCK1 bridge
+
+	test_create_destroy_common $SOCK1 bridge0
+}
+
 bridge_ipv4_body()
 {
 	setup
@@ -392,6 +408,13 @@ bridge_member_ipv6_body()
 	rump_server_destroy_ifaces
 }
 
+bridge_create_destroy_cleanup()
+{
+
+	$DEBUG && dump
+	cleanup
+}
+
 bridge_ipv4_cleanup()
 {
 
@@ -422,6 +445,8 @@ bridge_member_ipv6_cleanup()
 
 atf_init_test_cases()
 {
+
+	atf_add_test_case bridge_create_destroy
 	atf_add_test_case bridge_ipv4
 	atf_add_test_case bridge_ipv6
 	atf_add_test_case bridge_member_ipv4

Index: src/tests/net/if_gif/t_gif.sh
diff -u src/tests/net/if_gif/t_gif.sh:1.10.2.1 src/tests/net/if_gif/t_gif.sh:1.10.2.2
--- src/tests/net/if_gif/t_gif.sh:1.10.2.1	Sat Oct 21 19:43:55 2017
+++ src/tests/net/if_gif/t_gif.sh	Mon Feb 26 00:41:13 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: t_gif.sh,v 1.10.2.1 2017/10/21 19:43:55 snj Exp $
+#	$NetBSD: t_gif.sh,v 1.10.2.2 2018/02/26 00:41:13 snj Exp $
 #
 # Copyright (c) 2015 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -64,6 +64,29 @@ ROUTER2_GIFIP6_RECURSIVE2=fc00:204::1
 DEBUG=${DEBUG:-false}
 TIMEOUT=5
 
+atf_test_case gif_create_destroy cleanup
+gif_create_destroy_head()
+{
+
+	atf_set "descr" "Test creating/destroying gif interfaces"
+	atf_set "require.progs" "rump_server"
+}
+
+gif_create_destroy_body()
+{
+
+	rump_server_start $SOCK1 netinet6 gif
+
+	test_create_destroy_common $SOCK1 gif0 true
+}
+
+gif_create_destroy_cleanup()
+{
+
+	$DEBUG && dump
+	cleanup
+}
+
 setup_router()
 {
 	sock=${1}
@@ -757,6 +780,9 @@ add_test_allproto()
 
 atf_init_test_cases()
 {
+
+	atf_add_test_case gif_create_destroy
+
 	add_test_allproto basic "basic tests"
 	add_test_allproto ioctl "ioctl tests"
 	add_test_allproto recursive "recursive check tests"

Index: src/tests/net/if_ipsec/t_ipsec.sh
diff -u src/tests/net/if_ipsec/t_ipsec.sh:1.3.2.2 src/tests/net/if_ipsec/t_ipsec.sh:1.3.2.3
--- src/tests/net/if_ipsec/t_ipsec.sh:1.3.2.2	Sun Feb 11 21:17:35 2018
+++ src/tests/net/if_ipsec/t_ipsec.sh	Mon Feb 26 00:41:13 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: t_ipsec.sh,v 1.3.2.2 2018/02/11 21:17:35 snj Exp $
+#	$NetBSD: t_ipsec.sh,v 1.3.2.3 2018/02/26 00:41:13 snj Exp $
 #
 # Copyright (c) 2017 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -64,6 +64,29 @@ ROUTER2_IPSECIP6_RECURSIVE2=fc00:204::1
 DEBUG=${DEBUG:-false}
 TIMEOUT=7
 
+atf_test_case ipsecif_create_destroy cleanup
+ipsecif_create_destroy_head()
+{
+
+	atf_set "descr" "Test creating/destroying gif interfaces"
+	atf_set "require.progs" "rump_server"
+}
+
+ipsecif_create_destroy_body()
+{
+
+	rump_server_start $SOCK1 ipsec
+
+	test_create_destroy_common $SOCK1 ipsec0
+}
+
+ipsecif_create_destroy_cleanup()
+{
+
+	$DEBUG && dump
+	cleanup
+}
+
 setup_router()
 {
 	local sock=${1}
@@ -919,6 +942,9 @@ add_test_allproto()
 
 atf_init_test_cases()
 {
+
+	atf_add_test_case ipsecif_create_destroy
+
 	add_test_allproto basic "basic tests"
 	add_test_allproto ioctl "ioctl tests"
 	add_test_allproto recursive "recursive check tests"

Index: src/tests/net/if_l2tp/t_l2tp.sh
diff -u src/tests/net/if_l2tp/t_l2tp.sh:1.2.8.1 src/tests/net/if_l2tp/t_l2tp.sh:1.2.8.2
--- src/tests/net/if_l2tp/t_l2tp.sh:1.2.8.1	Sat Oct 21 19:43:55 2017
+++ src/tests/net/if_l2tp/t_l2tp.sh	Mon Feb 26 00:41:13 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: t_l2tp.sh,v 1.2.8.1 2017/10/21 19:43:55 snj Exp $
+#	$NetBSD: t_l2tp.sh,v 1.2.8.2 2018/02/26 00:41:13 snj Exp $
 #
 # Copyright (c) 2017 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -49,6 +49,29 @@ CLIENT2_LANIP6=fc00:1::2
 TIMEOUT=5
 DEBUG=${DEBUG:-false}
 
+atf_test_case l2tp_create_destroy cleanup
+l2tp_create_destroy_head()
+{
+
+	atf_set "descr" "Test creating/destroying l2tp interfaces"
+	atf_set "require.progs" "rump_server"
+}
+
+l2tp_create_destroy_body()
+{
+
+	rump_server_start $LAC1SOCK l2tp
+
+	test_create_destroy_common $LAC1SOCK l2tp0
+}
+
+l2tp_create_destroy_cleanup()
+{
+
+	$DEBUG && dump
+	cleanup
+}
+
 setup_lac()
 {
 	sock=${1}
@@ -435,6 +458,9 @@ add_test_allproto()
 
 atf_init_test_cases()
 {
+
+	atf_add_test_case l2tp_create_destroy
+
 	add_test_allproto basic "basic tests"
 #	add_test_allproto recursive "recursive check tests"
 }

Index: src/tests/net/if_loop/t_basic.sh
diff -u src/tests/net/if_loop/t_basic.sh:1.1 src/tests/net/if_loop/t_basic.sh:1.1.8.1
--- src/tests/net/if_loop/t_basic.sh:1.1	Tue Feb 28 03:32:11 2017
+++ src/tests/net/if_loop/t_basic.sh	Mon Feb 26 00:41:14 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: t_basic.sh,v 1.1 2017/02/28 03:32:11 ozaki-r Exp $
+#	$NetBSD: t_basic.sh,v 1.1.8.1 2018/02/26 00:41:14 snj Exp $
 #
 # Copyright (c) 2017 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -41,12 +41,7 @@ loop_create_destroy_body()
 
 	rump_server_start $SOCK_LOCAL netinet6
 
-	export RUMP_SERVER=${SOCK_LOCAL}
-
-	atf_check -s exit:0 rump.ifconfig lo1 create
-	atf_check -s exit:0 rump.ifconfig lo1 up
-	atf_check -s exit:0 rump.ifconfig lo1 down
-	atf_check -s exit:0 rump.ifconfig lo1 destroy
+	test_create_destroy_common $SOCK_LOCAL lo1 true
 }
 
 loop_create_destroy_cleanup()

Index: src/tests/net/if_pppoe/t_pppoe.sh
diff -u src/tests/net/if_pppoe/t_pppoe.sh:1.17 src/tests/net/if_pppoe/t_pppoe.sh:1.17.4.1
--- src/tests/net/if_pppoe/t_pppoe.sh:1.17	Tue Mar 28 01:27:46 2017
+++ src/tests/net/if_pppoe/t_pppoe.sh	Mon Feb 26 00:41:14 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: t_pppoe.sh,v 1.17 2017/03/28 01:27:46 ozaki-r Exp $
+#	$NetBSD: t_pppoe.sh,v 1.17.4.1 2018/02/26 00:41:14 snj Exp $
 #
 # Copyright (c) 2016 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -39,6 +39,29 @@ TIMEOUT=3
 WAITTIME=10
 DEBUG=${DEBUG:-false}
 
+atf_test_case pppoe_create_destroy cleanup
+pppoe_create_destroy_head()
+{
+
+	atf_set "descr" "Test creating/destroying pppoe interfaces"
+	atf_set "require.progs" "rump_server"
+}
+
+pppoe_create_destroy_body()
+{
+
+	rump_server_start $CLIENT netinet6 pppoe
+
+	test_create_destroy_common $CLIENT pppoe0 true
+}
+
+pppoe_create_destroy_cleanup()
+{
+
+	$DEBUG && dump
+	cleanup
+}
+
 setup()
 {
 	inet=true
@@ -403,6 +426,8 @@ pppoe6_chap_cleanup()
 
 atf_init_test_cases()
 {
+
+	atf_add_test_case pppoe_create_destroy
 	atf_add_test_case pppoe_pap
 	atf_add_test_case pppoe_chap
 	atf_add_test_case pppoe6_pap

Index: src/tests/net/if_tap/t_tap.sh
diff -u src/tests/net/if_tap/t_tap.sh:1.6 src/tests/net/if_tap/t_tap.sh:1.6.6.1
--- src/tests/net/if_tap/t_tap.sh:1.6	Fri Nov 25 08:51:16 2016
+++ src/tests/net/if_tap/t_tap.sh	Mon Feb 26 00:41:14 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: t_tap.sh,v 1.6 2016/11/25 08:51:16 ozaki-r Exp $
+#	$NetBSD: t_tap.sh,v 1.6.6.1 2018/02/26 00:41:14 snj Exp $
 #
 # Copyright (c) 2016 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -51,23 +51,7 @@ tap_create_destroy_body()
 
 	rump_server_start $SOCK_LOCAL netinet6 tap
 
-	export RUMP_SERVER=${SOCK_LOCAL}
-
-	# Create and destroy (no address)
-	atf_check -s exit:0 rump.ifconfig tap0 create
-	atf_check -s exit:0 rump.ifconfig tap0 destroy
-
-	# Create and destroy (with an IPv4 address)
-	atf_check -s exit:0 rump.ifconfig tap0 create
-	atf_check -s exit:0 rump.ifconfig tap0 $IP4_TAP
-	atf_check -s exit:0 rump.ifconfig tap0 up
-	atf_check -s exit:0 rump.ifconfig tap0 destroy
-
-	# Create and destroy (with an IPv6 address)
-	atf_check -s exit:0 rump.ifconfig tap0 create
-	atf_check -s exit:0 rump.ifconfig tap0 inet6 $IP6_TAP
-	atf_check -s exit:0 rump.ifconfig tap0 up
-	atf_check -s exit:0 rump.ifconfig tap0 destroy
+	test_create_destroy_common $SOCK_LOCAL tap0 true
 }
 
 tap_create_destroy_cleanup()

Index: src/tests/net/if_tun/Makefile
diff -u src/tests/net/if_tun/Makefile:1.1 src/tests/net/if_tun/Makefile:1.1.8.1
--- src/tests/net/if_tun/Makefile:1.1	Mon Sep  5 02:26:48 2016
+++ src/tests/net/if_tun/Makefile	Mon Feb 26 00:41:14 2018
@@ -1,10 +1,13 @@
-# $NetBSD: Makefile,v 1.1 2016/09/05 02:26:48 ozaki-r Exp $
+# $NetBSD: Makefile,v 1.1.8.1 2018/02/26 00:41:14 snj Exp $
 #
 
 .include <bsd.own.mk>
 
 TESTSDIR=	${TESTSBASE}/net/if_tun
 
-TESTS_SH=	t_tun
+.for name in tun
+TESTS_SH+=		t_${name}
+TESTS_SH_SRC_t_${name}=	../net_common.sh t_${name}.sh
+.endfor
 
 .include <bsd.test.mk>

Index: src/tests/net/if_tun/t_tun.sh
diff -u src/tests/net/if_tun/t_tun.sh:1.4 src/tests/net/if_tun/t_tun.sh:1.4.6.1
--- src/tests/net/if_tun/t_tun.sh:1.4	Mon Nov  7 05:25:37 2016
+++ src/tests/net/if_tun/t_tun.sh	Mon Feb 26 00:41:14 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: t_tun.sh,v 1.4 2016/11/07 05:25:37 ozaki-r Exp $
+#	$NetBSD: t_tun.sh,v 1.4.6.1 2018/02/26 00:41:14 snj Exp $
 #
 # Copyright (c) 2016 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -49,12 +49,7 @@ tun_create_destroy_body()
 
 	atf_check -s exit:0 rump_server ${RUMP_FLAGS} ${SOCK_LOCAL}
 
-	export RUMP_SERVER=${SOCK_LOCAL}
-
-	atf_check -s exit:0 rump.ifconfig tun0 create
-	atf_check -s exit:0 rump.ifconfig tun0 up
-	atf_check -s exit:0 rump.ifconfig tun0 down
-	atf_check -s exit:0 rump.ifconfig tun0 destroy
+	test_create_destroy_common $SOCK_LOCAL tun0
 }
 
 tun_create_destroy_cleanup()

Index: src/tests/net/if_vlan/t_vlan.sh
diff -u src/tests/net/if_vlan/t_vlan.sh:1.1.8.1 src/tests/net/if_vlan/t_vlan.sh:1.1.8.2
--- src/tests/net/if_vlan/t_vlan.sh:1.1.8.1	Wed Nov 22 16:45:35 2017
+++ src/tests/net/if_vlan/t_vlan.sh	Mon Feb 26 00:41:14 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: t_vlan.sh,v 1.1.8.1 2017/11/22 16:45:35 martin Exp $
+#	$NetBSD: t_vlan.sh,v 1.1.8.2 2018/02/26 00:41:14 snj Exp $
 #
 # Copyright (c) 2016 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -44,6 +44,9 @@ vlan_create_destroy_body_common()
 	export RUMP_SERVER=${SOCK_LOCAL}
 
 	atf_check -s exit:0 rump.ifconfig vlan0 create
+	atf_check -s exit:0 rump.ifconfig vlan0 destroy
+
+	atf_check -s exit:0 rump.ifconfig vlan0 create
 	atf_check -s exit:0 rump.ifconfig vlan0 up
 	atf_check -s exit:0 rump.ifconfig vlan0 down
 	atf_check -s exit:0 rump.ifconfig vlan0 destroy

Reply via email to