#! /bin/sh
#
#        ipmiutil_asy init script
#
# chkconfig: - 91 59
# description: ipmiutil async bridge agent, listens for IPMI LAN client requests
#
# This starts a daemon that listens for asynchronous IPMI LAN soft-shutdown 
# requests from a remote ipmiutil reset (-o/-D).  It depends upon an imb or 
# openipmi driver.
#
### BEGIN INIT INFO
# Provides: ipmiutil_asy
# Required-Start: $localfs $remotefs $syslog
# Required-Stop: $localfs $remotefs $syslog
# Default-Start: 
# Default-Stop: 
# Short-Description: ipmiutil async bridge agent init script
# Description: Init script starts ipmiutil async bridge agent for remote reset
### END INIT INFO
#

#if [ -f /etc/init.d/functions ]; then
# Source function library.
#. /etc/init.d/functions
#fi

name="ipmiutil_asy"
dname="ipmiutil_asy bridge agent"
getevtlog=/var/log/${name}.log
lockfile=/var/lock/subsys/${name}
prog=/usr/sbin/ipmiutil


getpid () {
    p=`ps -ef |grep "$1" |grep -v grep |awk '{print $2}'`
    echo $p
}

start()
{
	echo -n $"Starting $dname: "
	driverok=0
        if [ "`lsmod | grep "ipmi_devintf"`" != "" ]
	then 
	   driverok=1
	fi
        if [ "`lsmod | grep "^imb "`" != "" ]
        then
	   driverok=1
	fi
	if [ $driverok -eq 1 ]
	then
	   [ -x $prog ] || exit 5
	   $prog getevt -a -t0 >$getevtlog &
	   retval=$?
	   PID=$!
	   if [ $retval -eq 0 ]; then
		echo $PID >$lockfile
	   fi
	else
	   echo "No imb or ipmi driver loaded, aborting."
	   retval=1
        fi
	echo
	return $retval
}

stop()
{
	echo -n $"Stopping $dname: "
        retval=1
        if [ -f $lockfile ]; then
           p=`cat $lockfile`
           if [ "x$p" = "x" ]; then
	        p=`getpid "$prog getevt -a"`
	   fi
           if [ "x$p" != "x" ]; then
                kill $p
                retval=$?
           fi
        fi
	echo
	[ $retval -eq 0 ] && rm -f $lockfile
	return $retval
}           

restart() {
  	stop
	start
}	


rh_status() {
    if [ -f $lockfile ]; then
    	p=`cat $lockfile`
	if [ "x$p" != "x" ]; then
	   pid=`getpid $p`
	   if [ "x$pid" != "x" ]; then
              echo "$dname (pid $pid) is running..."
	      retval=0
	   else
	      echo "$dname is dead but $lockfile exists"
	      retval=1
	   fi
	else
	   echo "$dname $lockfile exists but is empty"
	   retval=1
	fi
    else
	echo "$dname is stopped"
	retval=3
    fi
    return $retval
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

if [ ! -d /var/lock/subsys ]; then
   lockfile=/var/run/${name}.pid
fi

case "$1" in
    start)
        rh_status_q && exit 0
        start
        ;;
    stop)
        rh_status_q || exit 0
        stop
        ;;
    restart)
        restart
        ;;
    reload)
        rh_status_q || exit 7
        restart
        ;;
    force-reload)
        restart
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
        exit 2
esac
exit $?

