Date: Tue, 19 Jan 2010 16:51:24 +0100 (CET) From: BERARD David <david@nfrance.com> To: FreeBSD-gnats-submit@FreeBSD.org Cc: laurent@sintes.org Subject: conf/142972: Support JAILv2 and vnet in rc.d/jail Message-ID: <201001191551.o0JFpOeg014786@releaser.nfrance.com> Resent-Message-ID: <201001191600.o0JG0JlW082406@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 142972 >Category: conf >Synopsis: Support JAILv2 and vnet in rc.d/jail >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Jan 19 16:00:18 UTC 2010 >Closed-Date: >Last-Modified: >Originator: BERARD David >Release: FreeBSD 8.0-RELEASE >Organization: NFrance Conseil >Environment: System: FreeBSD releaser.nfrance.com 8.0-RELEASE-p2 FreeBSD 8.0-RELEASE-p2 #0: Mon Jan 18 17:32:06 CET 2010 root@releaser.nfrance.com:/usr/obj/usr/src/sys/LAB i386 >Description: The current /etc/rc.d/jail doesn't support the new jail parameter style. It doesn't support vnet (VIMAGE) and jail name. >How-To-Repeat: Try to run a vnet compliant jail with rc.conf >Fix: See the attached patch --- jailv2rc.patch begins here --- --- /usr/src/etc/rc.d/jail 2009-10-25 02:10:29.000000000 +0100 +++ /usr/src/etc/rc.d/jail 2010-01-19 16:14:43.000000000 +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\" @@ -95,6 +96,9 @@ fi fi + # JAIL new style + eval _v2=\"\${jail_v2_enable:-"NO"}\" + # The default jail ruleset will be used by rc.subr if none is specified. eval _ruleset=\"\${jail_${_j}_devfs_ruleset:-${jail_devfs_ruleset}}\" eval _devfs=\"\${jail_${_j}_devfs_enable:-${jail_devfs_enable}}\" @@ -110,18 +114,26 @@ 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" + if checkyesno _v2; then + [ -z "${_flags}" ] && _flags="-l -U root -c" + else + [ -z "${_flags}" ] && _flags="-l -U root" + fi 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 # + debug "$_j v2 enable: $_v2" debug "$_j devfs enable: $_devfs" 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" @@ -635,11 +647,26 @@ i=$((i + 1)) done - eval ${_setfib} jail ${_flags} -i ${_rootdir} ${_hostname} \ - \"${_addrl}\" ${_exec_start} > ${_tmp_jail} 2>&1 - + if checkyesno _v2; then + _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=\"${_addrl}\"" + fi + _start_cmd="${_start_cmd} command=${_exec_start}" + eval ${_start_cmd} > /dev/null 2>&1 + else + eval ${_setfib} jail ${_flags} -i ${_rootdir} ${_hostname} \ + \"${_addrl}\" ${_exec_start} > ${_tmp_jail} 2>&1 + fi if [ "$?" -eq 0 ] ; then - _jail_id=$(head -1 ${_tmp_jail}) + if checkyesno _v2; then + _jail_id=$(awk -F '=| ' '{print $2}' ${_tmp_jail}) + else + _jail_id=$(head -1 ${_tmp_jail}) + fi i=1 while : ; do eval out=\"\${_exec_afterstart${i}:-''}\" --- jailv2rc.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001191551.o0JFpOeg014786>