23227671 Upgrade MySQL 5.5 to 5.5.49 on Solaris
15818149 mysql stop method unsafe
18605985 Need to resolve dependencies between MySQL 5.5 database and client pkgs
23227615 Port fix for Bug 23022999 from MySQL 5.6 to 5.5
23227642 Port fix for Bug 23053990 from MySQL 5.6 to 5.5
#!/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 (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
#
. /lib/svc/share/smf_include.sh
. /lib/svc/share/net_include.sh
SVCPROP=/usr/bin/svcprop
CHMOD=/usr/bin/chmod
TOUCH=/usr/bin/touch
DHCPD_IPV4="svc:/network/dhcp/server:ipv4"
DHCPD_IPV6="svc:/network/dhcp/server:ipv6"
DHCPRELAY_IPV4="svc:/network/dhcp/relay:ipv4"
DHCPRELAY_IPV6="svc:/network/dhcp/relay:ipv6"
DHCPD_BIN="/usr/lib/inet/dhcpd"
DHCPRELAY_BIN="/usr/lib/inet/dhcrelay"
#
# dhcpd/dhcprelay can run in a global or exclusive-stack zone only
#
smf_configure_ip || exit $SMF_EXIT_OK
if [ -z $SMF_FMRI ]; then
echo "SMF framework variables are not initialized."
exit $SMF_EXIT_ERR
fi
#
# get_prop fmri propname
#
get_prop () {
VALUE="`$SVCPROP -cp config/$1 $SMF_FMRI 2>/dev/null`"
# Empty astring_list values show up as "" - do not return this.
if [ "$VALUE" != "\"\"" ]; then
echo $VALUE
fi
}
errlog () {
echo $1 >&2
}
get_common_options() {
#
# get debug property value
#
if [ "`get_prop debug`" = "true" ]; then
DEBUG="-d"
else
DEBUG="-q"
fi
export OPTIONS="$OPTIONS $DEBUG"
return 0
}
#
# expand_prop "prop_name" "var_name" [ argflag ]
#
# prop_name FMRI property name
# var_name variable where result is stored; initialized
# to ""
# argflag The flag to be prepended to each property
# value; optional argument
#
# This function will retrieve the properties for "prop_name" via a call
# to get_prop(). It will split-up the property values; it assumes that
# the delimiter is whitespace. It will then prepend "argflag" to each
# property value. The results will be stored in "var_name" which is
# passed by reference.
#
# Return values:
#
# 0 Success
# 1 Failure
#
expand_prop() {
if [ $# -lt 2 ] || [ -z $2 ]; then
errlog "Internal error - expand_prop() has incorrect arguments"
return 1
fi
prop_name=$1
typeset -n var_name=$2
argflag="$3"
prop_values="`get_prop $prop_name`"
if [ -z "$prop_values" ]; then
errlog "The property, \"${prop_name}\", is empty"
return 1
fi
var_name=""
for item in `IFS= ; set -- $prop_values; echo $@`; do
var_name="$var_name $argflag $item"
done
return 0
}
get_dhcpd_options() {
# get listen_ifname property value.
LISTENIFNAMES="`get_prop listen_ifnames`"
#
# get common config file properties
#
CONFIGFILE=`get_prop config_file`
if [ -z "$CONFIGFILE" ]; then
errlog "No config_file specified, exiting"
return 1
fi
if [ ! -f "$CONFIGFILE" ]; then
errlog "Required config_file $CONFIGFILE not found, exiting"
return 1
fi
#
# If a leasefile does not exist, create an empty file.
#
LEASEFILE=`get_prop lease_file`
if [ -z "$LEASEFILE" ]; then
errlog "No lease_file specified, exiting"
return 1
fi
if [ ! -f "$LEASEFILE" ]; then
$TOUCH $LEASEFILE
$CHMOD u=rw,go=r $LEASEFILE
fi
export OPTIONS="$OPTIONS -cf $CONFIGFILE -lf $LEASEFILE $LISTENIFNAMES"
return 0
}
get_dhcprelay_options_v4() {
#
# Get append_agent_option V4 property value
#
if [ "`get_prop append_agent_option`" = "true" ]; then
APPEND="-a -m append"
else
APPEND=""
fi
#
# get listen_ifname property value and modify it.
# If listen_ifnames property value is "e1000g01 iprb0" then the
# command line option will look like "-i e1000g0 -i iprb0"
#
IIFLIST=
expand_prop listen_ifnames IIFLIST -i || return $?
#
# Get servers V4 property value - command line option will look
# like "1.2.3.5" "4.5.6.7".
#
# NOTE: By default server property value is empty. User must
# first specify a server using svccfg/setprop command
# before enabling service.
#
DHCPSERVERS=`get_prop servers`
if [ -z "$DHCPSERVERS" ]; then
errlog 'Must specify at least one "servers" property value, exiting'
return 1
fi
export OPTIONS="$OPTIONS -4 $APPEND $IIFLIST $DHCPSERVERS"
return 0
}
get_dhcprelay_options_v6() {
#
# Get receivelinks V6 property value and modify it:
# Given property values of "1.2.3.4%bge0#1 bge2,1.2.3.4%iprb",
# the command line option will look like "-l 1.2.3.4%bge0#1 -l
# bge2 -l 1.2.3.4%iprb".
#
# NOTE: By default receivelinks value is empty. User must
# first specify a server using svccfg/setprop command
# before enabling service.
#
IRECVLINKS=
expand_prop receive_query_links IRECVLINKS -l || return $?
#
# Get forwardlinks V6 property value and modify it:
# Given forward_query_links property value is "1.2.3.4%bge0 bge2,"
# then the command line option will look like "-u 1.2.3.4%bge0 -u
# bge2"
#
# NOTE: By default forwardlinks value is empty. User must
# first specify a server using svccfg/setprop command
# before enabling service.
#
IFWDLINKS=
expand_prop forward_query_links IFWDLINKS -u || return $?
export OPTIONS="$OPTIONS -6 $IRECVLINKS $IFWDLINKS"
}
export OPTIONS="--no-pid"
case "$SMF_FMRI" in
"$DHCPD_IPV4"|"$DHCPD_IPV6")
get_common_options
if [ "$?" != "0" ]; then
exit $SMF_EXIT_ERR_CONFIG
fi
get_dhcpd_options
if [ "$?" != "0" ]; then
exit $SMF_EXIT_ERR_CONFIG
fi
if [ "$SMF_FMRI" = "$DHCPD_IPV4" ]; then
OPTIONS="-4 $OPTIONS"
else
OPTIONS="-6 $OPTIONS"
fi
export EXECFILE=$DHCPD_BIN
;;
$DHCPRELAY_IPV4)
get_common_options
if [ $? != "0" ]; then
exit $SMF_EXIT_ERR_CONFIG
fi
get_dhcprelay_options_v4
if [ $? != "0" ]; then
exit $SMF_EXIT_ERR_CONFIG
fi
export EXECFILE=$DHCPRELAY_BIN
;;
$DHCPRELAY_IPV6)
get_common_options
if [ $? != "0" ]; then
exit $SMF_EXIT_ERR_CONFIG
fi
get_dhcprelay_options_v6
if [ $? != "0" ]; then
exit $SMF_EXIT_ERR_CONFIG
fi
export EXECFILE=$DHCPRELAY_BIN
;;
*)
echo "isc-dhcp must be invoked from within SMF"
exit $SMF_EXIT_ERR_FATAL
;;
esac
# Now start the daemon
if [ "$DEBUG" = "-d" ]; then
$EXECFILE $OPTIONS &
else
$EXECFILE $OPTIONS
fi
if [ "$?" != "0" ]; then
exit $SMF_EXIT_ERR_FATAL
fi
exit $SMF_EXIT_OK