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 |
+ |