#! /bin/sh
#
# (C) Copyright 2007-2012 Hewlett-Packard Development Company, L.P.
# @(#) Serviceguard Command Proxy Daemon Startup Script
# @(#) Product Name                :  HP Serviceguard
# @(#) Product Version             :  A.12.10.00
# @(#) Patch Name                  :  
#
# /etc/init.d/cmproxy
#
# NOTE:    This script is not configurable!  Any changes made to this
#          script will be overwritten when you upgrade to the next
#          release of Serviceguard.
#
# WARNING: Changing this script in any way may lead to a system that
#          is unbootable.  Do not modify this script.
#
### BEGIN INIT INFO
# Provides:          cmproxyd
# Required-Start:    xinetd
# Required-Stop:
# Should-Start:
# Should-Stop:
# X-Start-Before:
# X-Stop-After:
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# X-Interactive:     true
# Short-Description: cmproxyd startup script
# Description:       Starts cmproxyd service for HP Serviceguard.
### END INIT INFO

CMPROXYD=/opt/cmcluster/bin/cmproxyd

test -x $CMPROXYD || exit 5

# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     ditto but be verbose in local rc status
#      rc_status -v -r  ditto and clear the local rc status
#      rc_failed        set local and overall rc status to failed
#      rc_failed <num>  set local and overall rc status to <num><num>
#      rc_reset         clear local rc status (overall remains)
#      rc_exit          exit appropriate to overall rc status
. /etc/rc.status

# First reset status of this service
rc_reset

# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
# 
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.


case "$1" in
    start)
	echo -n "Starting cmproxyd"

        #
        # cmclconfd may not have started by xinetd
        # at this point, thus we need to wait
        # at most 60 secs until cmclconfd is ready.
        #
        count=1
        /bin/netstat -an | /bin/grep '[\.:]5302 ' > /dev/null
        while [ $? -ne 0 ] ; do
                if [ $count -gt 60 ] ; then
                        echo -n "Failed due to no cmclconfd"
                        exit 1
                fi
                let count=$count+1
                /bin/sleep 1
                /bin/netstat -an | /bin/grep ':5302 ' > /dev/null
        done

        startproc $CMPROXYD
	rc_status -v
	rc_reset

	;;
    stop)
	echo -n "Shutting down cmproxyd:"
	killproc -TERM $CMPROXYD
	rc_status -v ; rc_reset
	;;
    try-restart)
	$0 status >/dev/null &&  $0 restart
	rc_status
	;;
    restart)
	$0 stop
	$0 start
	rc_status
	;;
    force-reload)
	echo -n "Reload service cmproxyd:"
	killproc -HUP $CMPROXYD
	rc_status -v
	;;
    reload)
	echo -n "Reload service cmproxyd:"
	killproc -HUP $CMPROXYD
	rc_status -v
	;;
    status)
	echo -n "Checking for service cmproxyd:"
	checkproc $CMPROXYD
	rc_status -v
	;;
    *)
	echo "Usage: $0 {start|stop|try-restart|restart|force-reload|reload|status}"
	exit 1
	;;
esac
rc_exit

