1740 beadm needs to be in an RBAC profile
1877 SUNWckr delivering boot/solaris/filelist.ramdisk in non-global zones
1993 supplied versions of ksh.1 and rksh.1 are incorrect
1995 resync repository to snv_89
1996 PostgreSQL root packages can be combined into their bases
#!/sbin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# ident "@(#)svc-coreadm 1.4 08/04/25 SMI"
#
# Start/refresh method script for the coreadm service.
#
. /lib/svc/share/smf_include.sh
FMRI=${SMF_FMRI:-svc:/system/coreadm:default}
read_conf() {
preamble="svccfg -s $FMRI setprop config_params/"
< /etc/coreadm.conf sed -n -e "
/^COREADM/!d
s/^\([^=]*_ENABLED=\)yes/\1true/
s/^\([^=]*_ENABLED=\)no/\1false/
s,^,$preamble,
s/COREADM_GLOB_PATTERN=\(.*\)$/global_pattern = astring: '\"\1\"'/p
s/COREADM_GLOB_CONTENT=\(.*\)$/global_content = astring: '\"\1\"'/p
s/COREADM_INIT_PATTERN=\(.*\)$/init_pattern = astring: '\"\1\"'/p
s/COREADM_INIT_CONTENT=\(.*\)$/init_content = astring: '\"\1\"'/p
s/COREADM_GLOB_ENABLED=/global_enabled = boolean: /p
s/COREADM_PROC_ENABLED=/process_enabled = boolean: /p
s/COREADM_GLOB_SETID_ENABLED=/global_setid_enabled = boolean: /p
s/COREADM_PROC_SETID_ENABLED=/process_setid_enabled = boolean: /p
s/COREADM_GLOB_LOG_ENABLED=/global_log_enabled = boolean: /p" | sh
svcadm refresh $FMRI
}
getprop() {
svcprop -p config_params/$1 $FMRI
}
error() {
echo "Error reading property \"$1\"" 1>&2
exit $SMF_EXIT_ERR_CONFIG
}
set_string() {
value="`getprop $1`"
[ $? -ne 0 ] && error $1
[ "$value" = "\"\"" ] && value=""
coreadm $2 "$value"
}
set_boolean() {
enabled="`getprop $1`"
[ $? -ne 0 ] && error $1
if [ "$enabled" = "true" ]; then
coreadm -e $2
else
coreadm -d $2
fi
}
apply_conf() {
set_string global_content -G
set_string init_content -I
set_string global_pattern -g
set_string init_pattern -i
set_boolean global_log_enabled log
set_boolean global_enabled global
set_boolean global_setid_enabled global-setid
set_boolean process_enabled process
set_boolean process_setid_enabled proc-setid
}
case $1 in
"start")
# By virtue of using coreadm to effect coreadm changes,
# coreadm.conf should always be up-to-date. Treat it as
# authoritative on boot to a) handle upgrade, and b)
# handle the situation where administrators are using
# the command to make customizations.
#
# In the off chance there is no coreadm.conf, apply the
# the SMF configuration.
if [ -f /etc/coreadm.conf ]; then
read_conf
coreadm -u
else
apply_conf
fi
;;
"refresh")
# Refresh implies someone wants to apply the configuration
# stored in the service. Do so.
#
# It is possible for someone to use coreadm directly and
# subsequently issue a refresh, resulting in the initial
# changes being lost. Given that a refresh will either be
# issued explicitly by the administrator or by a
# configuration activity that has made changes to the SMF
# configuration and expects those changes to be applied,
# this shouldn't be a big problem.
apply_conf
;;
esac
exit $SMF_EXIT_OK