conf/142972: [jail] [patch] Support JAILv2 and vnet in rc.d/jail
Philipp Wuensche
cryx-freebsd at h3q.com
Thu Jan 21 14:11:36 UTC 2010
David BERARD wrote:
> +
> + # Append address to list of addresses for the jail comman=
> d.
> + case "${_type}" in
> + "inet") case "${_addrlv4}" in
> + "") _addrlv4=3D"${_addr}" ;;
> + *) _addrlv4=3D"${_addrlv4},${_addr}" ;;
> + esac;;
> + "inet6") case "${_addrlv6}" in
> + "") _addrlv6=3D"${_addr}" ;;
> + *) _addrlv6=3D"${_addrlv6},${_addr}" ;;
> + esac;;
> + esac
> +
If you are converting the old-style ip-addresses into the new-style
format, why not ditch old-style jail stuff at all and do everything in
new-style?
And shouldn't we implement all the new-style features while we at it?
All the allow.* stuff, cpuset etc.
greeting,
philipp
-------------- next part --------------
--- /usr/src/etc/jail 2010-01-21 14:55:57.907587199 +0100
+++ /sur/src/etc/jail 2010-01-21 15:05:10.108010157 +0100
@@ -38,6 +38,7 @@
_fdescdir="${_devdir}/fd"
_procdir="${_rootdir}/proc"
eval _hostname=\"\$jail_${_j}_hostname\"
+ eval _name=\"\$jail_${_j}_name\"
eval _ip=\"\$jail_${_j}_ip\"
eval _interface=\"\${jail_${_j}_interface:-${jail_interface}}\"
eval _exec=\"\$jail_${_j}_exec\"
@@ -110,10 +111,11 @@
eval _fstab=\"\${jail_${_j}_fstab:-${jail_fstab}}\"
[ -z "${_fstab}" ] && _fstab="/etc/fstab.${_j}"
eval _flags=\"\${jail_${_j}_flags:-${jail_flags}}\"
- [ -z "${_flags}" ] && _flags="-l -U root"
+ [ -z "${_flags}" ] && _flags="-l -U root -c"
eval _consolelog=\"\${jail_${_j}_consolelog:-${jail_consolelog}}\"
[ -z "${_consolelog}" ] && _consolelog="/var/log/jail_${_j}_console.log"
eval _fib=\"\${jail_${_j}_fib:-${jail_fib}}\"
+ eval _vnet=\"\${jail_${_j}_vnet_enable:-"NO"}\"
# Debugging aid
#
@@ -121,7 +123,9 @@
debug "$_j fdescfs enable: $_fdescfs"
debug "$_j procfs enable: $_procfs"
debug "$_j mount enable: $_mount"
+ debug "$_j vnet enable: $_vnet"
debug "$_j hostname: $_hostname"
+ debug "$_j name: $_name"
debug "$_j ip: $_ip"
jail_show_addresses ${_j}
debug "$_j interface: $_interface"
@@ -481,10 +485,16 @@
*) ;;
esac
- # Append address to list of addresses for the jail command.
- case "${_addrl}" in
- "") _addrl="${_addr}" ;;
- *) _addrl="${_addrl},${_addr}" ;;
+ # Append address to list of addresses for the jail command.
+ case "${_type}" in
+ "inet") case "${_addrlv4}" in
+ "") _addrlv4="${_addr}" ;;
+ *) _addrlv4="${_addrlv4},${_addr}" ;;
+ esac;;
+ "inet6") case "${_addrlv6}" in
+ "") _addrlv6="${_addr}" ;;
+ *) _addrlv6="${_addrlv6},${_addr}" ;;
+ esac;;
esac
# Configure interface alias if requested by a given interface
@@ -566,7 +576,8 @@
echo -n " [${_hostname} already running (/var/run/jail_${_jail}.id exists)]"
continue;
fi
- _addrl=""
+ _addrlv4=""
+ _addrlv6=""
jail_ips "add"
if [ -n "${_fib}" ]; then
_setfib="setfib -F '${_fib}'"
@@ -635,11 +646,19 @@
i=$((i + 1))
done
- eval ${_setfib} jail ${_flags} -i ${_rootdir} ${_hostname} \
- \"${_addrl}\" ${_exec_start} > ${_tmp_jail} 2>&1
+ _start_cmd="${_setfib} jail -J ${_tmp_jail} ${_flags} path=${_rootdir} host.hostname=${_hostname} \
+ name=\"${_name}\""
+ if checkyesno _vnet; then
+ _start_cmd="${_start_cmd} vnet"
+ else
+ _start_cmd="${_start_cmd} ip4.addr=\"${_addrlv4}\" ip6.addr=\"${_addrlv6}\""
+ fi
+ _start_cmd="${_start_cmd} command=${_exec_start}"
+ eval ${_start_cmd} > /dev/null 2>&1
+
if [ "$?" -eq 0 ] ; then
- _jail_id=$(head -1 ${_tmp_jail})
+ _jail_id=$(awk -F '=| ' '{print $2}' ${_tmp_jail})
i=1
while : ; do
eval out=\"\${_exec_afterstart${i}:-''}\"
More information about the freebsd-jail
mailing list