diff options
Diffstat (limited to 'recipes-extended')
-rw-r--r-- | recipes-extended/openipmi/openipmi-2.0.21/openipmi.initscript | 584 | ||||
-rw-r--r-- | recipes-extended/openipmi/openipmi-2.0.21/openipmi.service | 12 | ||||
-rw-r--r-- | recipes-extended/openipmi/openipmi.inc | 15 | ||||
-rw-r--r-- | recipes-extended/openipmi/openipmi_2.0.21.bb | 2 |
4 files changed, 611 insertions, 2 deletions
diff --git a/recipes-extended/openipmi/openipmi-2.0.21/openipmi.initscript b/recipes-extended/openipmi/openipmi-2.0.21/openipmi.initscript new file mode 100644 index 0000000..3eda3f8 --- /dev/null +++ b/recipes-extended/openipmi/openipmi-2.0.21/openipmi.initscript | |||
@@ -0,0 +1,584 @@ | |||
1 | #!/bin/sh | ||
2 | ############################################################################# | ||
3 | # | ||
4 | # ipmi: OpenIPMI Driver init script | ||
5 | # | ||
6 | # Authors: Matt Domsch <Matt_Domsch@dell.com> | ||
7 | # Chris Poblete <Chris_Poblete@dell.com> | ||
8 | # | ||
9 | # chkconfig: - 13 87 | ||
10 | # description: OpenIPMI Driver init script | ||
11 | # | ||
12 | ### BEGIN INIT INFO | ||
13 | # Provides: ipmidrv | ||
14 | # Required-Start: $local_fs $remote_fs $syslog | ||
15 | # Required-Stop: $local_fs $remote_fs $syslog | ||
16 | # Default-Start: | ||
17 | # Default-Stop: | ||
18 | # Short-Description: OpenIPMI Driver init script | ||
19 | # Description: OpenIPMI Driver init script | ||
20 | ### END INIT INFO | ||
21 | # | ||
22 | # Status return code bits | ||
23 | # no bits set = no errors | ||
24 | # bit 0 set = minimum modules aren't loaded | ||
25 | # bit 1 set = requested feature module isn't loaded | ||
26 | # bit 2 set = /dev/ipmi0 (or /dev/imb if using that instead) doesn't exist | ||
27 | # bit 3 set = /dev/watchdog doesn't exist | ||
28 | # bit 4 set = lockfile doesn't exist | ||
29 | # bit 5 set = modules are loaded even when asked to be unloaded | ||
30 | |||
31 | # | ||
32 | ############################################################################# | ||
33 | # for log_success_msg and friends | ||
34 | if [ -r /lib/lsb/init-functions ]; then | ||
35 | # LSB, SLES, ... | ||
36 | . /lib/lsb/init-functions | ||
37 | elif [ -r /etc/init.d/functions ]; then | ||
38 | # Red Hat / VMware | ||
39 | . /etc/init.d/functions | ||
40 | my_log_message() | ||
41 | { | ||
42 | ACTION=$1 | ||
43 | shift | ||
44 | |||
45 | case "$ACTION" in | ||
46 | success) | ||
47 | echo -n $* | ||
48 | success "$*" | ||
49 | echo | ||
50 | ;; | ||
51 | failure) | ||
52 | echo -n $* | ||
53 | failure "$*" | ||
54 | echo | ||
55 | ;; | ||
56 | warning) | ||
57 | echo -n $* | ||
58 | warning "$*" | ||
59 | echo | ||
60 | ;; | ||
61 | *) | ||
62 | ;; | ||
63 | esac | ||
64 | } | ||
65 | log_success_msg() | ||
66 | { | ||
67 | my_log_message success "$*" | ||
68 | } | ||
69 | log_failure_msg() | ||
70 | { | ||
71 | my_log_message failure "$*" | ||
72 | } | ||
73 | log_warning_msg() | ||
74 | { | ||
75 | my_log_message warning "$*" | ||
76 | } | ||
77 | fi | ||
78 | |||
79 | CONFIGFILE=/etc/sysconfig/ipmi | ||
80 | # source config info | ||
81 | [ -r ${CONFIGFILE} ] && . ${CONFIGFILE} | ||
82 | |||
83 | ############################################################################# | ||
84 | # GLOBALS | ||
85 | ############################################################################# | ||
86 | MODULE_NAME="ipmi" | ||
87 | INTF_NUM=0 | ||
88 | |||
89 | IPMI_SMB_MODULE_NAME="ipmi_smb" | ||
90 | IPMI_SI_MODULE_NAME="ipmi_si" | ||
91 | kernel=`uname -r | cut -d. -f1-2` | ||
92 | if [ "${kernel}" == "2.4" ]; then | ||
93 | IPMI_SMB_MODULE_NAME="ipmi_smb_intf" | ||
94 | IPMI_SI_MODULE_NAME="ipmi_si_drv" | ||
95 | fi | ||
96 | |||
97 | MODULES_INTERFACES="" | ||
98 | [ "${DEV_IPMI}" = "yes" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_devintf" | ||
99 | [ "${IPMI_IMB}" = "yes" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_imb" | ||
100 | |||
101 | MODULES_FEATURES="" | ||
102 | [ "${IPMI_WATCHDOG}" = "yes" ] && MODULES_FEATURES="${MODULES_FEATURES} ipmi_watchdog" | ||
103 | [ "${IPMI_POWEROFF}" = "yes" ] && MODULES_FEATURES="${MODULES_FEATURES} ipmi_poweroff" | ||
104 | |||
105 | MODULES_HW="" | ||
106 | [ "${IPMI_SI}" = "yes" ] && MODULES_HW="${MODULES_HW} ${IPMI_SI_MODULE_NAME}" | ||
107 | [ "${IPMI_SMB}" = "yes" ] && MODULES_HW="${MODULES_HW} ${IPMI_SMB_MODULE_NAME}" | ||
108 | |||
109 | MODULES_BASE="ipmi_msghandler" | ||
110 | MODULES="${MODULES_INTERFACES} ${MODULES_FEATURES} ${MODULES_HW} ${MODULES_BASE}" | ||
111 | |||
112 | RETVAL=0 | ||
113 | LOCKFILE=/var/lock/subsys/ipmi | ||
114 | DEV_IPMI_TIMEOUT=150 | ||
115 | |||
116 | UDEV_EXISTS=0 | ||
117 | if [ -e /sbin/udev -o -e /sbin/udevd ]; then | ||
118 | UDEV_EXISTS=1 | ||
119 | fi | ||
120 | |||
121 | ############################################################################# | ||
122 | # NOTES: | ||
123 | # * /dev/ipmi0 is unconditionally deleted here on ipmi_devintf unload, | ||
124 | # because SLES9 and RHEL4 kernels don't send a message for udev to delete | ||
125 | # it for us. | ||
126 | # | ||
127 | ############################################################################# | ||
128 | |||
129 | modules_loaded_verbose() | ||
130 | { | ||
131 | OnePlusLoaded=0 | ||
132 | OnePlusUnloaded=0 | ||
133 | for m in $@; do | ||
134 | if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then | ||
135 | echo "$m module loaded." | ||
136 | OnePlusLoaded=1 | ||
137 | else | ||
138 | echo "$m module not loaded." | ||
139 | OnePlusUnloaded=1 | ||
140 | fi | ||
141 | done | ||
142 | } | ||
143 | |||
144 | modules_loaded() | ||
145 | { | ||
146 | OnePlusLoaded=0 | ||
147 | OnePlusUnloaded=0 | ||
148 | for m in $@; do | ||
149 | if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then | ||
150 | OnePlusLoaded=1 | ||
151 | else | ||
152 | OnePlusUnloaded=1 | ||
153 | fi | ||
154 | done | ||
155 | } | ||
156 | |||
157 | device_node_exists () | ||
158 | { | ||
159 | if [ -e "$1" ]; then | ||
160 | echo "$1 exists." | ||
161 | return 1 | ||
162 | fi | ||
163 | echo "$1 does not exist." | ||
164 | return 0 | ||
165 | } | ||
166 | |||
167 | minimum_modules_loaded() | ||
168 | { | ||
169 | rc_base=1 | ||
170 | rc_hw=1 | ||
171 | modules_loaded_verbose "${MODULES_BASE}" | ||
172 | [ ${OnePlusLoaded} -eq 0 ] && rc_base=0 | ||
173 | |||
174 | modules_loaded_verbose "${MODULES_HW}" | ||
175 | [ ${OnePlusLoaded} -eq 0 ] && rc_hw=0 | ||
176 | |||
177 | return $((rc_base && rc_hw)) | ||
178 | } | ||
179 | |||
180 | ############################################################################# | ||
181 | |||
182 | load_si() | ||
183 | { | ||
184 | if [ "${IPMI_SI}" = "yes" ]; then | ||
185 | modprobe ${IPMI_SI_MODULE_NAME} > /dev/null 2>&1 | ||
186 | modules_loaded ${IPMI_SI_MODULE_NAME} | ||
187 | [ ${OnePlusLoaded} -ne 1 ] && RETVAL=$((RETVAL | 1)) | ||
188 | fi | ||
189 | } | ||
190 | |||
191 | load_smb() | ||
192 | { | ||
193 | if [ "${IPMI_SMB}" = "yes" ]; then | ||
194 | modprobe ${IPMI_SMB_MODULE_NAME} > /dev/null 2>&1 | ||
195 | modules_loaded ${IPMI_SMB_MODULE_NAME} | ||
196 | [ ${OnePlusLoaded} -ne 1 ] && RETVAL=$((RETVAL | 1)) | ||
197 | fi | ||
198 | } | ||
199 | |||
200 | load_hw_modules() | ||
201 | { | ||
202 | load_si | ||
203 | load_smb | ||
204 | } | ||
205 | |||
206 | start_watchdog_common() | ||
207 | { | ||
208 | load_hw_modules | ||
209 | modprobe ipmi_watchdog ${IPMI_WATCHDOG_OPTIONS} > /dev/null 2>&1 | ||
210 | modules_loaded ipmi_watchdog | ||
211 | [ ${OnePlusUnloaded} -ne 0 ] && | ||
212 | RETVAL=$((RETVAL | 2)) && | ||
213 | log_failure_msg && | ||
214 | return | ||
215 | if [ ${UDEV_EXISTS} -eq 0 -a ! -e /dev/watchdog ]; then | ||
216 | mknod -m 0600 /dev/watchdog c 10 130 | ||
217 | [ $? -ne 0 ] && | ||
218 | RETVAL=$((RETVAL | 8)) && | ||
219 | log_failure_msg && | ||
220 | return | ||
221 | fi | ||
222 | log_success_msg | ||
223 | } | ||
224 | |||
225 | start_watchdog_quiet() | ||
226 | { | ||
227 | [ "${IPMI_WATCHDOG}" != "yes" ] && | ||
228 | return | ||
229 | echo -n $"Starting ipmi_watchdog driver: " | ||
230 | start_watchdog_common | ||
231 | } | ||
232 | |||
233 | start_watchdog() | ||
234 | { | ||
235 | echo -n $"Starting ipmi_watchdog driver: " | ||
236 | [ "${IPMI_WATCHDOG}" != "yes" ] && | ||
237 | RETVAL=$((RETVAL | 2)) && | ||
238 | log_failure_msg "not configured" && | ||
239 | return | ||
240 | start_watchdog_common | ||
241 | } | ||
242 | |||
243 | stop_watchdog() | ||
244 | { | ||
245 | echo -n $"Stopping ipmi_watchdog driver: " | ||
246 | modprobe -q -r ipmi_watchdog > /dev/null 2>&1 | ||
247 | modules_loaded ipmi_watchdog | ||
248 | if [ ${OnePlusLoaded} -ne 0 ]; then | ||
249 | RETVAL=$((RETVAL | 32)) | ||
250 | log_failure_msg | ||
251 | else | ||
252 | if [ "${IPMI_WATCHDOG}" = "yes" ]; then | ||
253 | [ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog | ||
254 | fi | ||
255 | log_success_msg | ||
256 | fi | ||
257 | } | ||
258 | |||
259 | stop_watchdog_quiet() | ||
260 | { | ||
261 | modprobe -q -r ipmi_watchdog > /dev/null 2>&1 | ||
262 | modules_loaded ipmi_watchdog | ||
263 | if [ ${OnePlusLoaded} -ne 0 ]; then | ||
264 | RETVAL=$((RETVAL | 32)) | ||
265 | else | ||
266 | if [ "${IPMI_WATCHDOG}" = "yes" ]; then | ||
267 | [ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog | ||
268 | fi | ||
269 | fi | ||
270 | } | ||
271 | |||
272 | start_powercontrol_common() | ||
273 | { | ||
274 | local poweroff_opts="" | ||
275 | load_hw_modules | ||
276 | if [ "${IPMI_POWERCYCLE}" == "yes" ]; then | ||
277 | modinfo ipmi_poweroff 2>/dev/null | grep poweroff_control > /dev/null 2>&1 && \ | ||
278 | poweroff_opts="poweroff_control=2" | ||
279 | modinfo ipmi_poweroff 2>/dev/null | grep poweroff_powercycle > /dev/null 2>&1 && \ | ||
280 | poweroff_opts="poweroff_powercycle=1" | ||
281 | fi | ||
282 | modprobe ipmi_poweroff "${poweroff_opts}" > /dev/null 2>&1 | ||
283 | modules_loaded ipmi_poweroff | ||
284 | [ ${OnePlusUnloaded} -ne 0 ] && | ||
285 | RETVAL=$((RETVAL | 2)) && | ||
286 | log_failure_msg && | ||
287 | return | ||
288 | log_success_msg | ||
289 | } | ||
290 | |||
291 | start_powercontrol_quiet() | ||
292 | { | ||
293 | [ "${IPMI_POWEROFF}" != "yes" ] && | ||
294 | return | ||
295 | echo -n $"Starting ipmi_poweroff driver: " | ||
296 | start_powercontrol_common | ||
297 | } | ||
298 | |||
299 | start_powercontrol() | ||
300 | { | ||
301 | echo -n $"Starting ipmi_poweroff driver: " | ||
302 | [ "${IPMI_POWEROFF}" != "yes" ] && | ||
303 | RETVAL=$((RETVAL | 2)) && | ||
304 | log_failure_msg "not configured" && | ||
305 | return | ||
306 | start_powercontrol_common | ||
307 | } | ||
308 | |||
309 | stop_powercontrol() | ||
310 | { | ||
311 | echo -n $"Stopping ipmi_poweroff driver: " | ||
312 | modprobe -q -r ipmi_poweroff > /dev/null 2>&1 | ||
313 | modules_loaded ipmi_poweroff | ||
314 | if [ ${OnePlusLoaded} -ne 0 ]; then | ||
315 | RETVAL=$((RETVAL | 32)) | ||
316 | log_failure_msg | ||
317 | else | ||
318 | log_success_msg | ||
319 | fi | ||
320 | } | ||
321 | |||
322 | stop_powercontrol_quiet() | ||
323 | { | ||
324 | modprobe -q -r ipmi_poweroff > /dev/null 2>&1 | ||
325 | modules_loaded ipmi_poweroff | ||
326 | [ ${OnePlusLoaded} -ne 0 ] && RETVAL=$((RETVAL | 32)) | ||
327 | } | ||
328 | |||
329 | ############################################################################# | ||
330 | unload_all_ipmi_modules() | ||
331 | { | ||
332 | stop_watchdog_quiet | ||
333 | stop_powercontrol_quiet | ||
334 | for m in ${MODULES}; do | ||
335 | modprobe -q -r ${m} > /dev/null 2>&1 | ||
336 | done | ||
337 | # delete interface node ONLY if ipmi_devintf is unloaded | ||
338 | [ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] && | ||
339 | rm -f "/dev/ipmi${INTF_NUM}" | ||
340 | } | ||
341 | |||
342 | unload_ipmi_modules_leave_features() | ||
343 | { | ||
344 | for m in ${MODULES_INTERFACES}; do | ||
345 | modprobe -q -r ${m} > /dev/null 2>&1 | ||
346 | done | ||
347 | # delete interface node ONLY if ipmi_devintf is unloaded | ||
348 | [ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] && | ||
349 | rm -f "/dev/ipmi${INTF_NUM}" | ||
350 | lsmod | egrep -q "ipmi_(poweroff|watchdog)" > /dev/null 2>&1 | ||
351 | if [ "$?" -ne "0" ]; then | ||
352 | stop_watchdog_quiet | ||
353 | stop_powercontrol_quiet | ||
354 | for m in ${MODULES}; do | ||
355 | modprobe -q -r ${m} > /dev/null 2>&1 | ||
356 | done | ||
357 | fi | ||
358 | } | ||
359 | |||
360 | ############################################################################# | ||
361 | load_ipmi_modules () | ||
362 | { | ||
363 | local locdelay | ||
364 | modprobe ipmi_msghandler > /dev/null 2>&1 | ||
365 | modules_loaded ipmi_msghandler | ||
366 | [ ${OnePlusLoaded} -ne 1 ] && unload_all_ipmi_modules && RETVAL=$((RETVAL | 1)) && return | ||
367 | load_hw_modules | ||
368 | [ $((RETVAL & 1)) -eq 1 ] && unload_all_ipmi_modules && RETVAL=$((RETVAL | 1)) && return | ||
369 | |||
370 | if [ "${DEV_IPMI}" = "yes" ]; then | ||
371 | modprobe ipmi_devintf > /dev/null 2>&1 | ||
372 | modules_loaded ipmi_devintf | ||
373 | RETVAL=$((RETVAL & ~2)) | ||
374 | [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2)) | ||
375 | if [ ${OnePlusLoaded} -eq 1 ]; then | ||
376 | if [ ${UDEV_EXISTS} -eq 0 ]; then | ||
377 | DEVMAJOR=`cat /proc/devices | awk '/ipmidev/{print $1}'` | ||
378 | rm -f /dev/ipmi${INTF_NUM} | ||
379 | mknod -m 0600 /dev/ipmi${INTF_NUM} c ${DEVMAJOR} 0 || RETVAL=$((RETVAL | 4)) | ||
380 | fi | ||
381 | |||
382 | # udev can take several seconds to create /dev/ipmi0, | ||
383 | # but it happens asynchronously, so delay here | ||
384 | locdelay=${DEV_IPMI_TIMEOUT} | ||
385 | while [ ! -e /dev/ipmi${INTF_NUM} -a ${locdelay} -gt 0 ]; do | ||
386 | locdelay=$((locdelay - 1)) | ||
387 | sleep 0.1 | ||
388 | done | ||
389 | fi | ||
390 | fi | ||
391 | |||
392 | if [ "${IPMI_IMB}" = "yes" ]; then | ||
393 | modprobe ipmi_imb > /dev/null 2>&1 | ||
394 | modules_loaded ipmi_imb | ||
395 | RETVAL=$((RETVAL & ~2)) | ||
396 | [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2)) | ||
397 | if [ ${OnePlusLoaded} -eq 1 ]; then | ||
398 | DEVMAJOR=`cat /proc/devices | awk '/imb/{print $1}'` | ||
399 | rm -f /dev/imb | ||
400 | mknod -m 0600 /dev/imb c ${DEVMAJOR} 0 || RETVAL=$((RETVAL | 4)) | ||
401 | fi | ||
402 | fi | ||
403 | |||
404 | # Per Corey Minyard, essentially no one uses ipmi_radisys | ||
405 | # and we don't want to encourage its further use | ||
406 | # so it won't be handled here. | ||
407 | return | ||
408 | } | ||
409 | |||
410 | ############################################################################# | ||
411 | start() | ||
412 | { | ||
413 | echo -n "Starting ${MODULE_NAME} drivers: " | ||
414 | load_ipmi_modules | ||
415 | if [ ${RETVAL} -eq 0 ]; then | ||
416 | touch ${LOCKFILE} && log_success_msg | ||
417 | else | ||
418 | if [ $((RETVAL & 1)) -eq 1 ]; then | ||
419 | log_failure_msg | ||
420 | else | ||
421 | touch ${LOCKFILE} && log_warning_msg | ||
422 | fi | ||
423 | fi | ||
424 | start_watchdog_quiet | ||
425 | start_powercontrol_quiet | ||
426 | } | ||
427 | |||
428 | ############################################################################# | ||
429 | stop() | ||
430 | { | ||
431 | echo -n "Stopping ${MODULE_NAME} drivers: " | ||
432 | unload_ipmi_modules_leave_features | ||
433 | modules_loaded ${MODULES_INTERFACES} | ||
434 | if [ ${OnePlusLoaded} -ne 0 ]; then | ||
435 | RETVAL=$((RETVAL | 32)) | ||
436 | log_failure_msg "may be in use" | ||
437 | else | ||
438 | rm -f ${LOCKFILE} | ||
439 | log_success_msg | ||
440 | fi | ||
441 | } | ||
442 | |||
443 | stop_all() | ||
444 | { | ||
445 | echo -n $"Stopping all ${MODULE_NAME} drivers: " | ||
446 | unload_all_ipmi_modules | ||
447 | modules_loaded ${MODULES} | ||
448 | if [ ${OnePlusLoaded} -ne 0 ]; then | ||
449 | RETVAL=$((RETVAL | 32)) | ||
450 | log_failure_msg "may be in use" | ||
451 | else | ||
452 | rm -f ${LOCKFILE} | ||
453 | log_success_msg | ||
454 | fi | ||
455 | } | ||
456 | |||
457 | ############################################################################# | ||
458 | restart() | ||
459 | { | ||
460 | stop_all | ||
461 | RETVAL=0 | ||
462 | start | ||
463 | } | ||
464 | |||
465 | ############################################################################# | ||
466 | |||
467 | reload() | ||
468 | { | ||
469 | stop_all | ||
470 | RETVAL=0 | ||
471 | start | ||
472 | } | ||
473 | |||
474 | ############################################################################# | ||
475 | |||
476 | status_all() | ||
477 | { | ||
478 | minimum_modules_loaded | ||
479 | [ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) | ||
480 | |||
481 | modules_loaded_verbose ${MODULES_FEATURES} ${MODULES_INTERFACES} | ||
482 | [ ${OnePlusUnloaded} -ne 0 ] && RETVAL=$((RETVAL | 2)) | ||
483 | |||
484 | if [ "${DEV_IPMI}" = "yes" ]; then | ||
485 | device_node_exists /dev/ipmi${INTF_NUM} | ||
486 | [ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) | ||
487 | fi | ||
488 | |||
489 | if [ "${IPMI_IMB}" = "yes" ]; then | ||
490 | device_node_exists /dev/imb | ||
491 | [ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) | ||
492 | fi | ||
493 | |||
494 | if [ "${IPMI_WATCHDOG}" = "yes" ]; then | ||
495 | device_node_exists /dev/watchdog | ||
496 | [ $? -eq 0 ] && RETVAL=$((RETVAL | 8)) | ||
497 | fi | ||
498 | |||
499 | [ ! -e ${LOCKFILE} ] && RETVAL=$((RETVAL | 16)) | ||
500 | } | ||
501 | |||
502 | status() | ||
503 | { | ||
504 | minimum_modules_loaded | ||
505 | [ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) | ||
506 | |||
507 | if [ "${DEV_IPMI}" = "yes" ]; then | ||
508 | modules_loaded_verbose ipmi_devintf | ||
509 | [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2)) | ||
510 | |||
511 | device_node_exists /dev/ipmi${INTF_NUM} | ||
512 | [ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) | ||
513 | fi | ||
514 | |||
515 | if [ "${IPMI_IMB}" = "yes" ]; then | ||
516 | device_node_exists /dev/imb | ||
517 | [ $? -eq 0 ] && RETVAL=$((RETVAL | 4)) | ||
518 | fi | ||
519 | } | ||
520 | |||
521 | status_watchdog() | ||
522 | { | ||
523 | minimum_modules_loaded | ||
524 | [ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) | ||
525 | |||
526 | modules_loaded_verbose ipmi_watchdog | ||
527 | [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2)) | ||
528 | |||
529 | device_node_exists /dev/watchdog | ||
530 | [ $? -eq 0 ] && RETVAL=$((RETVAL | 8)) | ||
531 | } | ||
532 | |||
533 | status_powercontrol() | ||
534 | { | ||
535 | minimum_modules_loaded | ||
536 | [ $? -eq 0 ] && RETVAL=$((RETVAL | 1)) | ||
537 | |||
538 | modules_loaded_verbose ipmi_powercontrol | ||
539 | [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2)) | ||
540 | } | ||
541 | |||
542 | ############################################################################# | ||
543 | usage () | ||
544 | { | ||
545 | echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart" 1>&2 | ||
546 | echo $" start-watchdog|stop-watchdog|status-watchdog" 1>&2 | ||
547 | echo $" start-powercontrol|stop-powercontrol|status-powercontrol" 1>&2 | ||
548 | echo $" stop-all|status-all}" 1>&2 | ||
549 | RETVAL=1 | ||
550 | } | ||
551 | |||
552 | condrestart () | ||
553 | { | ||
554 | [ -e ${LOCKFILE} ] && restart | ||
555 | } | ||
556 | |||
557 | ############################################################################# | ||
558 | # MAIN | ||
559 | ############################################################################# | ||
560 | case "$1" in | ||
561 | start) start ;; | ||
562 | stop) stop ;; | ||
563 | restart) restart ;; | ||
564 | reload) reload ;; | ||
565 | status) status ;; | ||
566 | status-all) status_all ;; | ||
567 | condrestart) condrestart ;; | ||
568 | try-restart) condrestart ;; | ||
569 | start-watchdog) start_watchdog ;; | ||
570 | stop-watchdog) stop_watchdog ;; | ||
571 | status-watchdog) status_watchdog ;; | ||
572 | start-powercontrol) start_powercontrol ;; | ||
573 | stop-powercontrol) stop_powercontrol ;; | ||
574 | status-powercontrol) status_powercontrol ;; | ||
575 | stop-all) stop_all ;; | ||
576 | *) usage ;; | ||
577 | esac | ||
578 | |||
579 | exit ${RETVAL} | ||
580 | |||
581 | ############################################################################# | ||
582 | # end of file | ||
583 | ############################################################################# | ||
584 | |||
diff --git a/recipes-extended/openipmi/openipmi-2.0.21/openipmi.service b/recipes-extended/openipmi/openipmi-2.0.21/openipmi.service new file mode 100644 index 0000000..f85ed20 --- /dev/null +++ b/recipes-extended/openipmi/openipmi-2.0.21/openipmi.service | |||
@@ -0,0 +1,12 @@ | |||
1 | [Unit] | ||
2 | Description=IPMI Driver | ||
3 | After=network.target | ||
4 | |||
5 | [Service] | ||
6 | Type=oneshot | ||
7 | RemainAfterExit=yes | ||
8 | ExecStart=@libexecdir@/openipmi-helper start | ||
9 | ExecStop=@libexecdir@/openipmi-helper stop | ||
10 | |||
11 | [Install] | ||
12 | WantedBy=multi-user.target | ||
diff --git a/recipes-extended/openipmi/openipmi.inc b/recipes-extended/openipmi/openipmi.inc index 6bb8345..d36f806 100644 --- a/recipes-extended/openipmi/openipmi.inc +++ b/recipes-extended/openipmi/openipmi.inc | |||
@@ -13,7 +13,7 @@ DEPENDS = " \ | |||
13 | 13 | ||
14 | INC_PR = "r2" | 14 | INC_PR = "r2" |
15 | 15 | ||
16 | inherit autotools gettext update-alternatives | 16 | inherit autotools gettext update-alternatives systemd |
17 | 17 | ||
18 | PACKAGECONFIG ??= "net-snmp" | 18 | PACKAGECONFIG ??= "net-snmp" |
19 | 19 | ||
@@ -30,5 +30,16 @@ S = "${WORKDIR}/OpenIPMI-${PV}" | |||
30 | 30 | ||
31 | PARALLEL_MAKEINST = "" | 31 | PARALLEL_MAKEINST = "" |
32 | 32 | ||
33 | FILES_${PN} += "/usr/lib/perl5" | 33 | do_install_append() { |
34 | install -d ${D}/etc/init.d | ||
35 | install -m 755 ${WORKDIR}/openipmi.initscript ${D}/etc/init.d/ipmi | ||
36 | install -d ${D}/${systemd_unitdir}/system | ||
37 | install -m 644 ${WORKDIR}/openipmi.service ${D}/${systemd_unitdir}/system/ipmi.service | ||
38 | sed -i -e 's,@libexecdir@,${libexecdir},g' ${D}/${systemd_unitdir}/system/ipmi.service | ||
39 | install -d ${D}/${libexecdir} | ||
40 | install -m 755 ${WORKDIR}/openipmi.initscript ${D}${libexecdir}/openipmi-helper | ||
41 | } | ||
42 | |||
43 | FILES_${PN} += "/usr/lib/perl5 \ | ||
44 | ${systemd_unitdir}" | ||
34 | FILES_${PN}-dbg += "/usr/lib/perl5/auto/OpenIPMI/.debug" | 45 | FILES_${PN}-dbg += "/usr/lib/perl5/auto/OpenIPMI/.debug" |
diff --git a/recipes-extended/openipmi/openipmi_2.0.21.bb b/recipes-extended/openipmi/openipmi_2.0.21.bb index 6ada1d8..20b2bac 100644 --- a/recipes-extended/openipmi/openipmi_2.0.21.bb +++ b/recipes-extended/openipmi/openipmi_2.0.21.bb | |||
@@ -5,6 +5,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/openipmi/OpenIPMI-${PV}.tar.gz \ | |||
5 | file://makefile_glib.patch \ | 5 | file://makefile_glib.patch \ |
6 | file://makefile_cmdlang.patch \ | 6 | file://makefile_cmdlang.patch \ |
7 | file://makefile_tcl.patch \ | 7 | file://makefile_tcl.patch \ |
8 | file://openipmi.service \ | ||
9 | file://openipmi.initscript \ | ||
8 | " | 10 | " |
9 | SRC_URI[md5sum] = "dc0b42ae40b3f1d0db2a94b75b95fae1" | 11 | SRC_URI[md5sum] = "dc0b42ae40b3f1d0db2a94b75b95fae1" |
10 | SRC_URI[sha256sum] = "37b844d02119b94b31e2bb2bd8062ffdf6cd3eb4bc75fa6c47184e8b14fe95b8" | 12 | SRC_URI[sha256sum] = "37b844d02119b94b31e2bb2bd8062ffdf6cd3eb4bc75fa6c47184e8b14fe95b8" |