rpms/OpenIPMI/devel OpenIPMI.spec, 1.12, 1.13 openipmi.initscript, 1.5, 1.6

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Thu Sep 8 11:25:14 UTC 2005


Author: pknirsch

Update of /cvs/dist/rpms/OpenIPMI/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv29649

Modified Files:
	OpenIPMI.spec openipmi.initscript 
Log Message:
- Another update to latest initscripts from Dell
- Fixed some missing return statements for non-void functions (#164138)



Index: OpenIPMI.spec
===================================================================
RCS file: /cvs/dist/rpms/OpenIPMI/devel/OpenIPMI.spec,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- OpenIPMI.spec	1 Sep 2005 17:04:49 -0000	1.12
+++ OpenIPMI.spec	8 Sep 2005 11:25:11 -0000	1.13
@@ -2,7 +2,7 @@
 Summary: OpenIPMI (Intelligent Platform Management Interface) library and tools
 Name: OpenIPMI
 Version: 1.4.14
-Release: 8
+Release: 9
 License: GPL
 Group: System Environment/Base
 URL: http://sourceforge.net/projects/openipmi/
@@ -13,7 +13,7 @@
 Patch1: OpenIPMI-1.4.11-gcc4.patch
 Patch2: OpenIPMI-1.4.14-oob.patch
 BuildRoot: /var/tmp/%{name}-%{version}-root
-BuildPrereq: gdbm-devel swig glib2-devel net-snmp-devel ncurses-devel
+BuildPrereq: gdbm-devel swig glib2-devel net-snmp-devel ncurses-devel openssl-devel
 
 %description
 The Open IPMI project aims to develop an open code base to allow access to
@@ -124,6 +124,10 @@
 %{_libdir}/*.a
 
 %changelog
+* Thu Sep 08 2005 Phil Knirsch <pknirsch at redhat.com> 1.4.14-9
+- Another update to latest initscripts from Dell
+- Fixed some missing return statements for non-void functions (#164138)
+
 * Thu Sep 01 2005 Phil Knirsch <pknirsch at redhat.com> 1.4.14-8
 - Updated initscript to latest version from Dell
 


Index: openipmi.initscript
===================================================================
RCS file: /cvs/dist/rpms/OpenIPMI/devel/openipmi.initscript,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- openipmi.initscript	1 Sep 2005 17:04:50 -0000	1.5
+++ openipmi.initscript	8 Sep 2005 11:25:11 -0000	1.6
@@ -19,20 +19,23 @@
 # Description: OpenIPMI Driver init script
 ### END INIT INFO
 #
-# Exit Status values
-# from start:
-# 0 = no errors
-# 1 = a necessary requested module did not load (error)
-# 2 = an optional but requested module did not load (warning)
-# 2 = could not create the proper /dev device node (warning)
-
+# Status return code bits
+# no bits set = no errors
+# bit 0 set = minimum modules aren't loaded
+# bit 1 set = requested feature module isn't loaded
+# bit 2 set = /dev/ipmi0 (or /dev/imb if using that instead) doesn't exist
+# bit 3 set = /dev/watchdog doesn't exist
+# bit 4 set = lockfile doesn't exist
+# bit 5 set = modules are loaded even when asked to be unloaded
 
 #
 #############################################################################
 # for log_success_msg and friends
 [ -r /lib/lsb/init-functions ] && . /lib/lsb/init-functions
+
+CONFIGFILE=/etc/sysconfig/ipmi
 # source config info
-[ -r /etc/sysconfig/ipmi ] && . /etc/sysconfig/ipmi
+[ -r ${CONFIGFILE} ] && . ${CONFIGFILE}
 
 #############################################################################
 # GLOBALS
@@ -48,29 +51,101 @@
     IPMI_SI_MODULE_NAME="ipmi_si_drv"
 fi
 
-MODULES_INTERFACES="ipmi_imb ipmi_devintf"
-MODULES_FEATURES="ipmi_watchdog ipmi_poweroff"
-MODULES_HW="${IPMI_SMB_MODULE_NAME} ${IPMI_SI_MODULE_NAME}"
+MODULES_INTERFACES=""
+[ "${DEV_IPMI}" = "1" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_devintf"
+[ "${IPMI_IMB}" = "1" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_imb"
+
+MODULES_FEATURES=""
+[ "${IPMI_WATCHDOG}" = "1" ] && MODULES_FEATURES="${MODULES_FEATURES} ipmi_watchdog"
+[ "${IPMI_POWEROFF}" = "1" ] && MODULES_FEATURES="${MODULES_FEATURES} ipmi_poweroff"
+
+MODULES_HW=""
+[ "${IPMI_SI}"  = "1" ] && MODULES_HW="${MODULES_HW} ${IPMI_SI_MODULE_NAME}"
+[ "${IPMI_SMB}" = "1" ] && MODULES_HW="${MODULES_HW} ${IPMI_SMB_MODULE_NAME}"
+
 MODULES_BASE="ipmi_msghandler"
 MODULES="${MODULES_INTERFACES} ${MODULES_FEATURES} ${MODULES_HW} ${MODULES_BASE}"
 
-
 RETVAL=0
 LOCKFILE=/var/lock/subsys/ipmi
+DEV_IPMI_TIMEOUT=15
 
+#############################################################################
+# NOTES:
+# * /dev/ipmi0 is unconditionally deleted here on ipmi_devintf unload,
+#   because SLES9 and RHEL4 kernels don't send a message for udev to delete
+#   it for us.
+# 
+#############################################################################
+
+modules_loaded_verbose()
+{
+	OnePlusLoaded=0
+	OnePlusUnloaded=0
+	for m in $@; do
+		if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then
+			echo "$m module loaded."
+			OnePlusLoaded=1
+		else
+			echo "$m module not loaded."
+			OnePlusUnloaded=1
+		fi
+	done
+}
+
+modules_loaded()
+{
+	OnePlusLoaded=0
+	OnePlusUnloaded=0
+	for m in $@; do
+		if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then
+			OnePlusLoaded=1
+		else
+			OnePlusUnloaded=1
+		fi
+	done
+}
+
+device_node_exists ()
+{
+	if [ -e "$1" ]; then
+		echo "$1 exists."
+		return 1
+	fi
+	echo "$1 does not exist."
+	return 0
+}
+
+minimum_modules_loaded()
+{
+        rc_base=1
+	rc_hw=1
+        modules_loaded_verbose "${MODULES_BASE}"
+	[ ${OnePlusLoaded} -eq 0 ] && rc_base=0
+	    
+	modules_loaded_verbose "${MODULES_HW}"
+	[ ${OnePlusLoaded} -eq 0 ] && rc_hw=0
+	
+	return $((rc_base && rc_hw))
+}
 
 #############################################################################
+
 load_si()
 {
 	if [ "${IPMI_SI}" = "1" ]; then
-		modprobe ${IPMI_SI_MODULE_NAME} || RETVAL=1
+		modprobe ${IPMI_SI_MODULE_NAME} > /dev/null 2>&1
+		modules_loaded ${IPMI_SI_MODULE_NAME}
+		[ ${OnePlusLoaded} -ne 1 ] && RETVAL=$((RETVAL | 1))
 	fi
 }
 
 load_smb()
 {
 	if [ "${IPMI_SMB}" = "1" ]; then
-		modprobe ${IPMI_SMB_MODULE_NAME} || RETVAL=1
+		modprobe ${IPMI_SMB_MODULE_NAME} > /dev/null 2>&1
+		modules_loaded ${IPMI_SMB_MODULE_NAME}
+		[ ${OnePlusLoaded} -ne 1 ] && RETVAL=$((RETVAL | 1))
 	fi
 }
 
@@ -80,59 +155,147 @@
 	load_smb
 }
 
-start_watchdog()
+start_watchdog_common()
 {
-	if [ "${IPMI_WATCHDOG}" = "1" ]; then
-		load_hw_modules
-		modprobe ipmi_watchdog ${IPMI_WATCHDOG_OPTIONS} || RETVAL=2
-		if [ ! -x /sbin/udev -a ! -e /dev/watchdog ]; then
-			mknod -m 0600 /dev/watchdog c 10 130 || RETVAL=2
-		fi
+	load_hw_modules
+	modprobe ipmi_watchdog ${IPMI_WATCHDOG_OPTIONS} > /dev/null 2>&1
+	modules_loaded ipmi_watchdog
+	[ ${OnePlusUnloaded} -ne 0 ] &&
+		RETVAL=$((RETVAL | 2)) &&
+		log_failure_msg &&
+		return
+	if [ ! -x /sbin/udev -a ! -e /dev/watchdog ]; then
+		mknod -m 0600 /dev/watchdog c 10 130
+		[ $? -ne 0 ] &&
+			RETVAL=$((RETVAL | 8)) &&
+			log_failure_msg &&
+			return
 	fi
+	log_success_msg
+}
+
+start_watchdog_quiet()
+{
+	[ "${IPMI_WATCHDOG}" != "1" ] &&
+		return
+	echo -n $"Starting ipmi_watchdog driver: "
+	start_watchdog_common
+}
+
+start_watchdog()
+{
+	echo -n $"Starting ipmi_watchdog driver: "
+	[ "${IPMI_WATCHDOG}" != "1" ] &&
+		RETVAL=$((RETVAL | 2)) &&
+		log_failure_msg "not configured" &&
+		return
+	start_watchdog_common
 }
 
 stop_watchdog()
 {
-	modprobe -q -r ipmi_watchdog
-	[ ! -x /sbin/udev ] && rm -f /dev/watchdog
+	echo -n $"Stopping ipmi_watchdog driver: "
+	modprobe -q -r ipmi_watchdog > /dev/null 2>&1
+	modules_loaded ipmi_watchdog
+	if [ ${OnePlusLoaded} -ne 0 ]; then
+	    RETVAL=$((RETVAL | 32))
+	    log_failure_msg
+	else
+	    if [ "${IPMI_WATCHDOG}" = "1" ]; then
+		[ ! -x /sbin/udev ] && rm -f /dev/watchdog
+	    fi
+	    log_success_msg
+	fi
 }
 
-start_powercontrol()
+stop_watchdog_quiet()
 {
-	local poweroff_opts=""
-	if [ "${IPMI_POWEROFF}" = "1" ]; then
-		load_hw_modules
-		[ "${IPMI_POWERCYCLE}" == "1" ] && poweroff_opts="poweroff_control=2"
-		modprobe ipmi_poweroff "${poweroff_opts}" || RETVAL=2
+	modprobe -q -r ipmi_watchdog > /dev/null 2>&1
+	modules_loaded ipmi_watchdog
+	if [ ${OnePlusLoaded} -ne 0 ]; then
+	    RETVAL=$((RETVAL | 32))
+	else
+	    if [ "${IPMI_WATCHDOG}" = "1" ]; then
+		[ ! -x /sbin/udev ] && rm -f /dev/watchdog
+	    fi
 	fi
 }
 
+start_powercontrol_common()
+{
+	local poweroff_opts=""
+	load_hw_modules
+	[ "${IPMI_POWERCYCLE}" == "1" ] && poweroff_opts="poweroff_control=2"
+	modprobe ipmi_poweroff "${poweroff_opts}" > /dev/null 2>&1
+	modules_loaded ipmi_poweroff
+	[ ${OnePlusUnloaded} -ne 0 ] &&
+		RETVAL=$((RETVAL | 2)) &&
+		log_failure_msg &&
+		return
+	log_success_msg
+}
+
+start_powercontrol_quiet()
+{
+	[ "${IPMI_POWEROFF}" != "1" ] &&
+		return
+	echo -n $"Starting ipmi_poweroff driver: "
+	start_powercontrol_common
+}
+
+start_powercontrol()
+{
+	echo -n $"Starting ipmi_poweroff driver: "
+	[ "${IPMI_POWEROFF}" != "1" ] &&
+		RETVAL=$((RETVAL | 2)) &&
+		log_failure_msg "not configured" &&
+		return
+	start_powercontrol_common
+}
+
 stop_powercontrol()
 {
-	modprobe -q -r ipmi_poweroff
+	echo -n $"Stopping ipmi_poweroff driver: "
+	modprobe -q -r ipmi_poweroff > /dev/null 2>&1
+	modules_loaded ipmi_poweroff
+	if [ ${OnePlusLoaded} -ne 0 ]; then
+	    RETVAL=$((RETVAL | 32))
+	    log_failure_msg
+	else
+	    log_success_msg
+	fi
+}
+
+stop_powercontrol_quiet()
+{
+	modprobe -q -r ipmi_poweroff > /dev/null 2>&1
+	modules_loaded ipmi_poweroff
+	[ ${OnePlusLoaded} -ne 0 ] && RETVAL=$((RETVAL | 32))
 }
 
 #############################################################################
 unload_all_ipmi_modules()
 {
-	[ ! -x /sbin/udev ] && rm -f "/dev/ipmi${INTF_NUM}"
-	stop_watchdog
+	rm -f "/dev/ipmi${INTF_NUM}"
+	stop_watchdog_quiet
+	stop_powercontrol_quiet
 	for m in ${MODULES}; do
-		modprobe -q -r ${m}
+		modprobe -q -r ${m} > /dev/null 2>&1
 	done
 }
 
 unload_ipmi_modules_leave_features()
 {
-	[ ! -x /sbin/udev ] && rm -f "/dev/ipmi${INTF_NUM}"
+	rm -f "/dev/ipmi${INTF_NUM}"
 	for m in ${MODULES_INTERFACES}; do
-		modprobe -q -r ${m}
+		modprobe -q -r ${m} > /dev/null 2>&1
 	done
 	lsmod | egrep -q "ipmi_(poweroff|watchdog)"
 	if [ "$?" -ne "0" ]; then
-		stop_watchdog
+		stop_watchdog_quiet
+		stop_powercontrol_quiet
 		for m in ${MODULES}; do
-			modprobe -q -r ${m}
+			modprobe -q -r ${m} > /dev/null 2>&1
 		done
 	fi
 }
@@ -140,30 +303,44 @@
 #############################################################################
 load_ipmi_modules ()
 {
-	modprobe ipmi_msghandler || RETVAL=1
+	local locdelay
+	modprobe ipmi_msghandler > /dev/null 2>&1
+	modules_loaded ipmi_msghandler
+	[ ${OnePlusLoaded} -ne 1 ] && unload_all_ipmi_modules && RETVAL=$((RETVAL | 1)) && return
 	load_hw_modules
-	[ "${RETVAL}" = "1" ] && unload_all_ipmi_modules && return
-
-	start_watchdog
-	start_powercontrol
+	[ $((RETVAL & 1)) -eq 1 ] && unload_all_ipmi_modules && RETVAL=$((RETVAL | 1)) && return
 
 	if [ "${DEV_IPMI}" = "1" ]; then
-		modprobe ipmi_devintf || RETVAL=2
-		if [ "${RETVAL}" != "2" ]; then
+		modprobe ipmi_devintf > /dev/null 2>&1
+		modules_loaded ipmi_devintf
+		RETVAL=$((RETVAL & ~2))
+		[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
+		if [ ${OnePlusLoaded} -eq 1 ]; then
 			if [ ! -x /sbin/udev ]; then
 				DEVMAJOR=`cat /proc/devices | awk '/ipmidev/{print $1}'`
 				rm -f /dev/ipmi${INTF_NUM}
-				mknod -m 0600 /dev/ipmi${INTF_NUM} c ${DEVMAJOR} 0 || RETVAL=2
+				mknod -m 0600 /dev/ipmi${INTF_NUM} c ${DEVMAJOR} 0 || RETVAL=$((RETVAL | 4))
 			fi
+
+			# udev can take several seconds to create /dev/ipmi0, 
+			# but it happens asynchronously, so delay here
+			locdelay=${DEV_IPMI_TIMEOUT}
+			while [ ! -e /dev/ipmi${INTF_NUM} -a ${locdelay} -gt 0 ]; do
+				locdelay=$((locdelay - 1))
+				sleep 1
+			done
 		fi
 	fi
 
 	if [ "${IPMI_IMB}" = "1" ]; then
-		modprobe ipmi_imb || RETVAL=2
-		if [ "${RETVAL}" != "2" ]; then
+		modprobe ipmi_imb > /dev/null 2>&1
+		modules_loaded ipmi_imb
+		RETVAL=$((RETVAL & ~2))
+		[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
+		if [ ${OnePlusLoaded} -eq 1 ]; then
 			DEVMAJOR=`cat /proc/devices | awk '/imb/{print $1}'`
 			rm -f /dev/imb
-			mknod -m 0600 /dev/imb c ${DEVMAJOR} 0 || RETVAL=2
+			mknod -m 0600 /dev/imb c ${DEVMAJOR} 0 || RETVAL=$((RETVAL | 4))
 		fi
 	fi
 
@@ -176,117 +353,111 @@
 #############################################################################
 start()
 {
-	echo -n $"Starting ${MODULE_NAME} drivers: "
-	load_ipmi_modules > /dev/null 2>&1 
-	[ "${RETVAL}" = "1" ] && log_failure_msg && return
-	[ "${RETVAL}" = "2" ] && touch ${LOCKFILE} && log_warning_msg
-	[ "${RETVAL}" = "0" ] && touch ${LOCKFILE} && log_success_msg
+	echo -n "Starting ${MODULE_NAME} drivers: "
+	load_ipmi_modules
+	if [ ${RETVAL} -eq 0 ]; then
+		touch ${LOCKFILE} && log_success_msg
+	else
+		if [ $((RETVAL & 1)) -eq 1 ]; then
+			log_failure_msg
+		else
+			touch ${LOCKFILE} && log_warning_msg
+		fi
+	fi
+	start_watchdog_quiet
+	start_powercontrol_quiet
 }
 
 #############################################################################
 stop()
 {
-	echo -n $"Stopping ${MODULE_NAME} drivers: "
+	echo -n "Stopping ${MODULE_NAME} drivers: "
 	unload_ipmi_modules_leave_features
-	rm -f ${LOCKFILE}
-	log_success_msg
+	modules_loaded ${MODULES_INTERFACES}
+	if [ ${OnePlusLoaded} -ne 0 ]; then
+		RETVAL=$((RETVAL | 32))
+		log_failure_msg "may be in use"
+	else
+		rm -f ${LOCKFILE}
+		log_success_msg
+	fi
 }
 
 stop_all()
 {
 	echo -n $"Stopping all ${MODULE_NAME} drivers: "
 	unload_all_ipmi_modules
-	rm -f ${LOCKFILE}
-	log_success_msg
+	modules_loaded ${MODULES}
+	if [ ${OnePlusLoaded} -ne 0 ]; then
+		RETVAL=$((RETVAL | 32))
+		log_failure_msg "may be in use"
+	else
+		rm -f ${LOCKFILE}
+		log_success_msg
+	fi
 }
 
 #############################################################################
 restart()
 {
 	stop_all
+	RETVAL=0
 	start
 }
 
 #############################################################################
 
-modules_loaded()
-{
-	OnePlusLoaded=0
-	OnePlusUnloaded=0
-	for m in $@; do
-		if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then
-			echo "$m module loaded."
-			OnePlusLoaded=1
-		else
-			echo "$m module not loaded."
-			OnePlusUnLoaded=1
-		fi
-	done
-}
-
-device_node_exists()
-{
-	if [ -e "$1" ]; then
-		echo "$1 exists."
-		return 1
-	fi
-	echo "$1 does not exist."
-	return 0
-}
-
-minimum_modules_loaded()
-{
-	modules_loaded ${MODULES_BASE}
-	[ ${OnePlusLoaded} -eq 0 ] && return 0
-	    
-	modules_loaded ${MODULES_HW}
-	[ ${OnePlusLoaded} -eq 0 ]  && return 0
-
-	return 1
-}
-
-# Status return code bits
-# bit 0 set = minimum modules aren't loaded
-# bit 1 set = requested module isn't loaded
-# bit 2 set = /dev/ipmi0 doesn't exist
-# bit 3 set = /dev/watchdog doesn't exist
-# bit 4 set = lockfile doesn't exist
-
 status_all()
 {
-	RETVAL=0
-	modules_loaded ${MODULES}
+	minimum_modules_loaded
+	[ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
+	
+	modules_loaded_verbose ${MODULES_FEATURES} ${MODULES_INTERFACES}
 	[ ${OnePlusUnloaded} -ne 0 ] && RETVAL=$((RETVAL | 2))
 
-	device_node_exists /dev/ipmi${INTF_NUM}
-	[ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
+	if [ "${DEV_IPMI}" = "1" ]; then 
+	    device_node_exists /dev/ipmi${INTF_NUM}
+	    [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
+	fi
 
-	device_node_exists /dev/watchdog
-	[ $? -eq 0 ] && RETVAL=$((RETVAL | 8))
+	if [ "${IPMI_IMB}" = "1" ]; then
+	    device_node_exists /dev/imb
+	    [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
+	fi
+
+	if [ "${IPMI_WATCHDOG}" = "1" ]; then
+	    device_node_exists /dev/watchdog
+	    [ $? -eq 0 ] && RETVAL=$((RETVAL | 8))
+	fi
 
 	[ ! -e ${LOCKFILE} ] && RETVAL=$((RETVAL | 16))
 }
 
 status()
 {
-	RETVAL=0
 	minimum_modules_loaded
 	[ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
 	
-	modules_loaded ipmi_devintf
-	[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
+	if [ "${DEV_IPMI}" = "1" ]; then 
+	    modules_loaded_verbose ipmi_devintf
+	    [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
 
-	device_node_exists /dev/ipmi${INTF_NUM}
-	[ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
+	    device_node_exists /dev/ipmi${INTF_NUM}
+	    [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
+	fi
+
+	if [ "${IPMI_IMB}" = "1" ]; then
+	    device_node_exists /dev/imb
+	    [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
+	fi
 }
 
 status_watchdog()
 {
-	RETVAL=0
 	minimum_modules_loaded
 	[ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
 
-	modules_loaded ipmi_watchdog
+	modules_loaded_verbose ipmi_watchdog
 	[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
 
 	device_node_exists /dev/watchdog
@@ -295,11 +466,10 @@
 
 status_powercontrol()
 {
-	RETVAL=0
 	minimum_modules_loaded
 	[ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
 
-	modules_loaded ipmi_powercontrol
+	modules_loaded_verbose ipmi_powercontrol
 	[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
 }
 




More information about the fedora-cvs-commits mailing list