svn commit: r241801 - in stable/9/etc: defaults rc.d

Jun Kuriyama kuriyama at FreeBSD.org
Sun Oct 21 10:19:08 UTC 2012


Author: kuriyama
Date: Sun Oct 21 10:19:07 2012
New Revision: 241801
URL: http://svn.freebsd.org/changeset/base/241801

Log:
  MFC r239382:
  
  - Allow to pass extra parameters for each jails.
  - To achieve above, convert jail(8) invocation to use new style
    command line "-c" flag.

Modified:
  stable/9/etc/defaults/rc.conf
  stable/9/etc/rc.d/jail
Directory Properties:
  stable/9/etc/   (props changed)

Modified: stable/9/etc/defaults/rc.conf
==============================================================================
--- stable/9/etc/defaults/rc.conf	Sun Oct 21 09:46:02 2012	(r241800)
+++ stable/9/etc/defaults/rc.conf	Sun Oct 21 10:19:07 2012	(r241801)
@@ -702,6 +702,7 @@ jail_sysvipc_allow="NO"	# Allow SystemV 
 #jail_example_mount_enable="NO"			# mount/umount jail's fs
 #jail_example_fstab=""				# fstab(5) for mount/umount
 #jail_example_flags="-l -U root"		# flags for jail(8)
+#jail_example_parameters="allow.raw_sockets=1"	# extra parameters for this jail
 
 ##############################################################
 ### Define source_rc_confs, the mechanism used by /etc/rc.* ##

Modified: stable/9/etc/rc.d/jail
==============================================================================
--- stable/9/etc/rc.d/jail	Sun Oct 21 09:46:02 2012	(r241800)
+++ stable/9/etc/rc.d/jail	Sun Oct 21 10:19:07 2012	(r241801)
@@ -115,6 +115,8 @@ init_variables()
 	[ -z "${_flags}" ] && _flags="-l -U root"
 	eval _consolelog=\"\${jail_${_j}_consolelog:-${jail_consolelog}}\"
 	[ -z "${_consolelog}" ] && _consolelog="/var/log/jail_${_j}_console.log"
+	eval _parameters=\"\${jail_${_j}_parameters:-${jail_parameters}}\"
+	[ -z "${_parameters}" ] && _parameters=""
 	eval _fib=\"\${jail_${_j}_fib:-${jail_fib}}\"
 
 	# Debugging aid
@@ -193,6 +195,7 @@ init_variables()
 
 	debug "$_j flags: $_flags"
 	debug "$_j consolelog: $_consolelog"
+	debug "$_j parameters: $_parameters"
 
 	if [ -z "${_hostname}" ]; then
 		err 3 "$name: No hostname has been defined for ${_j}"
@@ -484,9 +487,19 @@ jail_handle_ips_option()
 		esac
 
 		# Append address to list of addresses for the jail command.
-		case "${_addrl}" in
-		"")	_addrl="${_addr}" ;;
-		*)	_addrl="${_addrl},${_addr}" ;;
+		case "${_type}" in
+		inet)
+			case "${_addrl}" in
+			"")	_addrl="${_addr}" ;;
+			*)	_addrl="${_addrl},${_addr}" ;;
+			esac
+			;;
+		inet6)
+			case "${_addr6l}" in
+			"")	_addr6l="${_addr}" ;;
+			*)	_addr6l="${_addr6l},${_addr}" ;;
+			esac
+			;;
 		esac
 
 		# Configure interface alias if requested by a given interface
@@ -576,6 +589,7 @@ jail_start()
 			continue;
 		fi
 		_addrl=""
+		_addr6l=""
 		jail_ips "add"
 		if [ -n "${_fib}" ]; then
 			_setfib="setfib -F '${_fib}'"
@@ -641,8 +655,8 @@ jail_start()
 			i=$((i + 1))
 		done
 
-		eval ${_setfib} jail -n ${_jail} ${_flags} -i ${_rootdir} ${_hostname} \
-			\"${_addrl}\" ${_exec_start} > ${_tmp_jail} 2>&1 \
+		eval ${_setfib} jail -n ${_jail} ${_flags} -i -c path=${_rootdir} host.hostname=${_hostname} \
+			ip4.addr=\"${_addrl}\" ip6.addr=\"${_addr6l}\" ${_parameters} command=${_exec_start} > ${_tmp_jail} 2>&1 \
 			</dev/null
 
 		if [ "$?" -eq 0 ] ; then


More information about the svn-src-stable-9 mailing list