git: 8d83b10345da - main - New version of jng (9.1)
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 20 Aug 2026 04:41:37 UTC
The branch main has been updated by dteske:
URL: https://cgit.FreeBSD.org/src/commit/?id=8d83b10345da101e4a24a38c90d99a0df0f48b3b
commit 8d83b10345da101e4a24a38c90d99a0df0f48b3b
Author: Devin Teske <dteske@FreeBSD.org>
AuthorDate: 2026-08-20 04:39:23 +0000
Commit: Devin Teske <dteske@FreeBSD.org>
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)