git: 8d83b10345da - main - New version of jng (9.1)

Devin Teske <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.src
Message-ID <6a868581.3a4a4.60319146__28557.3900024005$1787200916$gmane$org@gitrepo.freebsd.org>
The branch main has been updated by dteske:

URL: https://cgit.FreeBSD.org/src/commit/?id=8d83b10345da101e4a24a38c90d99a0df0f48b3b

commit 8d83b10345da101e4a24a38c90d99a0df0f48b3b
Author:     Devin Teske <[email protected]>
AuthorDate: 2026-08-20 04:39:23 +0000
Commit:     Devin Teske <[email protected]>
CommitDate: 2026-08-20 04:39:34 +0000

    New version of jng (9.1)
    
    Update examples and comments to return eifaces in exec.prestop
    with ifconfig -vnet (before jng shutdown in poststop).
    
    Reported by:    jlduran
    PR:             268397
    MFC after:      1 week
    Reviewed by:    kfv, jlduran
    Differential Revision:  https://reviews.freebsd.org/D58939
---
 share/examples/jails/jail.xxx.conf   |  3 ++-
 share/examples/jails/jng             | 18 ++++++++++++------
 share/examples/jails/rc.conf.jails   |  2 ++
 share/examples/jails/rcjail.xxx.conf |  3 ++-
 4 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/share/examples/jails/jail.xxx.conf b/share/examples/jails/jail.xxx.conf
index 8ada4aa0dd9d..a007ba51c87d 100644
--- a/share/examples/jails/jail.xxx.conf
+++ b/share/examples/jails/jail.xxx.conf
@@ -8,12 +8,13 @@ xxx {
 	exec.jail_user = "root";
 
 	#
-	# NB: Below 4-lines required
+	# NB: Below lines required
 	#
 	vnet;
 	# netgraph
 	vnet.interface = "ng0_xxx";		# vnet interface(s)
 	exec.prestart += "jng bridge xxx em0";	# bridge interface(s)
+	exec.prestop += "ifconfig ng0_xxx -vnet xxx";	# return ifnet(s)
 	exec.poststop += "jng shutdown xxx";	# destroy interface(s)
 	# if_bridge
 	#vnet.interface = "e0b_xxx";		# vnet interface(s)
diff --git a/share/examples/jails/jng b/share/examples/jails/jng
index 82f1dd7b5e94..0d997588369a 100755
--- a/share/examples/jails/jng
+++ b/share/examples/jails/jng
@@ -7,14 +7,14 @@
 ############################################################ IDENT(1)
 #
 # $Title: netgraph(4) management script for vnet jails $
-# $Version: 9.0 $
+# $Version: 9.1 $
 #
 ############################################################ INFORMATION
 #
 # Use this tool with jail.conf(5) (or rc.conf(5) ``legacy'' configuration) to
 # manage `vnet' interfaces for jails. Designed to automate the creation of vnet
-# interface(s) during jail `prestart' and destroy said interface(s) during jail
-# `poststop'.
+# interface(s) during jail `prestart', return them to the host during jail
+# `prestop', and destroy said interface(s) during jail `poststop'.
 #
 # In jail.conf(5) format:
 #
@@ -37,11 +37,15 @@
 # 	exec.jail_user = "root";
 # 
 # 	#
-# 	# NB: Below 2-lines required
+# 	# NB: Below lines required
 # 	# NB: The number of arguments after `jng bridge xxx' should match
 # 	#     the number of ngN_xxx arguments in vnet.interface value.
+# 	# NB: Return each ngN_xxx to the host in prestop so the kernel does
+# 	#     not move it during jail removal (BPF race). Destroy in poststop.
 # 	#
 # 	exec.prestart += "jng bridge xxx em0 em1 ...";
+# 	exec.prestop += "ifconfig ng0_xxx -vnet xxx";
+# 	exec.prestop += "ifconfig ng1_xxx -vnet xxx";
 # 	exec.poststop += "jng shutdown xxx";
 # 
 # 	# Standard recipe
@@ -84,7 +88,9 @@
 # jail_xxx_rootdir="/vm/xxx"			# root directory
 # jail_xxx_vnet_interfaces="ng0_xxx ng1xxx ..."	# vnet interface(s)
 # jail_xxx_exec_prestart0="jng bridge xxx em0 em1 ..."	# bridge interface(s)
-# jail_xxx_exec_poststop0="jng shutdown xxx"	# destroy interface(s)
+# jail_xxx_exec_prestop0="ifconfig ng0_xxx -vnet xxx"	# return ifnet(s)
+# jail_xxx_exec_prestop1="ifconfig ng1_xxx -vnet xxx"
+# jail_xxx_exec_poststop0="jng shutdown xxx"		# destroy interface(s)
 # #jail_xxx_mount_enable="YES"			# mount /etc/fstab.xxx
 # #jail_xxx_devfs_ruleset="11"			# rule to unhide bpf for DHCP
 #
@@ -132,7 +138,7 @@ NG_BRIDGE_MAX_STALENESS=4294967295
 
 ############################################################ GLOBALS
 
-VERSION='$Version: 9.0 $'
+VERSION='$Version: 9.1 $'
 
 pgm="${0##*/}" # Program basename
 
diff --git a/share/examples/jails/rc.conf.jails b/share/examples/jails/rc.conf.jails
index b1e0d6187b4e..872ab66d7fc2 100644
--- a/share/examples/jails/rc.conf.jails
+++ b/share/examples/jails/rc.conf.jails
@@ -35,6 +35,7 @@ jail_devfs_enable="YES"		# mount devfs
 #jail_{name}_rootdir="/vm/{name}"		# root directory
 #jail_{name}_vnet_interfaces="ng0_{name}"	# vnet interface(s)
 #jail_{name}_exec_prestart0="jng bridge {name} em0"	# bridge interface(s)
+#jail_{name}_exec_prestop0="ifconfig ng0_{name} -vnet {name}" # return ifnet(s)
 #jail_{name}_exec_poststop0="jng shutdown {name}"	# destroy interface(s)
 # Optional (default off)
 #jail_{name}_devfs_ruleset="11"			# rule to unhide bpf for DHCP
@@ -61,6 +62,7 @@ jail_XXX_rootdir="/vm/XXX"			# root directory
 # netgraph
 jail_XXX_vnet_interface="ng0_XXX"		# vnet interface(s)
 jail_XXX_exec_prestart0="jng bridge XXX em0"	# bridge interface(s)
+jail_XXX_exec_prestop0="ifconfig ng0_XXX -vnet XXX"	# return ifnet(s)
 jail_XXX_exec_poststop0="jng shutdown XXX"	# destroy interface(s)
 # if_bridge
 #jail_XXX_vnet_interface="e0b_XXX"		# vnet interface(s)
diff --git a/share/examples/jails/rcjail.xxx.conf b/share/examples/jails/rcjail.xxx.conf
index 8757219a97f3..0ca271ddf9b6 100644
--- a/share/examples/jails/rcjail.xxx.conf
+++ b/share/examples/jails/rcjail.xxx.conf
@@ -3,11 +3,12 @@ jail_XXX_hostname="XXX.YYY"			# hostname
 jail_XXX_rootdir="/vm/XXX"			# root directory
 
 #
-# NB: Below 3 lines required
+# NB: Below lines required
 #
 # netgraph
 jail_XXX_vnet_interface="ng0_XXX"		# vnet interface(s)
 jail_XXX_exec_prestart0="jng bridge XXX em0"	# bridge interface(s)
+jail_XXX_exec_prestop0="ifconfig ng0_XXX -vnet XXX"	# return ifnet(s)
 jail_XXX_exec_poststop0="jng shutdown XXX"	# destroy interface(s)
 # if_bridge
 #jail_XXX_vnet_interface="e0b_XXX"		# vnet interface(s)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.