From owner-freebsd-bugs@FreeBSD.ORG Tue Jan 19 16:00:20 2010 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4679B106568B for ; Tue, 19 Jan 2010 16:00:20 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 0F39A8FC14 for ; Tue, 19 Jan 2010 16:00:20 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.3/8.14.3) with ESMTP id o0JG0Jre082408 for ; Tue, 19 Jan 2010 16:00:19 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.3/8.14.3/Submit) id o0JG0JlW082406; Tue, 19 Jan 2010 16:00:19 GMT (envelope-from gnats) Resent-Date: Tue, 19 Jan 2010 16:00:19 GMT Resent-Message-Id: <201001191600.o0JG0JlW082406@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, BERARD David Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9A46010656A3 for ; Tue, 19 Jan 2010 15:51:27 +0000 (UTC) (envelope-from david@releaser.nfrance.com) Received: from releaser.nfrance.com (cl-62.mrs-01.fr.sixxs.net [IPv6:2a01:240:fe00:3d::2]) by mx1.freebsd.org (Postfix) with ESMTP id 076288FC24 for ; Tue, 19 Jan 2010 15:51:26 +0000 (UTC) Received: from releaser.nfrance.com (localhost [127.0.0.1]) by releaser.nfrance.com (8.14.3/8.14.3) with ESMTP id o0JFpOB9014787; Tue, 19 Jan 2010 16:51:24 +0100 (CET) (envelope-from david@releaser.nfrance.com) Received: (from david@localhost) by releaser.nfrance.com (8.14.3/8.14.3/Submit) id o0JFpOeg014786; Tue, 19 Jan 2010 16:51:24 +0100 (CET) (envelope-from david) Message-Id: <201001191551.o0JFpOeg014786@releaser.nfrance.com> Date: Tue, 19 Jan 2010 16:51:24 +0100 (CET) From: BERARD David To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: laurent@sintes.org Subject: conf/142972: Support JAILv2 and vnet in rc.d/jail X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: BERARD David List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jan 2010 16:00:20 -0000 >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: