diff --git a/OpenIPMI.spec b/OpenIPMI.spec index e3c3615..a7beab6 100644 --- a/OpenIPMI.spec +++ b/OpenIPMI.spec @@ -2,7 +2,7 @@ Summary: OpenIPMI (Intelligent Platform Management Interface) library and tools Name: OpenIPMI Version: 1.4.14 -Release: 7 +Release: 8 License: GPL Group: System Environment/Base URL: http://sourceforge.net/projects/openipmi/ @@ -124,6 +124,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/*.a %changelog +* Thu Sep 01 2005 Phil Knirsch 1.4.14-8 +- Updated initscript to latest version from Dell + * Fri Aug 12 2005 Phil Knirsch 1.4.14-7 - Fixed the unwanted output of failed module loading of the initscript. Behaves now like all our other initscripts (#165476) diff --git a/openipmi.initscript b/openipmi.initscript index 0af6b93..aa63413 100644 --- a/openipmi.initscript +++ b/openipmi.initscript @@ -18,6 +18,15 @@ # Short-Description: OpenIPMI Driver init script # 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) + + # ############################################################################# # for log_success_msg and friends @@ -53,82 +62,81 @@ LOCKFILE=/var/lock/subsys/ipmi ############################################################################# load_si() { - if [ "${IPMI_SI}" = "1" ]; then - modprobe ${IPMI_SI_MODULE_NAME} || RETVAL=1 - fi + if [ "${IPMI_SI}" = "1" ]; then + modprobe ${IPMI_SI_MODULE_NAME} || RETVAL=1 + fi } load_smb() { - if [ "${IPMI_SMB}" = "1" ]; then - modprobe ${IPMI_SMB_MODULE_NAME} || RETVAL=1 - fi + if [ "${IPMI_SMB}" = "1" ]; then + modprobe ${IPMI_SMB_MODULE_NAME} || RETVAL=1 + fi } load_hw_modules() { - load_si - load_smb + load_si + load_smb } start_watchdog() { - 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 10 130 || RETVAL=2 + 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 fi - fi } stop_watchdog() { - modprobe -q -r ipmi_watchdog - [ ! -x /sbin/udev ] && rm /dev/watchdog + modprobe -q -r ipmi_watchdog + [ ! -x /sbin/udev ] && rm -f /dev/watchdog } start_powercontrol() { - 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 - fi + 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 + fi } stop_powercontrol() { - modprobe -q -r ipmi_poweroff + modprobe -q -r ipmi_poweroff } ############################################################################# unload_all_ipmi_modules() { - [ ! -x /sbin/udev ] && rm -f "/dev/ipmi${INTF_NUM}" - stop_watchdog - for m in ${MODULES}; do - modprobe -q -r ${m} - done + [ ! -x /sbin/udev ] && rm -f "/dev/ipmi${INTF_NUM}" + stop_watchdog + for m in ${MODULES}; do + modprobe -q -r ${m} + done } unload_ipmi_modules_leave_features() { - [ ! -x /sbin/udev ] && rm -f "/dev/ipmi${INTF_NUM}" - for m in ${MODULES_INTERFACES}; do - modprobe -q -r ${m} - done - lsmod | egrep -q "ipmi_poweroff|ipmi_watchdog" - if [ "$?" -ne "0" ]; then - stop_watchdog - for m in ${MODULES}; do - modprobe -q -r ${m} + [ ! -x /sbin/udev ] && rm -f "/dev/ipmi${INTF_NUM}" + for m in ${MODULES_INTERFACES}; do + modprobe -q -r ${m} done - fi + lsmod | egrep -q "ipmi_(poweroff|watchdog)" + if [ "$?" -ne "0" ]; then + stop_watchdog + for m in ${MODULES}; do + modprobe -q -r ${m} + done + fi } - ############################################################################# load_ipmi_modules () { @@ -140,21 +148,23 @@ load_ipmi_modules () start_powercontrol if [ "${DEV_IPMI}" = "1" ]; then - modprobe ipmi_devintf || RETVAL=2 - if [ "${RETVAL}" != "2" ]; then - if [ ! -x /sbin/udev ]; then - DEVMAJOR=`cat /proc/devices | awk '/ipmidev/{print $1}'` - mknod -m 0600 /dev/ipmi${INTF_NUM} c ${DEVMAJOR} 0 || RETVAL=2 + modprobe ipmi_devintf || RETVAL=2 + if [ "${RETVAL}" != "2" ]; 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 + fi fi - fi fi if [ "${IPMI_IMB}" = "1" ]; then - modprobe ipmi_imb || RETVAL=2 - if [ "${RETVAL}" != "2" ]; then - DEVMAJOR=`cat /proc/devices | awk '/imb/{print $1}'` - mknod -m 0600 /dev/imb c ${DEVMAJOR} 0 || RETVAL=2 - fi + modprobe ipmi_imb || RETVAL=2 + if [ "${RETVAL}" != "2" ]; then + DEVMAJOR=`cat /proc/devices | awk '/imb/{print $1}'` + rm -f /dev/imb + mknod -m 0600 /dev/imb c ${DEVMAJOR} 0 || RETVAL=2 + fi fi # Per Corey Minyard, essentially no one uses ipmi_radisys @@ -166,61 +176,146 @@ load_ipmi_modules () ############################################################################# 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 > /dev/null 2>&1 + [ "${RETVAL}" = "1" ] && log_failure_msg && return + [ "${RETVAL}" = "2" ] && touch ${LOCKFILE} && log_warning_msg + [ "${RETVAL}" = "0" ] && touch ${LOCKFILE} && log_success_msg } ############################################################################# stop() { - echo -n $"Stopping ${MODULE_NAME} drivers: " - unload_ipmi_modules_leave_features - rm -f ${LOCKFILE} - log_success_msg + echo -n $"Stopping ${MODULE_NAME} drivers: " + unload_ipmi_modules_leave_features + rm -f ${LOCKFILE} + log_success_msg } stop_all() { - echo -n $"Stopping ${MODULE_NAME} drivers: " - unload_all_ipmi_modules - rm -f ${LOCKFILE} - log_success_msg + echo -n $"Stopping all ${MODULE_NAME} drivers: " + unload_all_ipmi_modules + rm -f ${LOCKFILE} + log_success_msg } ############################################################################# restart() { - stop_all - start + stop_all + start } ############################################################################# -status () + +modules_loaded() { - for m in ${MODULES}; do - if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then - echo "$m module loaded" - else - echo "$m module not loaded" - fi - done + 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} + [ ${OnePlusUnloaded} -ne 0 ] && RETVAL=$((RETVAL | 2)) + + device_node_exists /dev/ipmi${INTF_NUM} + [ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) + + device_node_exists /dev/watchdog + [ $? -eq 0 ] && RETVAL=$((RETVAL | 8)) + + [ ! -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)) + + device_node_exists /dev/ipmi${INTF_NUM} + [ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) +} + +status_watchdog() +{ + RETVAL=0 + minimum_modules_loaded + [ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) + + modules_loaded ipmi_watchdog + [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2)) + + device_node_exists /dev/watchdog + [ $? -eq 0 ] && RETVAL=$((RETVAL | 8)) +} + +status_powercontrol() +{ + RETVAL=0 + minimum_modules_loaded + [ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) + + modules_loaded ipmi_powercontrol + [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2)) +} + +############################################################################# usage () { - echo $"Usage: $0 {start|stop|status|restart|condrestart|" 1>&2 - echo $" start-watchdog|stop-watchdog|" 1>&2 - echo $" start-powercontrol|stop-powercontrol|" 1>&2 - echo $" stop-all}" 1>&2 - RETVAL=1 + echo $"Usage: $0 {start|stop|status|restart|condrestart|" 1>&2 + echo $" start-watchdog|stop-watchdog|status-watchdog" 1>&2 + echo $" start-powercontrol|stop-powercontrol|status-powercontrol" 1>&2 + echo $" stop-all|status-all}" 1>&2 + RETVAL=1 } condrestart () { - [ -e ${LOCKFILE} ] && restart + [ -e ${LOCKFILE} ] && restart } ############################################################################# @@ -231,12 +326,15 @@ case "$1" in stop) stop ;; restart) restart ;; status) status ;; + status-all) status_all ;; condrestart) condrestart ;; start-watchdog) start_watchdog ;; stop-watchdog) stop_watchdog ;; + status-watchdog) status_watchdog ;; start-powercontrol) start_powercontrol ;; stop-powercontrol) stop_powercontrol ;; - stop-all) stop_all ;; + status-powercontrol) status_powercontrol ;; + stop-all) stop_all ;; *) usage ;; esac