Sophie

Sophie

distrib > Mandriva > 2006.0 > i586 > media > main-src > by-pkgid > c353d6aff4161e444f8c12abcbd2800d > files > 2

IPMI-1.0-4mdk.src.rpm

#!/bin/bash
#
# Init file for OpenIPMI
#
# chkconfig: 2345 55 25
# description: Installing OpenIPMI drivers and configuration
#
# source function library
. /etc/rc.d/init.d/functions

TIMEOUT=40
KERNEL_TYPE=`uname -r | perl -p -e 's|(2\.[2-6]).*|$1|g'`
MAIN_DRIVER=none

find_driver()
{
if [ "$KERNEL_TYPE" = "2.6" ] ; then
	cd /lib/modules/`uname -r`/kernel/drivers/char/ipmi/
	MAIN_DRIVER=`ls *_si* | cut -d "." -f 1`
else if [ "$KERNEL_TYPE" = "2.4" ] ; then
	MAIN_DRIVER=ipmi_kcs_drv
else
	failure "Starting IPMI (unsupported kernel)"
	echo
	exit
fi
fi
}

start()
{
	gprintf "Probing IPMI ($MAIN_DRIVER)"
	modprobe $MAIN_DRIVER 2>/dev/null
	
	if [ $? -ne 0 ] ; then
		failure "Starting IPMI" 
		echo
		exit
	fi
	modprobe ipmi_devintf 
	modprobe ipmi_watchdog timeout=$TIMEOUT
	success "Probing IPMI ($MAIN_DRIVER)" 
	echo

	if [ -x /usr/bin/ipmilan ]; then
		gprintf "Starting IPMI Lan daemon"
	        daemon ipmilan 
		touch /var/lock/subsys/ipmi
		success "Starting IPMI Lan daemon"
		echo
	fi

}

stop()
{
	if [ -x /usr/bin/ipmilan ]; then
		gprintf "Stopping IPMI Lan daemon"
		killproc ipmilan
        	rm -f /var/lock/subsys/ipmi
		success "Stopping IPMI Lan daemon"
		echo	
	fi
	
	gprintf "Stopping IPMI"
	rmmod ipmi_watchdog 2>/dev/null
      	rmmod ipmi_devintf 2>/dev/null
        rmmod $MAIN_DRIVER 2>/dev/null
	rmmod ipmi_msghandler 2>/dev/null
	success "Stopping IPMI"
	echo
	
}


status()
{
	if [ `lsmod | grep $MAIN_DRIVER | wc -l` -eq 0 ]; then
		gprintf "IPMI driver ($MAIN_DRIVER) is not loaded";
		echo
	else
		gprintf "IPMI driver ($MAIN_DRIVER) is loaded";
		echo
	fi

	if [ `pidof ipmilan` ]; then
		gprintf "IPMI Lan daemon is running"
		echo
	else
		if [ -x /usr/bin/ipmilan ]; then
			gprintf "IPMI Lan daemon is not running"
			echo
		fi
	fi
}

find_driver

case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		stop
		start
		;;
	reload)
		stop
		start
		;;
	
	status)
		status
		;;
	*)
		gprintf "Usage: %s {start|stop|restart|reload|status}\n" "$0"
		RETVAL=1
esac