Page MenuHomeFreeBSD

D58939.diff
No OneTemporary

D58939.diff

diff --git a/share/examples/jails/jail.xxx.conf b/share/examples/jails/jail.xxx.conf
--- a/share/examples/jails/jail.xxx.conf
+++ b/share/examples/jails/jail.xxx.conf
@@ -8,12 +8,13 @@
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
--- 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 @@
############################################################ 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
--- a/share/examples/jails/rc.conf.jails
+++ b/share/examples/jails/rc.conf.jails
@@ -35,6 +35,7 @@
#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 @@
# 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
--- a/share/examples/jails/rcjail.xxx.conf
+++ b/share/examples/jails/rcjail.xxx.conf
@@ -3,11 +3,12 @@
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)

File Metadata

Mime Type
text/plain
Expires
Sun, Aug 23, 1:52 PM (11 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37142270
Default Alt Text
D58939.diff (4 KB)

Event Timeline