Change-Id: I5ff48799866a397104c760e181b4836d5b4524cd
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/3758
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>
| 1 | 1 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,12 @@ |
| 0 |
+[Unit] |
|
| 1 |
+Description=IPMI Driver |
|
| 2 |
+After=network.target |
|
| 3 |
+ |
|
| 4 |
+[Service] |
|
| 5 |
+Type=oneshot |
|
| 6 |
+RemainAfterExit=yes |
|
| 7 |
+ExecStart=/usr/libexec/openipmi-helper start |
|
| 8 |
+ExecStop=/usr/libexec/openipmi-helper stop |
|
| 9 |
+ |
|
| 10 |
+[Install] |
|
| 11 |
+WantedBy=multi-user.target |
| 0 | 12 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,512 @@ |
| 0 |
+#!/bin/sh |
|
| 1 |
+############################################################################# |
|
| 2 |
+# |
|
| 3 |
+# ipmi: OpenIPMI Driver helper script |
|
| 4 |
+# |
|
| 5 |
+# Authors: Jan Safranek <jsafrane@redhat.com> |
|
| 6 |
+# |
|
| 7 |
+# Based on IPMI init script by: |
|
| 8 |
+# Matt Domsch <Matt_Domsch@dell.com> |
|
| 9 |
+# Chris Poblete <Chris_Poblete@dell.com> |
|
| 10 |
+# |
|
| 11 |
+# Status return code bits |
|
| 12 |
+# no bits set = no errors |
|
| 13 |
+# bit 0 set = minimum modules aren't loaded |
|
| 14 |
+# bit 1 set = requested feature module isn't loaded |
|
| 15 |
+# bit 2 set = /dev/ipmi0 (or /dev/imb if using that instead) doesn't exist |
|
| 16 |
+# bit 3 set = /dev/watchdog doesn't exist |
|
| 17 |
+# bit 4 set = lockfile doesn't exist |
|
| 18 |
+# bit 5 set = modules are loaded even when asked to be unloaded |
|
| 19 |
+ |
|
| 20 |
+CONFIGFILE=/etc/sysconfig/ipmi |
|
| 21 |
+# source config info |
|
| 22 |
+[ -r ${CONFIGFILE} ] && . ${CONFIGFILE}
|
|
| 23 |
+ |
|
| 24 |
+############################################################################# |
|
| 25 |
+# GLOBALS |
|
| 26 |
+############################################################################# |
|
| 27 |
+MODULE_NAME="ipmi" |
|
| 28 |
+INTF_NUM=0 |
|
| 29 |
+ |
|
| 30 |
+IPMI_SMB_MODULE_NAME="ipmi_smb" |
|
| 31 |
+IPMI_SI_MODULE_NAME="ipmi_si" |
|
| 32 |
+kernel=`uname -r | cut -d. -f1-2` |
|
| 33 |
+if [ "${kernel}" == "2.4" ]; then
|
|
| 34 |
+ IPMI_SMB_MODULE_NAME="ipmi_smb_intf" |
|
| 35 |
+ IPMI_SI_MODULE_NAME="ipmi_si_drv" |
|
| 36 |
+fi |
|
| 37 |
+ |
|
| 38 |
+MODULES_INTERFACES="" |
|
| 39 |
+[ "${DEV_IPMI}" = "yes" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_devintf"
|
|
| 40 |
+[ "${IPMI_IMB}" = "yes" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_imb"
|
|
| 41 |
+ |
|
| 42 |
+MODULES_FEATURES="" |
|
| 43 |
+[ "${IPMI_WATCHDOG}" = "yes" ] && MODULES_FEATURES="${MODULES_FEATURES} ipmi_watchdog"
|
|
| 44 |
+[ "${IPMI_POWEROFF}" = "yes" ] && MODULES_FEATURES="${MODULES_FEATURES} ipmi_poweroff"
|
|
| 45 |
+ |
|
| 46 |
+MODULES_HW="" |
|
| 47 |
+[ "${IPMI_SI}" = "yes" ] && MODULES_HW="${MODULES_HW} ${IPMI_SI_MODULE_NAME}"
|
|
| 48 |
+[ "${IPMI_SMB}" = "yes" ] && MODULES_HW="${MODULES_HW} ${IPMI_SMB_MODULE_NAME}"
|
|
| 49 |
+ |
|
| 50 |
+MODULES_BASE="ipmi_msghandler" |
|
| 51 |
+MODULES="${MODULES_INTERFACES} ${MODULES_FEATURES} ${MODULES_HW} ${MODULES_BASE}"
|
|
| 52 |
+ |
|
| 53 |
+RETVAL=0 |
|
| 54 |
+LOCKFILE=/var/lock/subsys/ipmi |
|
| 55 |
+DEV_IPMI_TIMEOUT=150 |
|
| 56 |
+ |
|
| 57 |
+UDEV_EXISTS=0 |
|
| 58 |
+if [ -e /sbin/udev -o -e /sbin/udevd ]; then |
|
| 59 |
+ UDEV_EXISTS=1 |
|
| 60 |
+fi |
|
| 61 |
+ |
|
| 62 |
+############################################################################# |
|
| 63 |
+# NOTES: |
|
| 64 |
+# * /dev/ipmi0 is unconditionally deleted here on ipmi_devintf unload, |
|
| 65 |
+# because SLES9 and RHEL4 kernels don't send a message for udev to delete |
|
| 66 |
+# it for us. |
|
| 67 |
+# |
|
| 68 |
+############################################################################# |
|
| 69 |
+ |
|
| 70 |
+modules_loaded_verbose() |
|
| 71 |
+{
|
|
| 72 |
+ OnePlusLoaded=0 |
|
| 73 |
+ OnePlusUnloaded=0 |
|
| 74 |
+ for m in $@; do |
|
| 75 |
+ if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then |
|
| 76 |
+ echo "$m module loaded." |
|
| 77 |
+ OnePlusLoaded=1 |
|
| 78 |
+ else |
|
| 79 |
+ echo "$m module not loaded." |
|
| 80 |
+ OnePlusUnloaded=1 |
|
| 81 |
+ fi |
|
| 82 |
+ done |
|
| 83 |
+} |
|
| 84 |
+ |
|
| 85 |
+modules_loaded() |
|
| 86 |
+{
|
|
| 87 |
+ OnePlusLoaded=0 |
|
| 88 |
+ OnePlusUnloaded=0 |
|
| 89 |
+ for m in $@; do |
|
| 90 |
+ if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then |
|
| 91 |
+ OnePlusLoaded=1 |
|
| 92 |
+ else |
|
| 93 |
+ OnePlusUnloaded=1 |
|
| 94 |
+ fi |
|
| 95 |
+ done |
|
| 96 |
+} |
|
| 97 |
+ |
|
| 98 |
+device_node_exists () |
|
| 99 |
+{
|
|
| 100 |
+ if [ -e "$1" ]; then |
|
| 101 |
+ echo "$1 exists." |
|
| 102 |
+ return 1 |
|
| 103 |
+ fi |
|
| 104 |
+ echo "$1 does not exist." |
|
| 105 |
+ return 0 |
|
| 106 |
+} |
|
| 107 |
+ |
|
| 108 |
+minimum_modules_loaded() |
|
| 109 |
+{
|
|
| 110 |
+ rc_base=1 |
|
| 111 |
+ rc_hw=1 |
|
| 112 |
+ modules_loaded_verbose "${MODULES_BASE}"
|
|
| 113 |
+ [ ${OnePlusLoaded} -eq 0 ] && rc_base=0
|
|
| 114 |
+ |
|
| 115 |
+ modules_loaded_verbose "${MODULES_HW}"
|
|
| 116 |
+ [ ${OnePlusLoaded} -eq 0 ] && rc_hw=0
|
|
| 117 |
+ |
|
| 118 |
+ return $((rc_base && rc_hw)) |
|
| 119 |
+} |
|
| 120 |
+ |
|
| 121 |
+############################################################################# |
|
| 122 |
+ |
|
| 123 |
+load_si() |
|
| 124 |
+{
|
|
| 125 |
+ if [ "${IPMI_SI}" = "yes" ]; then
|
|
| 126 |
+ modprobe ${IPMI_SI_MODULE_NAME} > /dev/null 2>&1
|
|
| 127 |
+ modules_loaded ${IPMI_SI_MODULE_NAME}
|
|
| 128 |
+ [ ${OnePlusLoaded} -ne 1 ] && RETVAL=$((RETVAL | 1))
|
|
| 129 |
+ fi |
|
| 130 |
+} |
|
| 131 |
+ |
|
| 132 |
+load_smb() |
|
| 133 |
+{
|
|
| 134 |
+ if [ "${IPMI_SMB}" = "yes" ]; then
|
|
| 135 |
+ modprobe ${IPMI_SMB_MODULE_NAME} > /dev/null 2>&1
|
|
| 136 |
+ modules_loaded ${IPMI_SMB_MODULE_NAME}
|
|
| 137 |
+ [ ${OnePlusLoaded} -ne 1 ] && RETVAL=$((RETVAL | 1))
|
|
| 138 |
+ fi |
|
| 139 |
+} |
|
| 140 |
+ |
|
| 141 |
+load_hw_modules() |
|
| 142 |
+{
|
|
| 143 |
+ load_si |
|
| 144 |
+ load_smb |
|
| 145 |
+} |
|
| 146 |
+ |
|
| 147 |
+start_watchdog_common() |
|
| 148 |
+{
|
|
| 149 |
+ load_hw_modules |
|
| 150 |
+ modprobe ipmi_watchdog ${IPMI_WATCHDOG_OPTIONS} > /dev/null 2>&1
|
|
| 151 |
+ modules_loaded ipmi_watchdog |
|
| 152 |
+ [ ${OnePlusUnloaded} -ne 0 ] &&
|
|
| 153 |
+ RETVAL=$((RETVAL | 2)) && |
|
| 154 |
+ echo "Watchdog startup failed: cannot load ipmi_watchdog module" && |
|
| 155 |
+ return |
|
| 156 |
+ if [ ${UDEV_EXISTS} -eq 0 -a ! -e /dev/watchdog ]; then
|
|
| 157 |
+ mknod -m 0600 /dev/watchdog c 10 130 |
|
| 158 |
+ [ $? -ne 0 ] && |
|
| 159 |
+ RETVAL=$((RETVAL | 8)) && |
|
| 160 |
+ echo "Watchdog startup failed: cannot create /dev/watchdog" && |
|
| 161 |
+ return |
|
| 162 |
+ fi |
|
| 163 |
+} |
|
| 164 |
+ |
|
| 165 |
+start_watchdog_quiet() |
|
| 166 |
+{
|
|
| 167 |
+ [ "${IPMI_WATCHDOG}" != "yes" ] &&
|
|
| 168 |
+ return |
|
| 169 |
+ start_watchdog_common |
|
| 170 |
+} |
|
| 171 |
+ |
|
| 172 |
+start_watchdog() |
|
| 173 |
+{
|
|
| 174 |
+ [ "${IPMI_WATCHDOG}" != "yes" ] &&
|
|
| 175 |
+ RETVAL=$((RETVAL | 2)) && |
|
| 176 |
+ echo "Watchdog not configured" && |
|
| 177 |
+ return |
|
| 178 |
+ start_watchdog_common |
|
| 179 |
+} |
|
| 180 |
+ |
|
| 181 |
+stop_watchdog() |
|
| 182 |
+{
|
|
| 183 |
+ modprobe -q -r ipmi_watchdog > /dev/null 2>&1 |
|
| 184 |
+ modules_loaded ipmi_watchdog |
|
| 185 |
+ if [ ${OnePlusLoaded} -ne 0 ]; then
|
|
| 186 |
+ RETVAL=$((RETVAL | 32)) |
|
| 187 |
+ echo "Watchog shutdown failed: cannot unload ipmi_watchdog module" |
|
| 188 |
+ else |
|
| 189 |
+ if [ "${IPMI_WATCHDOG}" = "yes" ]; then
|
|
| 190 |
+ [ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog
|
|
| 191 |
+ fi |
|
| 192 |
+ fi |
|
| 193 |
+} |
|
| 194 |
+ |
|
| 195 |
+stop_watchdog_quiet() |
|
| 196 |
+{
|
|
| 197 |
+ modprobe -q -r ipmi_watchdog > /dev/null 2>&1 |
|
| 198 |
+ modules_loaded ipmi_watchdog |
|
| 199 |
+ if [ ${OnePlusLoaded} -ne 0 ]; then
|
|
| 200 |
+ RETVAL=$((RETVAL | 32)) |
|
| 201 |
+ else |
|
| 202 |
+ if [ "${IPMI_WATCHDOG}" = "yes" ]; then
|
|
| 203 |
+ [ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog
|
|
| 204 |
+ fi |
|
| 205 |
+ fi |
|
| 206 |
+} |
|
| 207 |
+ |
|
| 208 |
+start_powercontrol_common() |
|
| 209 |
+{
|
|
| 210 |
+ local poweroff_opts="" |
|
| 211 |
+ load_hw_modules |
|
| 212 |
+ if [ "${IPMI_POWERCYCLE}" == "yes" ]; then
|
|
| 213 |
+ modinfo ipmi_poweroff 2>/dev/null | grep poweroff_control > /dev/null 2>&1 && \ |
|
| 214 |
+ poweroff_opts="poweroff_control=2" |
|
| 215 |
+ modinfo ipmi_poweroff 2>/dev/null | grep poweroff_powercycle > /dev/null 2>&1 && \ |
|
| 216 |
+ poweroff_opts="poweroff_powercycle=1" |
|
| 217 |
+ fi |
|
| 218 |
+ modprobe ipmi_poweroff "${poweroff_opts}" > /dev/null 2>&1
|
|
| 219 |
+ modules_loaded ipmi_poweroff |
|
| 220 |
+ [ ${OnePlusUnloaded} -ne 0 ] &&
|
|
| 221 |
+ RETVAL=$((RETVAL | 2)) && |
|
| 222 |
+ echo "Powercontroll startup failed: cannot load ipmi_poweroff module" && |
|
| 223 |
+ return |
|
| 224 |
+} |
|
| 225 |
+ |
|
| 226 |
+start_powercontrol_quiet() |
|
| 227 |
+{
|
|
| 228 |
+ [ "${IPMI_POWEROFF}" != "yes" ] &&
|
|
| 229 |
+ return |
|
| 230 |
+ start_powercontrol_common |
|
| 231 |
+} |
|
| 232 |
+ |
|
| 233 |
+start_powercontrol() |
|
| 234 |
+{
|
|
| 235 |
+ [ "${IPMI_POWEROFF}" != "yes" ] &&
|
|
| 236 |
+ RETVAL=$((RETVAL | 2)) && |
|
| 237 |
+ echo "Powercontroll not configured" && |
|
| 238 |
+ return |
|
| 239 |
+ start_powercontrol_common |
|
| 240 |
+} |
|
| 241 |
+ |
|
| 242 |
+stop_powercontrol() |
|
| 243 |
+{
|
|
| 244 |
+ modprobe -q -r ipmi_poweroff > /dev/null 2>&1 |
|
| 245 |
+ modules_loaded ipmi_poweroff |
|
| 246 |
+ if [ ${OnePlusLoaded} -ne 0 ]; then
|
|
| 247 |
+ RETVAL=$((RETVAL | 32)) |
|
| 248 |
+ echo "Powercontroll shutdown failed: cannot unload ipmi_poweroff module" |
|
| 249 |
+ fi |
|
| 250 |
+} |
|
| 251 |
+ |
|
| 252 |
+stop_powercontrol_quiet() |
|
| 253 |
+{
|
|
| 254 |
+ modprobe -q -r ipmi_poweroff > /dev/null 2>&1 |
|
| 255 |
+ modules_loaded ipmi_poweroff |
|
| 256 |
+ [ ${OnePlusLoaded} -ne 0 ] && RETVAL=$((RETVAL | 32))
|
|
| 257 |
+} |
|
| 258 |
+ |
|
| 259 |
+############################################################################# |
|
| 260 |
+unload_all_ipmi_modules() |
|
| 261 |
+{
|
|
| 262 |
+ stop_watchdog_quiet |
|
| 263 |
+ stop_powercontrol_quiet |
|
| 264 |
+ for m in ${MODULES}; do
|
|
| 265 |
+ modprobe -q -r ${m} > /dev/null 2>&1
|
|
| 266 |
+ done |
|
| 267 |
+ # delete interface node ONLY if ipmi_devintf is unloaded |
|
| 268 |
+ [ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] && |
|
| 269 |
+ rm -f "/dev/ipmi${INTF_NUM}"
|
|
| 270 |
+} |
|
| 271 |
+ |
|
| 272 |
+unload_ipmi_modules_leave_features() |
|
| 273 |
+{
|
|
| 274 |
+ for m in ${MODULES_INTERFACES}; do
|
|
| 275 |
+ modprobe -q -r ${m} > /dev/null 2>&1
|
|
| 276 |
+ done |
|
| 277 |
+ # delete interface node ONLY if ipmi_devintf is unloaded |
|
| 278 |
+ [ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] && |
|
| 279 |
+ rm -f "/dev/ipmi${INTF_NUM}"
|
|
| 280 |
+ lsmod | egrep -q "ipmi_(poweroff|watchdog)" > /dev/null 2>&1 |
|
| 281 |
+ if [ "$?" -ne "0" ]; then |
|
| 282 |
+ stop_watchdog_quiet |
|
| 283 |
+ stop_powercontrol_quiet |
|
| 284 |
+ for m in ${MODULES}; do
|
|
| 285 |
+ modprobe -q -r ${m} > /dev/null 2>&1
|
|
| 286 |
+ done |
|
| 287 |
+ fi |
|
| 288 |
+} |
|
| 289 |
+ |
|
| 290 |
+############################################################################# |
|
| 291 |
+load_ipmi_modules () |
|
| 292 |
+{
|
|
| 293 |
+ local locdelay |
|
| 294 |
+ modprobe ipmi_msghandler > /dev/null 2>&1 |
|
| 295 |
+ modules_loaded ipmi_msghandler |
|
| 296 |
+ [ ${OnePlusLoaded} -ne 1 ] && unload_all_ipmi_modules && RETVAL=$((RETVAL | 1)) && return
|
|
| 297 |
+ load_hw_modules |
|
| 298 |
+ [ $((RETVAL & 1)) -eq 1 ] && unload_all_ipmi_modules && RETVAL=$((RETVAL | 1)) && return |
|
| 299 |
+ |
|
| 300 |
+ if [ "${DEV_IPMI}" = "yes" ]; then
|
|
| 301 |
+ modprobe ipmi_devintf > /dev/null 2>&1 |
|
| 302 |
+ modules_loaded ipmi_devintf |
|
| 303 |
+ RETVAL=$((RETVAL & ~2)) |
|
| 304 |
+ [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
|
|
| 305 |
+ if [ ${OnePlusLoaded} -eq 1 ]; then
|
|
| 306 |
+ if [ ${UDEV_EXISTS} -eq 0 ]; then
|
|
| 307 |
+ DEVMAJOR=`cat /proc/devices | awk '/ipmidev/{print $1}'`
|
|
| 308 |
+ rm -f /dev/ipmi${INTF_NUM}
|
|
| 309 |
+ mknod -m 0600 /dev/ipmi${INTF_NUM} c ${DEVMAJOR} 0 || RETVAL=$((RETVAL | 4))
|
|
| 310 |
+ fi |
|
| 311 |
+ |
|
| 312 |
+ # udev can take several seconds to create /dev/ipmi0, |
|
| 313 |
+ # but it happens asynchronously, so delay here |
|
| 314 |
+ locdelay=${DEV_IPMI_TIMEOUT}
|
|
| 315 |
+ while [ ! -e /dev/ipmi${INTF_NUM} -a ${locdelay} -gt 0 ]; do
|
|
| 316 |
+ locdelay=$((locdelay - 1)) |
|
| 317 |
+ sleep 0.1 |
|
| 318 |
+ done |
|
| 319 |
+ fi |
|
| 320 |
+ fi |
|
| 321 |
+ |
|
| 322 |
+ if [ "${IPMI_IMB}" = "yes" ]; then
|
|
| 323 |
+ modprobe ipmi_imb > /dev/null 2>&1 |
|
| 324 |
+ modules_loaded ipmi_imb |
|
| 325 |
+ RETVAL=$((RETVAL & ~2)) |
|
| 326 |
+ [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
|
|
| 327 |
+ if [ ${OnePlusLoaded} -eq 1 ]; then
|
|
| 328 |
+ DEVMAJOR=`cat /proc/devices | awk '/imb/{print $1}'`
|
|
| 329 |
+ rm -f /dev/imb |
|
| 330 |
+ mknod -m 0600 /dev/imb c ${DEVMAJOR} 0 || RETVAL=$((RETVAL | 4))
|
|
| 331 |
+ fi |
|
| 332 |
+ fi |
|
| 333 |
+ |
|
| 334 |
+ # Per Corey Minyard, essentially no one uses ipmi_radisys |
|
| 335 |
+ # and we don't want to encourage its further use |
|
| 336 |
+ # so it won't be handled here. |
|
| 337 |
+ return |
|
| 338 |
+} |
|
| 339 |
+ |
|
| 340 |
+############################################################################# |
|
| 341 |
+start() |
|
| 342 |
+{
|
|
| 343 |
+ load_ipmi_modules |
|
| 344 |
+ if [ ${RETVAL} -eq 0 ]; then
|
|
| 345 |
+ touch ${LOCKFILE}
|
|
| 346 |
+ else |
|
| 347 |
+ if [ $((RETVAL & 1)) -eq 1 ]; then |
|
| 348 |
+ echo "Startup failed." |
|
| 349 |
+ else |
|
| 350 |
+ touch ${LOCKFILE} && echo "Warning!?"
|
|
| 351 |
+ fi |
|
| 352 |
+ fi |
|
| 353 |
+ start_watchdog_quiet |
|
| 354 |
+ start_powercontrol_quiet |
|
| 355 |
+} |
|
| 356 |
+ |
|
| 357 |
+############################################################################# |
|
| 358 |
+stop() |
|
| 359 |
+{
|
|
| 360 |
+ unload_ipmi_modules_leave_features |
|
| 361 |
+ modules_loaded ${MODULES_INTERFACES}
|
|
| 362 |
+ if [ ${OnePlusLoaded} -ne 0 ]; then
|
|
| 363 |
+ RETVAL=$((RETVAL | 32)) |
|
| 364 |
+ echo "Shutdown failed, something may be in use" |
|
| 365 |
+ else |
|
| 366 |
+ rm -f ${LOCKFILE}
|
|
| 367 |
+ fi |
|
| 368 |
+} |
|
| 369 |
+ |
|
| 370 |
+stop_all() |
|
| 371 |
+{
|
|
| 372 |
+ unload_all_ipmi_modules |
|
| 373 |
+ modules_loaded ${MODULES}
|
|
| 374 |
+ if [ ${OnePlusLoaded} -ne 0 ]; then
|
|
| 375 |
+ RETVAL=$((RETVAL | 32)) |
|
| 376 |
+ echo "Shutdown failed, something may be in use" |
|
| 377 |
+ else |
|
| 378 |
+ rm -f ${LOCKFILE}
|
|
| 379 |
+ fi |
|
| 380 |
+} |
|
| 381 |
+ |
|
| 382 |
+############################################################################# |
|
| 383 |
+restart() |
|
| 384 |
+{
|
|
| 385 |
+ stop_all |
|
| 386 |
+ RETVAL=0 |
|
| 387 |
+ start |
|
| 388 |
+} |
|
| 389 |
+ |
|
| 390 |
+############################################################################# |
|
| 391 |
+ |
|
| 392 |
+reload() |
|
| 393 |
+{
|
|
| 394 |
+ stop_all |
|
| 395 |
+ RETVAL=0 |
|
| 396 |
+ start |
|
| 397 |
+} |
|
| 398 |
+ |
|
| 399 |
+############################################################################# |
|
| 400 |
+ |
|
| 401 |
+status_all() |
|
| 402 |
+{
|
|
| 403 |
+ minimum_modules_loaded |
|
| 404 |
+ [ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) |
|
| 405 |
+ |
|
| 406 |
+ modules_loaded_verbose ${MODULES_FEATURES} ${MODULES_INTERFACES}
|
|
| 407 |
+ [ ${OnePlusUnloaded} -ne 0 ] && RETVAL=$((RETVAL | 2))
|
|
| 408 |
+ |
|
| 409 |
+ if [ "${DEV_IPMI}" = "yes" ]; then
|
|
| 410 |
+ device_node_exists /dev/ipmi${INTF_NUM}
|
|
| 411 |
+ [ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) |
|
| 412 |
+ fi |
|
| 413 |
+ |
|
| 414 |
+ if [ "${IPMI_IMB}" = "yes" ]; then
|
|
| 415 |
+ device_node_exists /dev/imb |
|
| 416 |
+ [ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) |
|
| 417 |
+ fi |
|
| 418 |
+ |
|
| 419 |
+ if [ "${IPMI_WATCHDOG}" = "yes" ]; then
|
|
| 420 |
+ device_node_exists /dev/watchdog |
|
| 421 |
+ [ $? -eq 0 ] && RETVAL=$((RETVAL | 8)) |
|
| 422 |
+ fi |
|
| 423 |
+ |
|
| 424 |
+ [ ! -e ${LOCKFILE} ] && RETVAL=$((RETVAL | 16))
|
|
| 425 |
+} |
|
| 426 |
+ |
|
| 427 |
+status() |
|
| 428 |
+{
|
|
| 429 |
+ minimum_modules_loaded |
|
| 430 |
+ [ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) |
|
| 431 |
+ |
|
| 432 |
+ if [ "${DEV_IPMI}" = "yes" ]; then
|
|
| 433 |
+ modules_loaded_verbose ipmi_devintf |
|
| 434 |
+ [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
|
|
| 435 |
+ |
|
| 436 |
+ device_node_exists /dev/ipmi${INTF_NUM}
|
|
| 437 |
+ [ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) |
|
| 438 |
+ fi |
|
| 439 |
+ |
|
| 440 |
+ if [ "${IPMI_IMB}" = "yes" ]; then
|
|
| 441 |
+ device_node_exists /dev/imb |
|
| 442 |
+ [ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) |
|
| 443 |
+ fi |
|
| 444 |
+} |
|
| 445 |
+ |
|
| 446 |
+status_watchdog() |
|
| 447 |
+{
|
|
| 448 |
+ minimum_modules_loaded |
|
| 449 |
+ [ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) |
|
| 450 |
+ |
|
| 451 |
+ modules_loaded_verbose ipmi_watchdog |
|
| 452 |
+ [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
|
|
| 453 |
+ |
|
| 454 |
+ device_node_exists /dev/watchdog |
|
| 455 |
+ [ $? -eq 0 ] && RETVAL=$((RETVAL | 8)) |
|
| 456 |
+} |
|
| 457 |
+ |
|
| 458 |
+status_powercontrol() |
|
| 459 |
+{
|
|
| 460 |
+ minimum_modules_loaded |
|
| 461 |
+ [ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) |
|
| 462 |
+ |
|
| 463 |
+ modules_loaded_verbose ipmi_powercontrol |
|
| 464 |
+ [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
|
|
| 465 |
+} |
|
| 466 |
+ |
|
| 467 |
+############################################################################# |
|
| 468 |
+usage () |
|
| 469 |
+{
|
|
| 470 |
+ echo $"Usage: $0 {start|stop|status" 1>&2
|
|
| 471 |
+ echo $" restart|condrestart|try-restart|reload|force-reload" 1>&2 |
|
| 472 |
+ echo $" start-watchdog|stop-watchdog|status-watchdog" 1>&2 |
|
| 473 |
+ echo $" start-powercontrol|stop-powercontrol|status-powercontrol" 1>&2 |
|
| 474 |
+ echo $" stop-all|status-all}" 1>&2 |
|
| 475 |
+ RETVAL=2 |
|
| 476 |
+} |
|
| 477 |
+ |
|
| 478 |
+condrestart () |
|
| 479 |
+{
|
|
| 480 |
+ [ -e ${LOCKFILE} ] && restart
|
|
| 481 |
+} |
|
| 482 |
+ |
|
| 483 |
+############################################################################# |
|
| 484 |
+# MAIN |
|
| 485 |
+############################################################################# |
|
| 486 |
+case "$1" in |
|
| 487 |
+ start) start ;; |
|
| 488 |
+ stop) stop ;; |
|
| 489 |
+ restart) restart ;; |
|
| 490 |
+ force-reload) reload ;; |
|
| 491 |
+ reload) reload ;; |
|
| 492 |
+ status) status ;; |
|
| 493 |
+ status-all) status_all ;; |
|
| 494 |
+ condrestart) condrestart ;; |
|
| 495 |
+ try-restart) condrestart ;; |
|
| 496 |
+ start-watchdog) start_watchdog ;; |
|
| 497 |
+ stop-watchdog) stop_watchdog ;; |
|
| 498 |
+ status-watchdog) status_watchdog ;; |
|
| 499 |
+ start-powercontrol) start_powercontrol ;; |
|
| 500 |
+ stop-powercontrol) stop_powercontrol ;; |
|
| 501 |
+ status-powercontrol) status_powercontrol ;; |
|
| 502 |
+ stop-all) stop_all ;; |
|
| 503 |
+ *) usage ;; |
|
| 504 |
+esac |
|
| 505 |
+ |
|
| 506 |
+exit ${RETVAL}
|
|
| 507 |
+ |
|
| 508 |
+############################################################################# |
|
| 509 |
+# end of file |
|
| 510 |
+############################################################################# |
|
| 511 |
+ |
| 0 | 512 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,179 @@ |
| 0 |
+Summary: A shared library implementation of IPMI and the basic tools |
|
| 1 |
+Name: openipmi |
|
| 2 |
+Version: 2.0.24 |
|
| 3 |
+Release: 1%{?dist}
|
|
| 4 |
+URL: https://sourceforge.net/projects/openipmi/ |
|
| 5 |
+License: LGPLv2+ and GPLv2+ or BSD |
|
| 6 |
+Group: System Environment/Base |
|
| 7 |
+Vendor: VMware, Inc. |
|
| 8 |
+Distribution: Photon |
|
| 9 |
+Source0: https://sourceforge.net/projects/openipmi/files/latest/download/%{name}-%{version}.tar.gz
|
|
| 10 |
+%define sha1 openipmi=f37656813a826a3147ed557c32408f8daa399c28 |
|
| 11 |
+Source1: openipmi-helper |
|
| 12 |
+Source2: ipmi.service |
|
| 13 |
+BuildRequires: systemd |
|
| 14 |
+BuildRequires: perl |
|
| 15 |
+BuildRequires: popt-devel |
|
| 16 |
+BuildRequires: ncurses-devel |
|
| 17 |
+BuildRequires: openssl-devel |
|
| 18 |
+BuildRequires: swig |
|
| 19 |
+Requires: systemd |
|
| 20 |
+ |
|
| 21 |
+%description |
|
| 22 |
+This package contains a shared library implementation of IPMI and the |
|
| 23 |
+basic tools used with OpenIPMI. |
|
| 24 |
+ |
|
| 25 |
+%package devel |
|
| 26 |
+Summary: Development files for OpenIPMI |
|
| 27 |
+Group: Utilities |
|
| 28 |
+Requires: openipmi = %{version}
|
|
| 29 |
+ |
|
| 30 |
+%description devel |
|
| 31 |
+Contains additional files need for a developer to create applications |
|
| 32 |
+and/or middleware that depends on libOpenIPMI |
|
| 33 |
+ |
|
| 34 |
+%package perl |
|
| 35 |
+Summary: Perl interface for OpenIPMI |
|
| 36 |
+Group: Utilities |
|
| 37 |
+Requires: openipmi = %{version}-%{release}, perl >= 5
|
|
| 38 |
+ |
|
| 39 |
+%description perl |
|
| 40 |
+A Perl interface for OpenIPMI. |
|
| 41 |
+ |
|
| 42 |
+%package python |
|
| 43 |
+Summary: Python interface for OpenIPMI |
|
| 44 |
+Group: Utilities |
|
| 45 |
+Requires: openipmi = %{version}-%{release}, python2
|
|
| 46 |
+ |
|
| 47 |
+%description python |
|
| 48 |
+A Python interface for OpenIPMI. |
|
| 49 |
+ |
|
| 50 |
+%package ui |
|
| 51 |
+Summary: User Interface (ui) |
|
| 52 |
+Group: Utilities |
|
| 53 |
+Requires: openipmi = %{version}-%{release}
|
|
| 54 |
+ |
|
| 55 |
+%description ui |
|
| 56 |
+This package contains a user interface |
|
| 57 |
+ |
|
| 58 |
+%package lanserv |
|
| 59 |
+Summary: Emulates an IPMI network listener |
|
| 60 |
+Group: Utilities |
|
| 61 |
+Requires: openipmi = %{version}-%{release}
|
|
| 62 |
+ |
|
| 63 |
+%description lanserv |
|
| 64 |
+This package contains a network IPMI listener. |
|
| 65 |
+ |
|
| 66 |
+%prep |
|
| 67 |
+%setup -n OpenIPMI-%{version}
|
|
| 68 |
+ |
|
| 69 |
+%build |
|
| 70 |
+# USERFIX: Things you might have to add to configure: |
|
| 71 |
+# --with-tclcflags='-I /usr/include/tclN.M' --with-tcllibs=-ltclN.M |
|
| 72 |
+# Obviously, replace N.M with the version of tcl on your system. |
|
| 73 |
+./configure \ |
|
| 74 |
+ --prefix=/usr \ |
|
| 75 |
+ --with-tcl=no \ |
|
| 76 |
+ --disable-static \ |
|
| 77 |
+ --with-tkinter=no \ |
|
| 78 |
+ --docdir=%{_docdir}/%{name}-%{version} \
|
|
| 79 |
+ --with-perl=yes \ |
|
| 80 |
+ --with-perlinstall=%{perl_vendorarch} \
|
|
| 81 |
+ --sysconfdir=%{_sysconfdir}
|
|
| 82 |
+make |
|
| 83 |
+ |
|
| 84 |
+%install |
|
| 85 |
+make DESTDIR=%{buildroot} install
|
|
| 86 |
+install -d %{buildroot}/etc/init.d
|
|
| 87 |
+install -d %{buildroot}/etc/sysconfig
|
|
| 88 |
+install ipmi.init %{buildroot}/etc/init.d/ipmi
|
|
| 89 |
+install ipmi.sysconf %{buildroot}/etc/sysconfig/ipmi
|
|
| 90 |
+find %{buildroot}/%{_libdir} -name '*.la' -delete
|
|
| 91 |
+mkdir -p %{buildroot}/lib/systemd/system
|
|
| 92 |
+mkdir -p %{buildroot}/%{_libexecdir}
|
|
| 93 |
+cp %{SOURCE1} %{buildroot}/%{_libexecdir}/.
|
|
| 94 |
+cp %{SOURCE2} %{buildroot}/lib/systemd/system/ipmi.service
|
|
| 95 |
+chmod 755 %{buildroot}/%{_libexecdir}/openipmi-helper
|
|
| 96 |
+install -vdm755 %{buildroot}%{_libdir}/systemd/system-preset
|
|
| 97 |
+echo "disable ipmi.service" > %{buildroot}%{_libdir}/systemd/system-preset/50-ipmi.preset
|
|
| 98 |
+ |
|
| 99 |
+ |
|
| 100 |
+%preun |
|
| 101 |
+%systemd_preun ipmi.service |
|
| 102 |
+%post |
|
| 103 |
+/sbin/ldconfig |
|
| 104 |
+%systemd_post ipmi.service |
|
| 105 |
+%postun |
|
| 106 |
+/sbin/ldconfig |
|
| 107 |
+%systemd_postun_with_restart ipmi.service |
|
| 108 |
+ |
|
| 109 |
+%files |
|
| 110 |
+%defattr(-,root,root) |
|
| 111 |
+%{_libdir}/libOpenIPMIcmdlang.so.*
|
|
| 112 |
+%{_libdir}/libOpenIPMIposix.so.*
|
|
| 113 |
+%{_libdir}/libOpenIPMIpthread.so.*
|
|
| 114 |
+%{_libdir}/libOpenIPMI.so.*
|
|
| 115 |
+%{_libdir}/libOpenIPMIutils.so.*
|
|
| 116 |
+%doc COPYING COPYING.LIB FAQ INSTALL README README.Force |
|
| 117 |
+%doc README.MotorolaMXP CONFIGURING_FOR_LAN COPYING.BSD |
|
| 118 |
+%exclude /etc/init.d/ipmi |
|
| 119 |
+%config(noreplace) %{_sysconfdir}/sysconfig/ipmi
|
|
| 120 |
+%{_libexecdir}/*
|
|
| 121 |
+/lib/systemd/system/ipmi.service |
|
| 122 |
+%{_libdir}/systemd/system-preset/50-ipmi.preset
|
|
| 123 |
+ |
|
| 124 |
+%files perl |
|
| 125 |
+%defattr(-,root,root) |
|
| 126 |
+%{perl_vendorarch}
|
|
| 127 |
+%doc swig/OpenIPMI.i swig/perl/sample swig/perl/ipmi_powerctl |
|
| 128 |
+ |
|
| 129 |
+%files python |
|
| 130 |
+%defattr(-,root,root) |
|
| 131 |
+%{_libdir}/python*/site-packages/*OpenIPMI.*
|
|
| 132 |
+%doc swig/OpenIPMI.i |
|
| 133 |
+ |
|
| 134 |
+%files devel |
|
| 135 |
+%defattr(-,root,root) |
|
| 136 |
+%{_includedir}/OpenIPMI
|
|
| 137 |
+%{_libdir}/*.so
|
|
| 138 |
+%{_libdir}/pkgconfig
|
|
| 139 |
+%doc doc/IPMI.pdf |
|
| 140 |
+ |
|
| 141 |
+%files ui |
|
| 142 |
+%defattr(-,root,root) |
|
| 143 |
+%{_bindir}/ipmi_ui
|
|
| 144 |
+%{_bindir}/ipmicmd
|
|
| 145 |
+%{_bindir}/openipmicmd
|
|
| 146 |
+%{_bindir}/openipmi_eventd
|
|
| 147 |
+%{_bindir}/ipmish
|
|
| 148 |
+%{_bindir}/openipmish
|
|
| 149 |
+%{_bindir}/solterm
|
|
| 150 |
+%{_bindir}/rmcp_ping
|
|
| 151 |
+%{_libdir}/libOpenIPMIui.so.*
|
|
| 152 |
+%{_mandir}/man1/ipmi_ui.1*
|
|
| 153 |
+%{_mandir}/man1/openipmicmd.1*
|
|
| 154 |
+%{_mandir}/man1/openipmish.1*
|
|
| 155 |
+%{_mandir}/man1/openipmigui.1*
|
|
| 156 |
+%{_mandir}/man1/solterm.1*
|
|
| 157 |
+%{_mandir}/man1/openipmi_eventd.1.gz
|
|
| 158 |
+%{_mandir}/man1/rmcp_ping.1*
|
|
| 159 |
+%{_mandir}/man7/ipmi_cmdlang.7*
|
|
| 160 |
+%{_mandir}/man7/openipmi_conparms.7*
|
|
| 161 |
+ |
|
| 162 |
+%files lanserv |
|
| 163 |
+%defattr(-,root,root) |
|
| 164 |
+%{_bindir}/ipmilan
|
|
| 165 |
+%{_bindir}/ipmi_sim
|
|
| 166 |
+%{_bindir}/sdrcomp
|
|
| 167 |
+%{_libdir}/libIPMIlanserv.so.*
|
|
| 168 |
+%config(noreplace) %{_sysconfdir}/ipmi/ipmisim1.emu
|
|
| 169 |
+%config(noreplace) %{_sysconfdir}/ipmi/lan.conf
|
|
| 170 |
+%{_mandir}/man8/ipmilan.8*
|
|
| 171 |
+%{_mandir}/man1/ipmi_sim.1.gz
|
|
| 172 |
+%{_mandir}/man5/ipmi_lan.5.gz
|
|
| 173 |
+%{_mandir}/man5/ipmi_sim_cmd.5.gz
|
|
| 174 |
+ |
|
| 175 |
+%changelog |
|
| 176 |
+* Mon Sep 11 2017 Xiaolin Li <xiaolinl@vmware.com> 2.0.24-1 |
|
| 177 |
+- Initial build. First version |
|
| 178 |
+ |