summaryrefslogtreecommitdiffstats
path: root/etc/rc.d
diff options
context:
space:
mode:
authorhrs <hrs@FreeBSD.org>2013-10-14 11:05:13 +0000
committerhrs <hrs@FreeBSD.org>2013-10-14 11:05:13 +0000
commit9522702ff04846e0c2d130004c4036fd85c1d95f (patch)
treeb562db1fcbfb4979e444bf6e88179c2253f6ad8d /etc/rc.d
parent05dba22165eae87c831567eb41dafa3094b4db12 (diff)
downloadFreeBSD-src-9522702ff04846e0c2d130004c4036fd85c1d95f.zip
FreeBSD-src-9522702ff04846e0c2d130004c4036fd85c1d95f.tar.gz
- Normalize jailname. "example.com" is converted to "example_com".
- Fix a bug that some $jail_{jname}_foo variables did not work. - Fix a bug which prevented $jail_devfs_ruleset from working[1]. - Move $jail_parameters to the last of the configuraiton lines[1]. Reported by: Jase Thew[1] Approved by: re (glebius)
Diffstat (limited to 'etc/rc.d')
-rwxr-xr-xetc/rc.d/jail54
1 files changed, 34 insertions, 20 deletions
diff --git a/etc/rc.d/jail b/etc/rc.d/jail
index c935fac..ab9d565 100755
--- a/etc/rc.d/jail
+++ b/etc/rc.d/jail
@@ -94,7 +94,7 @@ extract_var()
#
parse_options()
{
- local _j
+ local _j _p
_j=$1
_confwarn=0
@@ -166,7 +166,7 @@ parse_options()
jail_handle_ips_option $_ip $_interface
alias=0
while : ; do
- eval _x=\"\$jail_${_jail}_ip_multi${alias}\"
+ eval _x=\"\$jail_${_j}_ip_multi${alias}\"
[ -z "$_x" ] && break
jail_handle_ips_option $_x $_interface
@@ -208,6 +208,7 @@ parse_options()
eval : \${jail_${_j}_devfs_enable:=${jail_devfs_enable:-NO}}
if checkyesno jail_${_j}_devfs_enable; then
echo " mount.devfs;"
+ eval _ruleset=\${jail_${_j}_devfs_ruleset:-${jail_devfs_ruleset}}
case $_ruleset in
"") ;;
[0-9]*) echo " devfs_ruleset = \"$_ruleset\";" ;;
@@ -217,7 +218,7 @@ parse_options()
# mount(8) only accepts an integer.
# This should accept a ruleset name.
;;
- *) warn "devfs_ruleset must be integer." ;;
+ *) warn "devfs_ruleset must be an integer." ;;
esac
if [ -r $_fstab ]; then
echo " mount.fstab = \"$_fstab\";"
@@ -234,8 +235,6 @@ parse_options()
"\"procfs ${_rootdir%/}/proc procfs rw 0 0\";"
fi
- echo " ${_parameters};"
-
eval : \${jail_${_j}_mount_enable:=${jail_mount_enable:-NO}}
if checkyesno jail_${_j}_mount_enable; then
echo " allow.mount;" >> $_conf
@@ -243,6 +242,9 @@ parse_options()
extract_var $_j set_hostname_allow allow.set_hostname YN NO
extract_var $_j sysvipc_allow allow.sysvipc YN NO
+ for _p in $_parameters; do
+ echo " ${_p%\;};"
+ done
echo "}"
) >> $_conf
@@ -376,26 +378,32 @@ jail_handle_ips_option()
jail_config()
{
+ local _j
+
case $1 in
_ALL) return ;;
esac
- for _jail in $@; do
- if parse_options $_jail; then
- echo "$_jail: parameters are in $_conf."
+ for _j in $@; do
+ _j=$(echo $_j | tr /. _)
+ if parse_options $_j; then
+ echo "$_j: parameters are in $_conf."
fi
done
}
jail_console()
{
+ local _j
+
# One argument that is not _ALL.
case $#:$1 in
1:_ALL) err 3 "Specify a jail name." ;;
1:*) ;;
*) err 3 "Specify a jail name." ;;
esac
- eval _cmd=\${jail_$1_consolecmd:-$jail_consolecmd}
- $jail_jexec $1 $_cmd
+ _j=$(echo $1 | tr /. _)
+ eval _cmd=\${jail_${_j}_consolecmd:-$jail_consolecmd}
+ $jail_jexec $_j $_cmd
}
jail_status()
@@ -406,6 +414,8 @@ jail_status()
jail_start()
{
+ local _j
+
if [ $# = 0 ]; then
return
fi
@@ -422,21 +432,22 @@ jail_start()
;;
esac
_tmp=`mktemp -t jail` || exit 3
- for _jail in $@; do
- parse_options $_jail || continue
+ for _j in $@; do
+ _j=$(echo $_j | tr /. _)
+ parse_options $_j || continue
eval rc_flags=\${jail_${_j}_flags:-$jail_flags}
eval command=\${jail_${_j}_program:-$jail_program}
if checkyesno jail_parallel_start; then
- command_args="-i -f $_conf -c $_jail &"
+ command_args="-i -f $_conf -c $_j &"
else
- command_args="-i -f $_conf -c $_jail"
+ command_args="-i -f $_conf -c $_j"
fi
if $command $rc_flags $command_args \
>> $_tmp 2>&1 </dev/null; then
- echo -n " ${_hostname:-${_jail}}"
+ echo -n " ${_hostname:-${_j}}"
else
- echo " cannot start jail \"${_hostname:-${jail}}\": "
+ echo " cannot start jail \"${_hostname:-${_j}}\": "
cat $_tmp
fi
rm -f $_tmp
@@ -446,6 +457,8 @@ jail_start()
jail_stop()
{
+ local _j
+
if [ $# = 0 ]; then
return
fi
@@ -461,11 +474,12 @@ jail_stop()
return
;;
esac
- for _jail in $@; do
- parse_options $_jail || continue
+ for _j in $@; do
+ _j=$(echo $_j | tr /. _)
+ parse_options $_j || continue
eval command=\${jail_${_j}_program:-$jail_program}
- if $command -q -f $_conf -r $_jail; then
- echo -n " ${_hostname:-${_jail}}"
+ if $command -q -f $_conf -r $_j; then
+ echo -n " ${_hostname:-${_j}}"
fi
done
echo '.'
OpenPOWER on IntegriCloud