- Another update to latest initscripts from Dell

- Fixed some missing return statements for non-void functions (#164138)
This commit is contained in:
Phil Knirsch 2005-09-08 11:25:11 +00:00
parent 4b715b9d3d
commit 31e3fcf270
2 changed files with 293 additions and 119 deletions

View File

@ -2,7 +2,7 @@
Summary: OpenIPMI (Intelligent Platform Management Interface) library and tools Summary: OpenIPMI (Intelligent Platform Management Interface) library and tools
Name: OpenIPMI Name: OpenIPMI
Version: 1.4.14 Version: 1.4.14
Release: 8 Release: 9
License: GPL License: GPL
Group: System Environment/Base Group: System Environment/Base
URL: http://sourceforge.net/projects/openipmi/ URL: http://sourceforge.net/projects/openipmi/
@ -13,7 +13,7 @@ Source4: openipmi.initscript
Patch1: OpenIPMI-1.4.11-gcc4.patch Patch1: OpenIPMI-1.4.11-gcc4.patch
Patch2: OpenIPMI-1.4.14-oob.patch Patch2: OpenIPMI-1.4.14-oob.patch
BuildRoot: /var/tmp/%{name}-%{version}-root 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 %description
The Open IPMI project aims to develop an open code base to allow access to The Open IPMI project aims to develop an open code base to allow access to
@ -124,6 +124,10 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/*.a %{_libdir}/*.a
%changelog %changelog
* Thu Sep 08 2005 Phil Knirsch <pknirsch@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@redhat.com> 1.4.14-8 * Thu Sep 01 2005 Phil Knirsch <pknirsch@redhat.com> 1.4.14-8
- Updated initscript to latest version from Dell - Updated initscript to latest version from Dell

View File

@ -19,20 +19,23 @@
# Description: OpenIPMI Driver init script # Description: OpenIPMI Driver init script
### END INIT INFO ### END INIT INFO
# #
# Exit Status values # Status return code bits
# from start: # no bits set = no errors
# 0 = no errors # bit 0 set = minimum modules aren't loaded
# 1 = a necessary requested module did not load (error) # bit 1 set = requested feature module isn't loaded
# 2 = an optional but requested module did not load (warning) # bit 2 set = /dev/ipmi0 (or /dev/imb if using that instead) doesn't exist
# 2 = could not create the proper /dev device node (warning) # 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 # for log_success_msg and friends
[ -r /lib/lsb/init-functions ] && . /lib/lsb/init-functions [ -r /lib/lsb/init-functions ] && . /lib/lsb/init-functions
CONFIGFILE=/etc/sysconfig/ipmi
# source config info # source config info
[ -r /etc/sysconfig/ipmi ] && . /etc/sysconfig/ipmi [ -r ${CONFIGFILE} ] && . ${CONFIGFILE}
############################################################################# #############################################################################
# GLOBALS # GLOBALS
@ -48,168 +51,34 @@ if [ "${kernel}" == "2.4" ]; then
IPMI_SI_MODULE_NAME="ipmi_si_drv" IPMI_SI_MODULE_NAME="ipmi_si_drv"
fi fi
MODULES_INTERFACES="ipmi_imb ipmi_devintf" MODULES_INTERFACES=""
MODULES_FEATURES="ipmi_watchdog ipmi_poweroff" [ "${DEV_IPMI}" = "1" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_devintf"
MODULES_HW="${IPMI_SMB_MODULE_NAME} ${IPMI_SI_MODULE_NAME}" [ "${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_BASE="ipmi_msghandler"
MODULES="${MODULES_INTERFACES} ${MODULES_FEATURES} ${MODULES_HW} ${MODULES_BASE}" MODULES="${MODULES_INTERFACES} ${MODULES_FEATURES} ${MODULES_HW} ${MODULES_BASE}"
RETVAL=0 RETVAL=0
LOCKFILE=/var/lock/subsys/ipmi LOCKFILE=/var/lock/subsys/ipmi
DEV_IPMI_TIMEOUT=15
############################################################################# #############################################################################
load_si() # NOTES:
{ # * /dev/ipmi0 is unconditionally deleted here on ipmi_devintf unload,
if [ "${IPMI_SI}" = "1" ]; then # because SLES9 and RHEL4 kernels don't send a message for udev to delete
modprobe ${IPMI_SI_MODULE_NAME} || RETVAL=1 # it for us.
fi #
}
load_smb()
{
if [ "${IPMI_SMB}" = "1" ]; then
modprobe ${IPMI_SMB_MODULE_NAME} || RETVAL=1
fi
}
load_hw_modules()
{
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 c 10 130 || RETVAL=2
fi
fi
}
stop_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
}
stop_powercontrol()
{
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
}
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|watchdog)"
if [ "$?" -ne "0" ]; then
stop_watchdog
for m in ${MODULES}; do
modprobe -q -r ${m}
done
fi
}
#############################################################################
load_ipmi_modules ()
{
modprobe ipmi_msghandler || RETVAL=1
load_hw_modules
[ "${RETVAL}" = "1" ] && unload_all_ipmi_modules && return
start_watchdog
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}'`
rm -f /dev/ipmi${INTF_NUM}
mknod -m 0600 /dev/ipmi${INTF_NUM} c ${DEVMAJOR} 0 || RETVAL=2
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}'`
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
# and we don't want to encourage its further use
# so it won't be handled here.
return
}
#############################################################################
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
}
#############################################################################
stop()
{
echo -n $"Stopping ${MODULE_NAME} drivers: "
unload_ipmi_modules_leave_features
rm -f ${LOCKFILE}
log_success_msg
}
stop_all()
{
echo -n $"Stopping all ${MODULE_NAME} drivers: "
unload_all_ipmi_modules
rm -f ${LOCKFILE}
log_success_msg
}
#############################################################################
restart()
{
stop_all
start
}
############################################################################# #############################################################################
modules_loaded() modules_loaded_verbose()
{ {
OnePlusLoaded=0 OnePlusLoaded=0
OnePlusUnloaded=0 OnePlusUnloaded=0
@ -219,7 +88,20 @@ modules_loaded()
OnePlusLoaded=1 OnePlusLoaded=1
else else
echo "$m module not loaded." echo "$m module not loaded."
OnePlusUnLoaded=1 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 fi
done done
} }
@ -236,57 +118,346 @@ device_node_exists()
minimum_modules_loaded() minimum_modules_loaded()
{ {
modules_loaded ${MODULES_BASE} rc_base=1
[ ${OnePlusLoaded} -eq 0 ] && return 0 rc_hw=1
modules_loaded_verbose "${MODULES_BASE}"
[ ${OnePlusLoaded} -eq 0 ] && rc_base=0
modules_loaded ${MODULES_HW} modules_loaded_verbose "${MODULES_HW}"
[ ${OnePlusLoaded} -eq 0 ] && return 0 [ ${OnePlusLoaded} -eq 0 ] && rc_hw=0
return 1 return $((rc_base && rc_hw))
} }
# Status return code bits #############################################################################
# bit 0 set = minimum modules aren't loaded
# bit 1 set = requested module isn't loaded load_si()
# bit 2 set = /dev/ipmi0 doesn't exist {
# bit 3 set = /dev/watchdog doesn't exist if [ "${IPMI_SI}" = "1" ]; then
# bit 4 set = lockfile doesn't exist 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} > /dev/null 2>&1
modules_loaded ${IPMI_SMB_MODULE_NAME}
[ ${OnePlusLoaded} -ne 1 ] && RETVAL=$((RETVAL | 1))
fi
}
load_hw_modules()
{
load_si
load_smb
}
start_watchdog_common()
{
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()
{
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
}
stop_watchdog_quiet()
{
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()
{
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()
{
rm -f "/dev/ipmi${INTF_NUM}"
stop_watchdog_quiet
stop_powercontrol_quiet
for m in ${MODULES}; do
modprobe -q -r ${m} > /dev/null 2>&1
done
}
unload_ipmi_modules_leave_features()
{
rm -f "/dev/ipmi${INTF_NUM}"
for m in ${MODULES_INTERFACES}; do
modprobe -q -r ${m} > /dev/null 2>&1
done
lsmod | egrep -q "ipmi_(poweroff|watchdog)"
if [ "$?" -ne "0" ]; then
stop_watchdog_quiet
stop_powercontrol_quiet
for m in ${MODULES}; do
modprobe -q -r ${m} > /dev/null 2>&1
done
fi
}
#############################################################################
load_ipmi_modules ()
{
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)) -eq 1 ] && unload_all_ipmi_modules && RETVAL=$((RETVAL | 1)) && return
if [ "${DEV_IPMI}" = "1" ]; 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=$((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 > /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=$((RETVAL | 4))
fi
fi
# Per Corey Minyard, essentially no one uses ipmi_radisys
# and we don't want to encourage its further use
# so it won't be handled here.
return
}
#############################################################################
start()
{
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: "
unload_ipmi_modules_leave_features
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
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
}
#############################################################################
status_all() status_all()
{ {
RETVAL=0 minimum_modules_loaded
modules_loaded ${MODULES} [ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
modules_loaded_verbose ${MODULES_FEATURES} ${MODULES_INTERFACES}
[ ${OnePlusUnloaded} -ne 0 ] && RETVAL=$((RETVAL | 2)) [ ${OnePlusUnloaded} -ne 0 ] && RETVAL=$((RETVAL | 2))
if [ "${DEV_IPMI}" = "1" ]; then
device_node_exists /dev/ipmi${INTF_NUM} device_node_exists /dev/ipmi${INTF_NUM}
[ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
fi
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 device_node_exists /dev/watchdog
[ $? -eq 0 ] && RETVAL=$((RETVAL | 8)) [ $? -eq 0 ] && RETVAL=$((RETVAL | 8))
fi
[ ! -e ${LOCKFILE} ] && RETVAL=$((RETVAL | 16)) [ ! -e ${LOCKFILE} ] && RETVAL=$((RETVAL | 16))
} }
status() status()
{ {
RETVAL=0
minimum_modules_loaded minimum_modules_loaded
[ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) [ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
modules_loaded ipmi_devintf if [ "${DEV_IPMI}" = "1" ]; then
modules_loaded_verbose ipmi_devintf
[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2)) [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
device_node_exists /dev/ipmi${INTF_NUM} device_node_exists /dev/ipmi${INTF_NUM}
[ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
fi
if [ "${IPMI_IMB}" = "1" ]; then
device_node_exists /dev/imb
[ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
fi
} }
status_watchdog() status_watchdog()
{ {
RETVAL=0
minimum_modules_loaded minimum_modules_loaded
[ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) [ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
modules_loaded ipmi_watchdog modules_loaded_verbose ipmi_watchdog
[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2)) [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
device_node_exists /dev/watchdog device_node_exists /dev/watchdog
@ -295,11 +466,10 @@ status_watchdog()
status_powercontrol() status_powercontrol()
{ {
RETVAL=0
minimum_modules_loaded minimum_modules_loaded
[ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) [ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
modules_loaded ipmi_powercontrol modules_loaded_verbose ipmi_powercontrol
[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2)) [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
} }