summaryrefslogtreecommitdiffstats
path: root/meta-networking
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2017-09-05 14:02:01 -0500
committerJoe MacDonald <joe_macdonald@mentor.com>2017-09-12 10:55:08 -0400
commite889c678a6cff071cab5d6d68d6bd3e6877b7315 (patch)
tree1a87f60e1d3a560ced26dbf38a8d3c45266618be /meta-networking
parent58db2c981b8cea7f0b4a47a2cd4bb3251cc33e37 (diff)
downloadmeta-openembedded-e889c678a6cff071cab5d6d68d6bd3e6877b7315.tar.gz
openipmi: Move to meta-networking requires net-snmp
Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
Diffstat (limited to 'meta-networking')
-rw-r--r--meta-networking/recipes-support/openipmi/files/0001-lanserv-Rename-struct-parameter-printf-for-namespace.patch618
-rw-r--r--meta-networking/recipes-support/openipmi/files/do-not-install-pyc-and-pyo.patch25
-rw-r--r--meta-networking/recipes-support/openipmi/files/fix-symlink-install-error-in-cmdlang.patch22
-rw-r--r--meta-networking/recipes-support/openipmi/files/include_sys_types.patch17
-rw-r--r--meta-networking/recipes-support/openipmi/files/ipmi-init-fix-the-arguments.patch41
-rw-r--r--meta-networking/recipes-support/openipmi/files/ipmi.service12
-rwxr-xr-xmeta-networking/recipes-support/openipmi/files/openipmi-helper512
-rw-r--r--meta-networking/recipes-support/openipmi/files/openipmi-no-openipmigui-man.patch26
-rw-r--r--meta-networking/recipes-support/openipmi/files/openipmi-remove-host-path-from-la_LDFLAGS.patch50
-rw-r--r--meta-networking/recipes-support/openipmi/openipmi_2.0.24.bb110
10 files changed, 1433 insertions, 0 deletions
diff --git a/meta-networking/recipes-support/openipmi/files/0001-lanserv-Rename-struct-parameter-printf-for-namespace.patch b/meta-networking/recipes-support/openipmi/files/0001-lanserv-Rename-struct-parameter-printf-for-namespace.patch
new file mode 100644
index 000000000..25057fbce
--- /dev/null
+++ b/meta-networking/recipes-support/openipmi/files/0001-lanserv-Rename-struct-parameter-printf-for-namespace.patch
@@ -0,0 +1,618 @@
1From 8b51a6bf5a4829d8add535a098c0c06a049a9958 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 26 Aug 2017 22:50:57 -0700
4Subject: [PATCH] lanserv: Rename struct parameter printf for namespace
5 collision
6
7This comes to fore when we use hardening flags where printf
8is treated as macro and gets replaced with printf_chk
9
10Fixes errors like
11
12error: no member named '__printf_chk' in 'struct emu_out_s'
13
14Signed-off-by: Khem Raj <raj.khem@gmail.com>
15---
16 lanserv/OpenIPMI/serv.h | 2 +-
17 lanserv/emu_cmd.c | 132 ++++++++++++++++++++++++------------------------
18 lanserv/ipmi_sim.c | 10 ++--
19 3 files changed, 72 insertions(+), 72 deletions(-)
20
21diff --git a/lanserv/OpenIPMI/serv.h b/lanserv/OpenIPMI/serv.h
22index d12d63a..8555c85 100644
23--- a/lanserv/OpenIPMI/serv.h
24+++ b/lanserv/OpenIPMI/serv.h
25@@ -522,7 +522,7 @@ uint8_t ipmb_checksum(uint8_t *data, int size, uint8_t start);
26 typedef struct emu_data_s emu_data_t;
27 typedef struct emu_out_s
28 {
29- void (*printf)(struct emu_out_s *out, char *format, ...);
30+ void (*eprintf)(struct emu_out_s *out, char *format, ...);
31 void *data;
32 } emu_out_t;
33
34diff --git a/lanserv/emu_cmd.c b/lanserv/emu_cmd.c
35index ca44032..54b6f7b 100644
36--- a/lanserv/emu_cmd.c
37+++ b/lanserv/emu_cmd.c
38@@ -76,7 +76,7 @@ emu_get_uchar(emu_out_t *out, char **toks, unsigned char *val, char *errstr,
39 if (empty_ok)
40 return ENOSPC;
41 if (errstr)
42- out->printf(out, "**No %s given\n", errstr);
43+ out->eprintf(out, "**No %s given\n", errstr);
44 return EINVAL;
45 }
46 if (str[0] == '\'') {
47@@ -86,7 +86,7 @@ emu_get_uchar(emu_out_t *out, char **toks, unsigned char *val, char *errstr,
48 *val = strtoul(str, &tmpstr, 0);
49 if (*tmpstr != '\0') {
50 if (errstr)
51- out->printf(out, "**Invalid %s given\n", errstr);
52+ out->eprintf(out, "**Invalid %s given\n", errstr);
53 return EINVAL;
54 }
55
56@@ -108,7 +108,7 @@ emu_get_uchar_with_vals(emu_out_t *out, char **toks,
57 if (empty_ok)
58 return ENOSPC;
59 if (errstr)
60- out->printf(out, "**No %s given\n", errstr);
61+ out->eprintf(out, "**No %s given\n", errstr);
62 return EINVAL;
63 }
64 if (str[0] == '\'') {
65@@ -131,7 +131,7 @@ emu_get_uchar_with_vals(emu_out_t *out, char **toks,
66 *val = strtoul(str, &tmpstr, 0);
67 if (*tmpstr != '\0') {
68 if (errstr)
69- out->printf(out, "**Invalid %s given\n", errstr);
70+ out->eprintf(out, "**Invalid %s given\n", errstr);
71 return EINVAL;
72 }
73 out:
74@@ -150,12 +150,12 @@ emu_get_bitmask(emu_out_t *out, char **toks, uint16_t *val, char *errstr,
75 if (empty_ok)
76 return ENOSPC;
77 if (errstr)
78- out->printf(out, "**No %s given\n", errstr);
79+ out->eprintf(out, "**No %s given\n", errstr);
80 return EINVAL;
81 }
82 if (strlen(str) != size) {
83 if (errstr)
84- out->printf(out, "**invalid number of bits in %s\n", errstr);
85+ out->eprintf(out, "**invalid number of bits in %s\n", errstr);
86 return EINVAL;
87 }
88 *val = 0;
89@@ -166,7 +166,7 @@ emu_get_bitmask(emu_out_t *out, char **toks, uint16_t *val, char *errstr,
90 *val |= 1 << i;
91 } else {
92 if (errstr)
93- out->printf(out, "**Invalid bit value '%c' in %s\n", str[j],
94+ out->eprintf(out, "**Invalid bit value '%c' in %s\n", str[j],
95 errstr);
96 return EINVAL;
97 }
98@@ -184,13 +184,13 @@ emu_get_uint(emu_out_t *out, char **toks, unsigned int *val, char *errstr)
99 str = mystrtok(NULL, " \t\n", toks);
100 if (!str) {
101 if (errstr)
102- out->printf(out, "**No %s given\n", errstr);
103+ out->eprintf(out, "**No %s given\n", errstr);
104 return EINVAL;
105 }
106 *val = strtoul(str, &tmpstr, 0);
107 if (*tmpstr != '\0') {
108 if (errstr)
109- out->printf(out, "**Invalid %s given\n", errstr);
110+ out->eprintf(out, "**Invalid %s given\n", errstr);
111 return EINVAL;
112 }
113
114@@ -206,7 +206,7 @@ emu_get_bytes(emu_out_t *out, char **tokptr, unsigned char *data, char *errstr,
115
116 if (!tok) {
117 if (errstr)
118- out->printf(out, "**No %s given\n", errstr);
119+ out->eprintf(out, "**No %s given\n", errstr);
120 return EINVAL;
121 }
122 if (*tok == '"') {
123@@ -215,7 +215,7 @@ emu_get_bytes(emu_out_t *out, char **tokptr, unsigned char *data, char *errstr,
124 tok++;
125 end = strlen(tok) - 1;
126 if (tok[end] != '"') {
127- out->printf(out, "**ASCII %s doesn't end in '\"'", errstr);
128+ out->eprintf(out, "**ASCII %s doesn't end in '\"'", errstr);
129 return EINVAL;
130 }
131 if (end > (len - 1))
132@@ -228,7 +228,7 @@ emu_get_bytes(emu_out_t *out, char **tokptr, unsigned char *data, char *errstr,
133 char c[3];
134 /* HEX pw */
135 if (strlen(tok) != 32) {
136- out->printf(out, "**HEX %s not 32 HEX characters long", errstr);
137+ out->eprintf(out, "**HEX %s not 32 HEX characters long", errstr);
138 return EINVAL;
139 }
140 c[2] = '\0';
141@@ -239,7 +239,7 @@ emu_get_bytes(emu_out_t *out, char **tokptr, unsigned char *data, char *errstr,
142 tok++;
143 data[i] = strtoul(c, &end, 16);
144 if (*end != '\0') {
145- out->printf(out, "**Invalid HEX character in %s", errstr);
146+ out->eprintf(out, "**Invalid HEX character in %s", errstr);
147 return -1;
148 }
149 }
150@@ -263,12 +263,12 @@ read_command_file(emu_out_t *out, emu_data_t *emu, const char *command_file)
151
152 buffer = malloc(INPUT_BUFFER_SIZE);
153 if (!buffer) {
154- out->printf(out, "Could not allocate buffer memory\n");
155+ out->eprintf(out, "Could not allocate buffer memory\n");
156 rv = ENOMEM;
157 goto out;
158 }
159 while (fgets(buffer+pos, INPUT_BUFFER_SIZE-pos, f)) {
160- out->printf(out, "%s", buffer+pos);
161+ out->eprintf(out, "%s", buffer+pos);
162 if (buffer[pos] == '#')
163 continue;
164 pos = strlen(buffer);
165@@ -318,7 +318,7 @@ sel_enable(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
166
167 rv = ipmi_mc_enable_sel(mc, max_records, flags);
168 if (rv)
169- out->printf(out, "**Unable to enable sel, error 0x%x\n", rv);
170+ out->eprintf(out, "**Unable to enable sel, error 0x%x\n", rv);
171 return rv;
172 }
173
174@@ -343,9 +343,9 @@ sel_add(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
175
176 rv = ipmi_mc_add_to_sel(mc, record_type, data, &r);
177 if (rv)
178- out->printf(out, "**Unable to add to sel, error 0x%x\n", rv);
179+ out->eprintf(out, "**Unable to add to sel, error 0x%x\n", rv);
180 else
181- out->printf(out, "Added record %d\n", r);
182+ out->eprintf(out, "Added record %d\n", r);
183 return rv;
184 }
185
186@@ -361,14 +361,14 @@ main_sdr_add(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
187 if (rv == ENOSPC)
188 break;
189 if (rv) {
190- out->printf(out, "**Error 0x%x in data byte %d\n", rv, i);
191+ out->eprintf(out, "**Error 0x%x in data byte %d\n", rv, i);
192 return rv;
193 }
194 }
195
196 rv = ipmi_mc_add_main_sdr(mc, data, i);
197 if (rv)
198- out->printf(out, "**Unable to add to sdr, error 0x%x\n", rv);
199+ out->eprintf(out, "**Unable to add to sdr, error 0x%x\n", rv);
200 return rv;
201 }
202
203@@ -389,14 +389,14 @@ device_sdr_add(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
204 if (rv == ENOSPC)
205 break;
206 if (rv) {
207- out->printf(out, "**Error 0x%x in data byte %d\n", rv, i);
208+ out->eprintf(out, "**Error 0x%x in data byte %d\n", rv, i);
209 return rv;
210 }
211 }
212
213 rv = ipmi_mc_add_device_sdr(mc, lun, data, i);
214 if (rv)
215- out->printf(out, "**Unable to add to sdr, error 0x%x\n", rv);
216+ out->eprintf(out, "**Unable to add to sdr, error 0x%x\n", rv);
217 return rv;
218 }
219
220@@ -439,7 +439,7 @@ sensor_add(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
221 while (tok) {
222 if (strcmp(tok, "poll") == 0) {
223 if (handler) {
224- out->printf(out, "**poll given twice in sensor\n", tok);
225+ out->eprintf(out, "**poll given twice in sensor\n", tok);
226 return -1;
227 }
228
229@@ -449,27 +449,27 @@ sensor_add(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
230
231 tok = mystrtok(NULL, " \t\n", toks);
232 if (!tok) {
233- out->printf(out, "**No polled sensor handler given\n", tok);
234+ out->eprintf(out, "**No polled sensor handler given\n", tok);
235 return -1;
236 }
237
238 handler = ipmi_sensor_find_handler(tok);
239 if (!handler) {
240- out->printf(out, "**Invalid sensor handler: %s\n", tok);
241+ out->eprintf(out, "**Invalid sensor handler: %s\n", tok);
242 return -1;
243 }
244
245 rv = handler->init(mc, lun, num, toks, handler->cb_data, &rcb_data,
246 &errstr);
247 if (rv) {
248- out->printf(out, "**Error initializing sensor handler: %s\n",
249+ out->eprintf(out, "**Error initializing sensor handler: %s\n",
250 errstr);
251 return rv;
252 }
253 } else if (strcmp(tok, "event-only") == 0) {
254 event_only = 1;
255 } else {
256- out->printf(out, "**Unknown sensor option: %s\n", tok);
257+ out->eprintf(out, "**Unknown sensor option: %s\n", tok);
258 return -1;
259 }
260
261@@ -477,7 +477,7 @@ sensor_add(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
262 }
263
264 if (handler && event_only) {
265- out->printf(out, "**An event-only sensor cannot be polled\n");
266+ out->eprintf(out, "**An event-only sensor cannot be polled\n");
267 return -1;
268 }
269
270@@ -488,7 +488,7 @@ sensor_add(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
271 if (!rv && handler->postinit) {
272 rv = handler->postinit(rcb_data, &errstr);
273 if (rv) {
274- out->printf(out, "**Error in sensor handler postinit: %s\n",
275+ out->eprintf(out, "**Error in sensor handler postinit: %s\n",
276 errstr);
277 }
278 }
279@@ -496,7 +496,7 @@ sensor_add(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
280 rv = ipmi_mc_add_sensor(mc, lun, num, type, code, event_only);
281 }
282 if (rv)
283- out->printf(out, "**Unable to add to sensor, error 0x%x\n", rv);
284+ out->eprintf(out, "**Unable to add to sensor, error 0x%x\n", rv);
285 return rv;
286 }
287
288@@ -532,7 +532,7 @@ sensor_set_bit(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
289
290 rv = ipmi_mc_sensor_set_bit(mc, lun, num, bit, value, gen_event);
291 if (rv)
292- out->printf(out, "**Unable to set sensor bit, error 0x%x\n", rv);
293+ out->eprintf(out, "**Unable to set sensor bit, error 0x%x\n", rv);
294 return rv;
295 }
296
297@@ -563,7 +563,7 @@ sensor_set_bit_clr_rest(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **
298
299 rv = ipmi_mc_sensor_set_bit_clr_rest(mc, lun, num, bit, gen_event);
300 if (rv)
301- out->printf(out, "**Unable to set sensor bit, error 0x%x\n", rv);
302+ out->eprintf(out, "**Unable to set sensor bit, error 0x%x\n", rv);
303 return rv;
304 }
305
306@@ -594,7 +594,7 @@ sensor_set_value(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
307
308 rv = ipmi_mc_sensor_set_value(mc, lun, num, value, gen_event);
309 if (rv)
310- out->printf(out, "**Unable to set sensor value, error 0x%x\n", rv);
311+ out->eprintf(out, "**Unable to set sensor value, error 0x%x\n", rv);
312 return rv;
313 }
314
315@@ -637,7 +637,7 @@ sensor_set_hysteresis(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **to
316 rv = ipmi_mc_sensor_set_hysteresis(mc, lun, num, support, positive,
317 negative);
318 if (rv)
319- out->printf(out, "**Unable to set sensor hysteresis, error 0x%x\n", rv);
320+ out->eprintf(out, "**Unable to set sensor hysteresis, error 0x%x\n", rv);
321 return rv;
322 }
323
324@@ -682,7 +682,7 @@ sensor_set_threshold(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **tok
325 rv = ipmi_mc_sensor_set_threshold(mc, lun, num, support,
326 enabled, 1, thresholds);
327 if (rv)
328- out->printf(out, "**Unable to set sensor thresholds, error 0x%x\n", rv);
329+ out->eprintf(out, "**Unable to set sensor thresholds, error 0x%x\n", rv);
330 return rv;
331 }
332
333@@ -759,7 +759,7 @@ sensor_set_event_support(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char *
334 assert_support, deassert_support,
335 assert_enabled, deassert_enabled);
336 if (rv)
337- out->printf(out, "**Unable to set sensor thresholds, error 0x%x\n", rv);
338+ out->eprintf(out, "**Unable to set sensor thresholds, error 0x%x\n", rv);
339 return rv;
340 }
341
342@@ -819,7 +819,7 @@ mc_add(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
343 else if (strcmp("persist_sdr", tok) == 0)
344 flags |= IPMI_MC_PERSIST_SDR;
345 else {
346- out->printf(out, "**Invalid MC flag: %s\n", tok);
347+ out->eprintf(out, "**Invalid MC flag: %s\n", tok);
348 return -1;
349 }
350 }
351@@ -833,7 +833,7 @@ mc_add(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
352 device_revision, major_fw_rev, minor_fw_rev,
353 device_support, mfg_id, product_id, flags);
354 if (rv)
355- out->printf(out, "**Unable to add the MC, error 0x%x\n", rv);
356+ out->eprintf(out, "**Unable to add the MC, error 0x%x\n", rv);
357 return rv;
358 }
359
360@@ -890,7 +890,7 @@ mc_set_power(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
361
362 rv = ipmi_mc_set_power(mc, power, gen_int);
363 if (rv)
364- out->printf(out, "**Unable to set power, error 0x%x\n", rv);
365+ out->eprintf(out, "**Unable to set power, error 0x%x\n", rv);
366 return rv;
367 }
368
369@@ -916,7 +916,7 @@ mc_add_fru_data(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
370
371 tok = mystrtok(NULL, " \t\n", toks);
372 if (!tok) {
373- out->printf(out, "**No FRU data type given");
374+ out->eprintf(out, "**No FRU data type given");
375 return -1;
376 }
377 if (strcmp(tok, "file") == 0) {
378@@ -929,13 +929,13 @@ mc_add_fru_data(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
379
380 rv = get_delim_str(toks, &frufn, &errstr);
381 if (rv) {
382- out->printf(out, "**Error with FRU filename: %d", strerror(rv));
383+ out->eprintf(out, "**Error with FRU filename: %d", strerror(rv));
384 return rv;
385 }
386 rv = ipmi_mc_add_fru_file(mc, devid, length, file_offset,
387 (void *) frufn);
388 if (rv)
389- out->printf(out, "**Unable to add FRU file, error 0x%x\n", rv);
390+ out->eprintf(out, "**Unable to add FRU file, error 0x%x\n", rv);
391
392 } else if (strcmp(tok, "data") == 0) {
393 for (i=0; i<length; i++) {
394@@ -943,14 +943,14 @@ mc_add_fru_data(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
395 if (rv == ENOSPC)
396 break;
397 if (rv) {
398- out->printf(out, "**Error 0x%x in data byte %d\n", rv, i);
399+ out->eprintf(out, "**Error 0x%x in data byte %d\n", rv, i);
400 return rv;
401 }
402 }
403
404 rv = emu_get_uchar(out, toks, &data[i], "data byte", 1);
405 if (rv != ENOSPC) {
406- out->printf(out, "**Error: input data too long for FRU\n", rv, i);
407+ out->eprintf(out, "**Error: input data too long for FRU\n", rv, i);
408 return EINVAL;
409 }
410
411@@ -958,9 +958,9 @@ mc_add_fru_data(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
412
413 rv = ipmi_mc_add_fru_data(mc, devid, length, NULL, data);
414 if (rv)
415- out->printf(out, "**Unable to add FRU data, error 0x%x\n", rv);
416+ out->eprintf(out, "**Unable to add FRU data, error 0x%x\n", rv);
417 } else {
418- out->printf(out, "**FRU type not given, need file or data\n");
419+ out->eprintf(out, "**FRU type not given, need file or data\n");
420 rv = EINVAL;
421 }
422 return rv;
423@@ -981,28 +981,28 @@ mc_dump_fru_data(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
424
425 rv = ipmi_mc_get_fru_data_len(mc, devid, &length);
426 if (rv) {
427- out->printf(out, "**Unable to dump FRU data, error 0x%x\n", rv);
428+ out->eprintf(out, "**Unable to dump FRU data, error 0x%x\n", rv);
429 goto out;
430 }
431
432 data = malloc(length);
433 if (!data) {
434- out->printf(out, "**Unable to dump FRU data, out of memory\n", rv);
435+ out->eprintf(out, "**Unable to dump FRU data, out of memory\n", rv);
436 goto out;
437 }
438
439 rv = ipmi_mc_get_fru_data(mc, devid, length, data);
440 if (rv) {
441- out->printf(out, "**Unable to dump FRU data, error 0x%x\n", rv);
442+ out->eprintf(out, "**Unable to dump FRU data, error 0x%x\n", rv);
443 goto out;
444 }
445
446 for (i=0; i<length; i++) {
447 if ((i > 0) && ((i % 8) == 0))
448- out->printf(out, "\n");
449- out->printf(out, " 0x%2.2x", data[i]);
450+ out->eprintf(out, "\n");
451+ out->eprintf(out, " 0x%2.2x", data[i]);
452 }
453- out->printf(out, "\n");
454+ out->eprintf(out, "\n");
455
456 out:
457 if (data)
458@@ -1021,7 +1021,7 @@ mc_setbmc(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
459 return rv;
460 rv = ipmi_emu_set_bmc_mc(emu, ipmb);
461 if (rv)
462- out->printf(out, "**Invalid IPMB address\n");
463+ out->eprintf(out, "**Invalid IPMB address\n");
464 return rv;
465 }
466
467@@ -1032,7 +1032,7 @@ atca_enable(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
468
469 rv = ipmi_emu_atca_enable(emu);
470 if (rv)
471- out->printf(out, "**Unable to enable ATCA mode, error 0x%x\n", rv);
472+ out->eprintf(out, "**Unable to enable ATCA mode, error 0x%x\n", rv);
473 return rv;
474 }
475
476@@ -1056,7 +1056,7 @@ atca_set_site(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
477
478 rv = ipmi_emu_atca_set_site(emu, hw_address, site_type, site_number);
479 if (rv)
480- out->printf(out, "**Unable to set site type, error 0x%x\n", rv);
481+ out->eprintf(out, "**Unable to set site type, error 0x%x\n", rv);
482 return rv;
483 }
484
485@@ -1072,7 +1072,7 @@ mc_set_num_leds(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
486
487 rv = ipmi_mc_set_num_leds(mc, count);
488 if (rv)
489- out->printf(out, "**Unable to set number of LEDs, error 0x%x\n", rv);
490+ out->eprintf(out, "**Unable to set number of LEDs, error 0x%x\n", rv);
491 return rv;
492 }
493
494@@ -1085,7 +1085,7 @@ read_cmds(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
495
496 err = get_delim_str(toks, &filename, &errstr);
497 if (err) {
498- out->printf(out, "Could not get include filename: %s\n", errstr);
499+ out->eprintf(out, "Could not get include filename: %s\n", errstr);
500 return err;
501 }
502
503@@ -1097,7 +1097,7 @@ read_cmds(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
504 {
505 char *nf = malloc(strlen(BASE_CONF_STR) + strlen(filename) + 2);
506 if (!nf) {
507- out->printf(out, "Out of memory in include\n", errstr);
508+ out->eprintf(out, "Out of memory in include\n", errstr);
509 goto out_err;
510 }
511 strcpy(nf, BASE_CONF_STR);
512@@ -1107,7 +1107,7 @@ read_cmds(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
513 filename = nf;
514 err = read_command_file(out, emu, filename);
515 if (err) {
516- out->printf(out, "Could not read include file %s\n", filename);
517+ out->eprintf(out, "Could not read include file %s\n", filename);
518 }
519 }
520
521@@ -1147,7 +1147,7 @@ debug_cmd(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
522 } else if (strcmp(tok, "sol") == 0) {
523 level |= DEBUG_SOL;
524 } else {
525- out->printf(out, "Invalid debug level '%s', options are 'raw' and 'msg'\n",
526+ out->eprintf(out, "Invalid debug level '%s', options are 'raw' and 'msg'\n",
527 tok);
528 return EINVAL;
529 }
530@@ -1168,7 +1168,7 @@ persist_cmd(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
531 } else if (strcmp(tok, "off") == 0) {
532 persist_enable = 0;
533 } else {
534- out->printf(out, "Invalid persist vale '%s', options are 'on' and 'off'\n",
535+ out->eprintf(out, "Invalid persist vale '%s', options are 'on' and 'off'\n",
536 tok);
537 return EINVAL;
538 }
539@@ -1194,18 +1194,18 @@ do_define(emu_out_t *out, emu_data_t *emu, lmc_data_t *mc, char **toks)
540
541 name = mystrtok(NULL, " \t\n", toks);
542 if (!name) {
543- out->printf(out, "No variable name given for define\n");
544+ out->eprintf(out, "No variable name given for define\n");
545 return EINVAL;
546 }
547 err = get_delim_str(toks, &value, &errstr);
548 if (err) {
549- out->printf(out, "Could not get variable %s value: %s\n", name, errstr);
550+ out->eprintf(out, "Could not get variable %s value: %s\n", name, errstr);
551 return err;
552 }
553 err = add_variable(name, value);
554 if (err) {
555 free(value);
556- out->printf(out, "Out of memory setting variable %s\n", name);
557+ out->eprintf(out, "Out of memory setting variable %s\n", name);
558 return err;
559 }
560 return 0;
561@@ -1301,7 +1301,7 @@ ipmi_emu_cmd(emu_out_t *out, emu_data_t *emu, char *cmd_str)
562 return rv;
563 rv = ipmi_emu_get_mc_by_addr(emu, ipmb, &mc);
564 if (rv) {
565- out->printf(out, "**Invalid MC address\n");
566+ out->eprintf(out, "**Invalid MC address\n");
567 return rv;
568 }
569 }
570@@ -1312,7 +1312,7 @@ ipmi_emu_cmd(emu_out_t *out, emu_data_t *emu, char *cmd_str)
571 }
572 }
573
574- out->printf(out, "**Unknown command: %s\n", cmd);
575+ out->eprintf(out, "**Unknown command: %s\n", cmd);
576
577 out:
578 return rv;
579diff --git a/lanserv/ipmi_sim.c b/lanserv/ipmi_sim.c
580index 9472cce..30c4f27 100644
581--- a/lanserv/ipmi_sim.c
582+++ b/lanserv/ipmi_sim.c
583@@ -607,8 +607,8 @@ isim_log(sys_data_t *sys, int logtype, msg_t *msg, const char *format,
584
585 con = data->consoles;
586 while (con) {
587- con->out.printf(&con->out, "%s", str);
588- con->out.printf(&con->out, "\n");
589+ con->out.eprintf(&con->out, "%s", str);
590+ con->out.eprintf(&con->out, "\n");
591 con = con->next;
592 }
593 #if HAVE_SYSLOG
594@@ -956,7 +956,7 @@ console_bind_ready(int fd, void *cb_data, os_hnd_fd_id_t *id)
595 newcon->shutdown_on_close = 0;
596 newcon->telnet = 1;
597 newcon->tn_pos = 0;
598- newcon->out.printf = emu_printf;
599+ newcon->out.eprintf = emu_printf;
600 newcon->out.data = newcon;
601
602 setsockopt(rv, IPPROTO_TCP, TCP_NODELAY, (char *)&val, sizeof(val));
603@@ -1463,10 +1463,10 @@ main(int argc, const char *argv[])
604 stdio_console.telnet = 0;
605 stdio_console.tn_pos = 0;
606 if (nostdio) {
607- stdio_console.out.printf = dummy_printf;
608+ stdio_console.out.eprintf = dummy_printf;
609 stdio_console.out.data = &stdio_console;
610 } else {
611- stdio_console.out.printf = emu_printf;
612+ stdio_console.out.eprintf = emu_printf;
613 stdio_console.out.data = &stdio_console;
614 }
615 stdio_console.next = NULL;
616--
6172.14.1
618
diff --git a/meta-networking/recipes-support/openipmi/files/do-not-install-pyc-and-pyo.patch b/meta-networking/recipes-support/openipmi/files/do-not-install-pyc-and-pyo.patch
new file mode 100644
index 000000000..d4e02be45
--- /dev/null
+++ b/meta-networking/recipes-support/openipmi/files/do-not-install-pyc-and-pyo.patch
@@ -0,0 +1,25 @@
1Do not install pyc and pyo for python module
2
3Upstream-Status: Inappropriate [embedded specific]
4
5Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
6---
7 swig/python/Makefile.am | 2 --
8 1 file changed, 2 deletions(-)
9
10diff --git a/swig/python/Makefile.am b/swig/python/Makefile.am
11index da95a81..97a62bf 100644
12--- a/swig/python/Makefile.am
13+++ b/swig/python/Makefile.am
14@@ -33,8 +33,6 @@ CLEANFILES = OpenIPMI_wrap.c OpenIPMI.py OpenIPMI.pyo OpenIPMI.pyc
15 install-exec-local: _OpenIPMI.la OpenIPMI.py OpenIPMI.pyc OpenIPMI.pyo
16 $(INSTALL) -d $(DESTDIR)$(PYTHON_INSTALL_DIR)
17 $(INSTALL_DATA) OpenIPMI.py "$(DESTDIR)$(PYTHON_INSTALL_DIR)"
18- $(INSTALL_DATA) OpenIPMI.pyc "$(DESTDIR)$(PYTHON_INSTALL_DIR)"
19- $(INSTALL_DATA) OpenIPMI.pyo "$(DESTDIR)$(PYTHON_INSTALL_DIR)"
20 if test "x$(PYTHON_GUI_DIR)" = "xopenipmigui"; then \
21 $(INSTALL) -d $(DESTDIR)$(bindir); \
22 $(INSTALL_SCRIPT) $(srcdir)/openipmigui.py "$(DESTDIR)$(bindir)/openipmigui";\
23--
241.9.1
25
diff --git a/meta-networking/recipes-support/openipmi/files/fix-symlink-install-error-in-cmdlang.patch b/meta-networking/recipes-support/openipmi/files/fix-symlink-install-error-in-cmdlang.patch
new file mode 100644
index 000000000..9a568b2b2
--- /dev/null
+++ b/meta-networking/recipes-support/openipmi/files/fix-symlink-install-error-in-cmdlang.patch
@@ -0,0 +1,22 @@
1Author: Aws Ismail <aws.ismail@windriver.com>
2Date: Thu Jun 7 16:00:13 2012 -0400
3
4 This patch fixes the error during the install stage when
5 creating a symbolic link for opeipmish in openipmi/cmdlang
6
7 Upstream-Status: Pending
8
9 Signed-off-by: Aws Ismail <aws.ismail@windriver.com>
10
11diff --git a/cmdlang/Makefile.am b/cmdlang/Makefile.am
12index 92d6e83..f6039f9 100644
13--- a/cmdlang/Makefile.am
14+++ b/cmdlang/Makefile.am
15@@ -36,6 +36,7 @@ CLEANFILES = libOpenIPMIcmdlang.map
16 # compatability.
17 install-data-local:
18 rm -f $(DESTDIR)$(bindir)/ipmish
19+ mkdir -p $(DESTDIR)$(bindir)/
20 $(LN_S) openipmish $(DESTDIR)$(bindir)/ipmish
21
22 uninstall-local:
diff --git a/meta-networking/recipes-support/openipmi/files/include_sys_types.patch b/meta-networking/recipes-support/openipmi/files/include_sys_types.patch
new file mode 100644
index 000000000..58ec5d883
--- /dev/null
+++ b/meta-networking/recipes-support/openipmi/files/include_sys_types.patch
@@ -0,0 +1,17 @@
1include sys/types.h for u_int32_t
2
3ui.c:340:5: error: unknown type name 'u_int32_t'; did you mean 'uint32_t'?
4 u_int32_t addr;
5 ^~~~~~~~~
6Index: OpenIPMI-2.0.22/ui/ui.c
7===================================================================
8--- OpenIPMI-2.0.22.orig/ui/ui.c
9+++ OpenIPMI-2.0.22/ui/ui.c
10@@ -42,6 +42,7 @@
11 #include <fcntl.h>
12 #include <time.h>
13 #include <sys/time.h>
14+#include <sys/types.h>
15 #include <ctype.h>
16
17 #include <OpenIPMI/selector.h>
diff --git a/meta-networking/recipes-support/openipmi/files/ipmi-init-fix-the-arguments.patch b/meta-networking/recipes-support/openipmi/files/ipmi-init-fix-the-arguments.patch
new file mode 100644
index 000000000..51a398ba5
--- /dev/null
+++ b/meta-networking/recipes-support/openipmi/files/ipmi-init-fix-the-arguments.patch
@@ -0,0 +1,41 @@
1Subject: [PATCH] ipmi-init: fix the arguments
2
3The functions success/failure/warning defined in /etc/init.d/functions
4(provided by initscripts) only accepts numeric argument as return code,
5not a string.
6
7Upstream-Status: Inappropriate [OE specific]
8
9Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
10---
11 ipmi.init | 6 +++---
12 1 file changed, 3 insertions(+), 3 deletions(-)
13
14diff --git a/ipmi.init b/ipmi.init
15index 2ebcd94..d8161c5 100644
16--- a/ipmi.init
17+++ b/ipmi.init
18@@ -45,17 +45,17 @@ elif [ -r /etc/init.d/functions ]; then
19 case "$ACTION" in
20 success)
21 echo -n $*
22- success "$*"
23+ success 0
24 echo
25 ;;
26 failure)
27 echo -n $*
28- failure "$*"
29+ failure 1
30 echo
31 ;;
32 warning)
33 echo -n $*
34- warning "$*"
35+ warning 0
36 echo
37 ;;
38 *)
39--
401.9.1
41
diff --git a/meta-networking/recipes-support/openipmi/files/ipmi.service b/meta-networking/recipes-support/openipmi/files/ipmi.service
new file mode 100644
index 000000000..6fe137819
--- /dev/null
+++ b/meta-networking/recipes-support/openipmi/files/ipmi.service
@@ -0,0 +1,12 @@
1[Unit]
2Description=IPMI Driver
3After=network.target
4
5[Service]
6Type=oneshot
7RemainAfterExit=yes
8ExecStart=@LIBEXECDIR@/openipmi-helper start
9ExecStop=@LIBEXECDIR@/openipmi-helper stop-all
10
11[Install]
12WantedBy=multi-user.target
diff --git a/meta-networking/recipes-support/openipmi/files/openipmi-helper b/meta-networking/recipes-support/openipmi/files/openipmi-helper
new file mode 100755
index 000000000..4cebfb9c6
--- /dev/null
+++ b/meta-networking/recipes-support/openipmi/files/openipmi-helper
@@ -0,0 +1,512 @@
1#!/bin/sh
2#############################################################################
3#
4# ipmi: OpenIPMI Driver helper script
5#
6# Authors: Jan Safranek <jsafrane@redhat.com>
7#
8# Based on IPMI init script by:
9# Matt Domsch <Matt_Domsch@dell.com>
10# Chris Poblete <Chris_Poblete@dell.com>
11#
12# Status return code bits
13# no bits set = no errors
14# bit 0 set = minimum modules aren't loaded
15# bit 1 set = requested feature module isn't loaded
16# bit 2 set = /dev/ipmi0 (or /dev/imb if using that instead) doesn't exist
17# bit 3 set = /dev/watchdog doesn't exist
18# bit 4 set = lockfile doesn't exist
19# bit 5 set = modules are loaded even when asked to be unloaded
20
21CONFIGFILE=/etc/sysconfig/ipmi
22# source config info
23[ -r ${CONFIGFILE} ] && . ${CONFIGFILE}
24
25#############################################################################
26# GLOBALS
27#############################################################################
28MODULE_NAME="ipmi"
29INTF_NUM=0
30
31IPMI_SMB_MODULE_NAME="ipmi_smb"
32IPMI_SI_MODULE_NAME="ipmi_si"
33kernel=`uname -r | cut -d. -f1-2`
34if [ "${kernel}" == "2.4" ]; then
35 IPMI_SMB_MODULE_NAME="ipmi_smb_intf"
36 IPMI_SI_MODULE_NAME="ipmi_si_drv"
37fi
38
39MODULES_INTERFACES=""
40[ "${DEV_IPMI}" = "yes" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_devintf"
41[ "${IPMI_IMB}" = "yes" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_imb"
42
43MODULES_FEATURES=""
44[ "${IPMI_WATCHDOG}" = "yes" ] && MODULES_FEATURES="${MODULES_FEATURES} ipmi_watchdog"
45[ "${IPMI_POWEROFF}" = "yes" ] && MODULES_FEATURES="${MODULES_FEATURES} ipmi_poweroff"
46
47MODULES_HW=""
48[ "${IPMI_SI}" = "yes" ] && MODULES_HW="${MODULES_HW} ${IPMI_SI_MODULE_NAME}"
49[ "${IPMI_SMB}" = "yes" ] && MODULES_HW="${MODULES_HW} ${IPMI_SMB_MODULE_NAME}"
50
51MODULES_BASE="ipmi_msghandler"
52MODULES="${MODULES_INTERFACES} ${MODULES_FEATURES} ${MODULES_HW} ${MODULES_BASE}"
53
54RETVAL=0
55LOCKFILE=/var/lock/subsys/ipmi
56DEV_IPMI_TIMEOUT=150
57
58UDEV_EXISTS=0
59if [ -e /sbin/udev -o -e /sbin/udevd ]; then
60 UDEV_EXISTS=1
61fi
62
63#############################################################################
64# NOTES:
65# * /dev/ipmi0 is unconditionally deleted here on ipmi_devintf unload,
66# because SLES9 and RHEL4 kernels don't send a message for udev to delete
67# it for us.
68#
69#############################################################################
70
71modules_loaded_verbose()
72{
73 OnePlusLoaded=0
74 OnePlusUnloaded=0
75 for m in $@; do
76 if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then
77 echo "$m module loaded."
78 OnePlusLoaded=1
79 else
80 echo "$m module not loaded."
81 OnePlusUnloaded=1
82 fi
83 done
84}
85
86modules_loaded()
87{
88 OnePlusLoaded=0
89 OnePlusUnloaded=0
90 for m in $@; do
91 if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then
92 OnePlusLoaded=1
93 else
94 OnePlusUnloaded=1
95 fi
96 done
97}
98
99device_node_exists ()
100{
101 if [ -e "$1" ]; then
102 echo "$1 exists."
103 return 1
104 fi
105 echo "$1 does not exist."
106 return 0
107}
108
109minimum_modules_loaded()
110{
111 rc_base=1
112 rc_hw=1
113 modules_loaded_verbose "${MODULES_BASE}"
114 [ ${OnePlusLoaded} -eq 0 ] && rc_base=0
115
116 modules_loaded_verbose "${MODULES_HW}"
117 [ ${OnePlusLoaded} -eq 0 ] && rc_hw=0
118
119 return $((rc_base && rc_hw))
120}
121
122#############################################################################
123
124load_si()
125{
126 if [ "${IPMI_SI}" = "yes" ]; then
127 modprobe ${IPMI_SI_MODULE_NAME} > /dev/null 2>&1
128 modules_loaded ${IPMI_SI_MODULE_NAME}
129 [ ${OnePlusLoaded} -ne 1 ] && RETVAL=$((RETVAL | 1))
130 fi
131}
132
133load_smb()
134{
135 if [ "${IPMI_SMB}" = "yes" ]; then
136 modprobe ${IPMI_SMB_MODULE_NAME} > /dev/null 2>&1
137 modules_loaded ${IPMI_SMB_MODULE_NAME}
138 [ ${OnePlusLoaded} -ne 1 ] && RETVAL=$((RETVAL | 1))
139 fi
140}
141
142load_hw_modules()
143{
144 load_si
145 load_smb
146}
147
148start_watchdog_common()
149{
150 load_hw_modules
151 modprobe ipmi_watchdog ${IPMI_WATCHDOG_OPTIONS} > /dev/null 2>&1
152 modules_loaded ipmi_watchdog
153 [ ${OnePlusUnloaded} -ne 0 ] &&
154 RETVAL=$((RETVAL | 2)) &&
155 echo "Watchdog startup failed: cannot load ipmi_watchdog module" &&
156 return
157 if [ ${UDEV_EXISTS} -eq 0 -a ! -e /dev/watchdog ]; then
158 mknod -m 0600 /dev/watchdog c 10 130
159 [ $? -ne 0 ] &&
160 RETVAL=$((RETVAL | 8)) &&
161 echo "Watchdog startup failed: cannot create /dev/watchdog" &&
162 return
163 fi
164}
165
166start_watchdog_quiet()
167{
168 [ "${IPMI_WATCHDOG}" != "yes" ] &&
169 return
170 start_watchdog_common
171}
172
173start_watchdog()
174{
175 [ "${IPMI_WATCHDOG}" != "yes" ] &&
176 RETVAL=$((RETVAL | 2)) &&
177 echo "Watchdog not configured" &&
178 return
179 start_watchdog_common
180}
181
182stop_watchdog()
183{
184 modprobe -q -r ipmi_watchdog > /dev/null 2>&1
185 modules_loaded ipmi_watchdog
186 if [ ${OnePlusLoaded} -ne 0 ]; then
187 RETVAL=$((RETVAL | 32))
188 echo "Watchog shutdown failed: cannot unload ipmi_watchdog module"
189 else
190 if [ "${IPMI_WATCHDOG}" = "yes" ]; then
191 [ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog
192 fi
193 fi
194}
195
196stop_watchdog_quiet()
197{
198 modprobe -q -r ipmi_watchdog > /dev/null 2>&1
199 modules_loaded ipmi_watchdog
200 if [ ${OnePlusLoaded} -ne 0 ]; then
201 RETVAL=$((RETVAL | 32))
202 else
203 if [ "${IPMI_WATCHDOG}" = "yes" ]; then
204 [ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog
205 fi
206 fi
207}
208
209start_powercontrol_common()
210{
211 local poweroff_opts=""
212 load_hw_modules
213 if [ "${IPMI_POWERCYCLE}" == "yes" ]; then
214 modinfo ipmi_poweroff 2>/dev/null | grep poweroff_control > /dev/null 2>&1 && \
215 poweroff_opts="poweroff_control=2"
216 modinfo ipmi_poweroff 2>/dev/null | grep poweroff_powercycle > /dev/null 2>&1 && \
217 poweroff_opts="poweroff_powercycle=1"
218 fi
219 modprobe ipmi_poweroff "${poweroff_opts}" > /dev/null 2>&1
220 modules_loaded ipmi_poweroff
221 [ ${OnePlusUnloaded} -ne 0 ] &&
222 RETVAL=$((RETVAL | 2)) &&
223 echo "Powercontroll startup failed: cannot load ipmi_poweroff module" &&
224 return
225}
226
227start_powercontrol_quiet()
228{
229 [ "${IPMI_POWEROFF}" != "yes" ] &&
230 return
231 start_powercontrol_common
232}
233
234start_powercontrol()
235{
236 [ "${IPMI_POWEROFF}" != "yes" ] &&
237 RETVAL=$((RETVAL | 2)) &&
238 echo "Powercontroll not configured" &&
239 return
240 start_powercontrol_common
241}
242
243stop_powercontrol()
244{
245 modprobe -q -r ipmi_poweroff > /dev/null 2>&1
246 modules_loaded ipmi_poweroff
247 if [ ${OnePlusLoaded} -ne 0 ]; then
248 RETVAL=$((RETVAL | 32))
249 echo "Powercontroll shutdown failed: cannot unload ipmi_poweroff module"
250 fi
251}
252
253stop_powercontrol_quiet()
254{
255 modprobe -q -r ipmi_poweroff > /dev/null 2>&1
256 modules_loaded ipmi_poweroff
257 [ ${OnePlusLoaded} -ne 0 ] && RETVAL=$((RETVAL | 32))
258}
259
260#############################################################################
261unload_all_ipmi_modules()
262{
263 stop_watchdog_quiet
264 stop_powercontrol_quiet
265 for m in ${MODULES}; do
266 modprobe -q -r ${m} > /dev/null 2>&1
267 done
268 # delete interface node ONLY if ipmi_devintf is unloaded
269 [ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] &&
270 rm -f "/dev/ipmi${INTF_NUM}"
271}
272
273unload_ipmi_modules_leave_features()
274{
275 for m in ${MODULES_INTERFACES}; do
276 modprobe -q -r ${m} > /dev/null 2>&1
277 done
278 # delete interface node ONLY if ipmi_devintf is unloaded
279 [ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] &&
280 rm -f "/dev/ipmi${INTF_NUM}"
281 lsmod | egrep -q "ipmi_(poweroff|watchdog)" > /dev/null 2>&1
282 if [ "$?" -ne "0" ]; then
283 stop_watchdog_quiet
284 stop_powercontrol_quiet
285 for m in ${MODULES}; do
286 modprobe -q -r ${m} > /dev/null 2>&1
287 done
288 fi
289}
290
291#############################################################################
292load_ipmi_modules ()
293{
294 local locdelay
295 modprobe ipmi_msghandler > /dev/null 2>&1
296 modules_loaded ipmi_msghandler
297 [ ${OnePlusLoaded} -ne 1 ] && unload_all_ipmi_modules && RETVAL=$((RETVAL | 1)) && return
298 load_hw_modules
299 [ $((RETVAL & 1)) -eq 1 ] && unload_all_ipmi_modules && RETVAL=$((RETVAL | 1)) && return
300
301 if [ "${DEV_IPMI}" = "yes" ]; then
302 modprobe ipmi_devintf > /dev/null 2>&1
303 modules_loaded ipmi_devintf
304 RETVAL=$((RETVAL & ~2))
305 [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
306 if [ ${OnePlusLoaded} -eq 1 ]; then
307 if [ ${UDEV_EXISTS} -eq 0 ]; then
308 DEVMAJOR=`cat /proc/devices | awk '/ipmidev/{print $1}'`
309 rm -f /dev/ipmi${INTF_NUM}
310 mknod -m 0600 /dev/ipmi${INTF_NUM} c ${DEVMAJOR} 0 || RETVAL=$((RETVAL | 4))
311 fi
312
313 # udev can take several seconds to create /dev/ipmi0,
314 # but it happens asynchronously, so delay here
315 locdelay=${DEV_IPMI_TIMEOUT}
316 while [ ! -e /dev/ipmi${INTF_NUM} -a ${locdelay} -gt 0 ]; do
317 locdelay=$((locdelay - 1))
318 sleep 0.1
319 done
320 fi
321 fi
322
323 if [ "${IPMI_IMB}" = "yes" ]; then
324 modprobe ipmi_imb > /dev/null 2>&1
325 modules_loaded ipmi_imb
326 RETVAL=$((RETVAL & ~2))
327 [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
328 if [ ${OnePlusLoaded} -eq 1 ]; then
329 DEVMAJOR=`cat /proc/devices | awk '/imb/{print $1}'`
330 rm -f /dev/imb
331 mknod -m 0600 /dev/imb c ${DEVMAJOR} 0 || RETVAL=$((RETVAL | 4))
332 fi
333 fi
334
335 # Per Corey Minyard, essentially no one uses ipmi_radisys
336 # and we don't want to encourage its further use
337 # so it won't be handled here.
338 return
339}
340
341#############################################################################
342start()
343{
344 load_ipmi_modules
345 if [ ${RETVAL} -eq 0 ]; then
346 touch ${LOCKFILE}
347 else
348 if [ $((RETVAL & 1)) -eq 1 ]; then
349 echo "Startup failed."
350 else
351 touch ${LOCKFILE} && echo "Warning!?"
352 fi
353 fi
354 start_watchdog_quiet
355 start_powercontrol_quiet
356}
357
358#############################################################################
359stop()
360{
361 unload_ipmi_modules_leave_features
362 modules_loaded ${MODULES_INTERFACES}
363 if [ ${OnePlusLoaded} -ne 0 ]; then
364 RETVAL=$((RETVAL | 32))
365 echo "Shutdown failed, something may be in use"
366 else
367 rm -f ${LOCKFILE}
368 fi
369}
370
371stop_all()
372{
373 unload_all_ipmi_modules
374 modules_loaded ${MODULES}
375 if [ ${OnePlusLoaded} -ne 0 ]; then
376 RETVAL=$((RETVAL | 32))
377 echo "Shutdown failed, something may be in use"
378 else
379 rm -f ${LOCKFILE}
380 fi
381}
382
383#############################################################################
384restart()
385{
386 stop_all
387 RETVAL=0
388 start
389}
390
391#############################################################################
392
393reload()
394{
395 stop_all
396 RETVAL=0
397 start
398}
399
400#############################################################################
401
402status_all()
403{
404 minimum_modules_loaded
405 [ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
406
407 modules_loaded_verbose ${MODULES_FEATURES} ${MODULES_INTERFACES}
408 [ ${OnePlusUnloaded} -ne 0 ] && RETVAL=$((RETVAL | 2))
409
410 if [ "${DEV_IPMI}" = "yes" ]; then
411 device_node_exists /dev/ipmi${INTF_NUM}
412 [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
413 fi
414
415 if [ "${IPMI_IMB}" = "yes" ]; then
416 device_node_exists /dev/imb
417 [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
418 fi
419
420 if [ "${IPMI_WATCHDOG}" = "yes" ]; then
421 device_node_exists /dev/watchdog
422 [ $? -eq 0 ] && RETVAL=$((RETVAL | 8))
423 fi
424
425 [ ! -e ${LOCKFILE} ] && RETVAL=$((RETVAL | 16))
426}
427
428status()
429{
430 minimum_modules_loaded
431 [ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
432
433 if [ "${DEV_IPMI}" = "yes" ]; then
434 modules_loaded_verbose ipmi_devintf
435 [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
436
437 device_node_exists /dev/ipmi${INTF_NUM}
438 [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
439 fi
440
441 if [ "${IPMI_IMB}" = "yes" ]; then
442 device_node_exists /dev/imb
443 [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
444 fi
445}
446
447status_watchdog()
448{
449 minimum_modules_loaded
450 [ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
451
452 modules_loaded_verbose ipmi_watchdog
453 [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
454
455 device_node_exists /dev/watchdog
456 [ $? -eq 0 ] && RETVAL=$((RETVAL | 8))
457}
458
459status_powercontrol()
460{
461 minimum_modules_loaded
462 [ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
463
464 modules_loaded_verbose ipmi_powercontrol
465 [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
466}
467
468#############################################################################
469usage ()
470{
471 echo $"Usage: $0 {start|stop|status" 1>&2
472 echo $" restart|condrestart|try-restart|reload|force-reload" 1>&2
473 echo $" start-watchdog|stop-watchdog|status-watchdog" 1>&2
474 echo $" start-powercontrol|stop-powercontrol|status-powercontrol" 1>&2
475 echo $" stop-all|status-all}" 1>&2
476 RETVAL=2
477}
478
479condrestart ()
480{
481 [ -e ${LOCKFILE} ] && restart
482}
483
484#############################################################################
485# MAIN
486#############################################################################
487case "$1" in
488 start) start ;;
489 stop) stop ;;
490 restart) restart ;;
491 force-reload) reload ;;
492 reload) reload ;;
493 status) status ;;
494 status-all) status_all ;;
495 condrestart) condrestart ;;
496 try-restart) condrestart ;;
497 start-watchdog) start_watchdog ;;
498 stop-watchdog) stop_watchdog ;;
499 status-watchdog) status_watchdog ;;
500 start-powercontrol) start_powercontrol ;;
501 stop-powercontrol) stop_powercontrol ;;
502 status-powercontrol) status_powercontrol ;;
503 stop-all) stop_all ;;
504 *) usage ;;
505esac
506
507exit ${RETVAL}
508
509#############################################################################
510# end of file
511#############################################################################
512
diff --git a/meta-networking/recipes-support/openipmi/files/openipmi-no-openipmigui-man.patch b/meta-networking/recipes-support/openipmi/files/openipmi-no-openipmigui-man.patch
new file mode 100644
index 000000000..1fa68f9ba
--- /dev/null
+++ b/meta-networking/recipes-support/openipmi/files/openipmi-no-openipmigui-man.patch
@@ -0,0 +1,26 @@
1Author: Aws Ismail <aws.ismail@windriver.com>
2Date: Thu Jun 7 12:28:34 2012 -0400
3
4 This patch was carried over from WRL4.3 (openipmi v2.0.16)
5
6 It was updated for openipmi v2.0.19
7
8 Disable making openipmigui man page since we don't need it
9
10 Upstream-Status: Pending
11
12 Signed-off-by: Aws Ismail <aws.ismail@windriver.com>
13 Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
14
15diff --git a/man/Makefile.am b/man/Makefile.am
16index 632f55b..5ce79f5 100644
17--- a/man/Makefile.am
18+++ b/man/Makefile.am
19@@ -1,6 +1,6 @@
20
21 man_MANS = ipmi_ui.1 openipmicmd.1 openipmish.1 ipmi_cmdlang.7 \
22- openipmigui.1 openipmi_conparms.7 solterm.1 rmcp_ping.1 \
23+ openipmi_conparms.7 solterm.1 rmcp_ping.1 \
24 openipmi_eventd.1
25
26 EXTRA_DIST = $(man_MANS)
diff --git a/meta-networking/recipes-support/openipmi/files/openipmi-remove-host-path-from-la_LDFLAGS.patch b/meta-networking/recipes-support/openipmi/files/openipmi-remove-host-path-from-la_LDFLAGS.patch
new file mode 100644
index 000000000..83485a9e6
--- /dev/null
+++ b/meta-networking/recipes-support/openipmi/files/openipmi-remove-host-path-from-la_LDFLAGS.patch
@@ -0,0 +1,50 @@
1From aa0dc0783a6ff5fb56c914b640836223e3c192bb Mon Sep 17 00:00:00 2001
2From: Jackie Huang <jackie.huang@windriver.com>
3Date: Mon, 29 Dec 2014 18:16:04 +0800
4Subject: [PATCH] remove host path from la_LDFLAGS
5
6Upstream-Status: Inappropriate [ cross compile specific ]
7
8Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
9---
10 cmdlang/Makefile.am | 2 +-
11 glib/Makefile.am | 4 ++--
12 tcl/Makefile.am | 2 +-
13 unix/Makefile.am | 4 ++--
14 4 files changed, 6 insertions(+), 6 deletions(-)
15
16Index: OpenIPMI-2.0.24/cmdlang/Makefile.am
17===================================================================
18--- OpenIPMI-2.0.24.orig/cmdlang/Makefile.am
19+++ OpenIPMI-2.0.24/cmdlang/Makefile.am
20@@ -15,8 +15,7 @@ libOpenIPMIcmdlang_la_SOURCES = cmdlang.
21 libOpenIPMIcmdlang_la_LIBADD = -lm \
22 $(top_builddir)/utils/libOpenIPMIutils.la \
23 $(top_builddir)/lib/libOpenIPMI.la
24-libOpenIPMIcmdlang_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) \
25- -L$(libdir)
26+libOpenIPMIcmdlang_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION)
27
28 bin_PROGRAMS = openipmish
29
30Index: OpenIPMI-2.0.24/unix/Makefile.am
31===================================================================
32--- OpenIPMI-2.0.24.orig/unix/Makefile.am
33+++ OpenIPMI-2.0.24/unix/Makefile.am
34@@ -10,14 +10,12 @@ lib_LTLIBRARIES = libOpenIPMIposix.la li
35 libOpenIPMIpthread_la_SOURCES = posix_thread_os_hnd.c selector.c
36 libOpenIPMIpthread_la_LIBADD = -lpthread $(GDBM_LIB) \
37 $(top_builddir)/utils/libOpenIPMIutils.la $(RT_LIB)
38-libOpenIPMIpthread_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) \
39- -L$(libdir)
40+libOpenIPMIpthread_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION)
41
42 libOpenIPMIposix_la_SOURCES = posix_os_hnd.c selector.c
43 libOpenIPMIposix_la_LIBADD = $(top_builddir)/utils/libOpenIPMIutils.la \
44 $(GDBM_LIB) $(RT_LIB)
45-libOpenIPMIposix_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) \
46- -L$(libdir)
47+libOpenIPMIposix_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION)
48
49 noinst_HEADERS = heap.h
50
diff --git a/meta-networking/recipes-support/openipmi/openipmi_2.0.24.bb b/meta-networking/recipes-support/openipmi/openipmi_2.0.24.bb
new file mode 100644
index 000000000..a4f63c5f4
--- /dev/null
+++ b/meta-networking/recipes-support/openipmi/openipmi_2.0.24.bb
@@ -0,0 +1,110 @@
1SUMMARY = "IPMI (Intelligent Platform Management Interface) library and tools"
2DESCRIPTION = "OpenIPMI is an effort to create a full-function IPMI system, \
3to allow full access to all IPMI information on a server \
4and to abstract it to a level that will make it easy to use"
5
6HOMEPAGE = "http://openipmi.sourceforge.net"
7
8DEPENDS = " \
9 glib-2.0 \
10 ncurses \
11 net-snmp \
12 openssl \
13 popt \
14 python \
15 swig-native \
16 "
17
18LICENSE = "GPLv2 & LGPLv2.1 & BSD"
19
20LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
21 file://COPYING.LIB;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
22 file://COPYING.BSD;md5=4b318d4160eb69c8ee53452feb1b4cdf \
23 "
24
25SRC_URI = "${SOURCEFORGE_MIRROR}/openipmi/OpenIPMI-${PV}.tar.gz \
26 file://fix-symlink-install-error-in-cmdlang.patch \
27 file://openipmi-no-openipmigui-man.patch \
28 file://openipmi-remove-host-path-from-la_LDFLAGS.patch \
29 file://ipmi-init-fix-the-arguments.patch \
30 file://do-not-install-pyc-and-pyo.patch \
31 file://include_sys_types.patch \
32 file://openipmi-helper \
33 file://ipmi.service \
34 file://0001-lanserv-Rename-struct-parameter-printf-for-namespace.patch \
35 "
36
37S = "${WORKDIR}/OpenIPMI-${PV}"
38SRC_URI[md5sum] = "58f9542cbfcb5fe250b77cf88345e1ec"
39SRC_URI[sha256sum] = "bca39a27071278a8b74610181ede8df51e155e5e9031bc8eaa3699d1720292b4"
40
41inherit autotools-brokensep pkgconfig pythonnative perlnative update-rc.d systemd
42
43EXTRA_OECONF = "--disable-static \
44 --with-perl='${STAGING_BINDIR_NATIVE}/perl-native/perl' \
45 --with-python='${STAGING_BINDIR_NATIVE}/python-native/python' \
46 --with-pythoninstall='${PYTHON_SITEPACKAGES_DIR}' \
47 --with-glibver=2.0"
48
49PACKAGECONFIG ??= "gdbm"
50PACKAGECONFIG[gdbm] = "ac_cv_header_gdbm_h=yes,ac_cv_header_gdbm_h=no,gdbm,"
51
52PACKAGES += "${PN}-perl ${PN}-python"
53
54FILES_${PN}-perl = " \
55 ${libdir}/perl/vendor_perl/*/OpenIPMI.pm \
56 ${libdir}/perl/vendor_perl/*/auto/OpenIPMI/OpenIPMI.so \
57 "
58
59FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}"
60
61FILES_${PN}-dbg += " \
62 ${libdir}/perl/vendor_perl/*/auto/OpenIPMI/.debug \
63 ${PYTHON_SITEPACKAGES_DIR}/.debug \
64 "
65
66do_configure () {
67
68 # Let's perform regular configuration first then handle perl issues.
69 autotools_do_configure
70
71 perl_ver=`perl -V:version | cut -d\' -f 2`
72
73 # Force openipmi perl bindings to be compiled using perl-native instead of
74 # the host's perl. Set the proper install directory for the resulting
75 # openipmi.pm and openipmi.so
76 for i in ${S}/swig/Makefile ${S}/swig/perl/Makefile; do
77 echo "SAL: i = $i"
78 echo "SAL: STAGING_INCDIR_NATIVE = $STAGING_INCDIR_NATIVE"
79 echo "SAL: libdir = $libdir"
80 sed -i -e "/^PERL_CFLAGS/s:-I/usr/local/include:-I${STAGING_INCDIR_NATIVE}:g" $i
81 sed -i -e "/^PERL_INSTALL_DIR/s:^PERL_INSTALL_DIR = .*:PERL_INSTALL_DIR = ${libdir}/perl/vendor_perl/$perl_ver:g" $i
82 done
83}
84
85do_install_append () {
86 echo "SAL: D = $D"
87 echo "SAL: libdir = $libdir"
88 install -m 0755 -d ${D}${sysconfdir}/sysconfig ${D}${sysconfdir}/init.d
89 install -m 0755 ${S}/ipmi.init ${D}${sysconfdir}/init.d/ipmi
90 install -m 0644 ${S}/ipmi.sysconf ${D}${sysconfdir}/sysconfig/ipmi
91 # SAL: mv: cannot stat `/localdisk/loadbuild/slittle1/workspace/cgts_test_build/bitbake_build/tmp/work/x86_64-wrs-linux/openipmi-2.0.19-r4/image/usr/lib64/perl5': No such file or directory
92 # SAL: real path to perl is /localdisk/loadbuild/slittle1/workspace/cgts_test_build/bitbake_build/tmp/work/x86_64-wrs-linux/perl-5.14.2-r8.3/package/usr/lib64/perl5 and it is a symlink to perl so no need to mv.
93 if [ -d ${D}${libdir}/perl5 ]
94 then
95 mv ${D}${libdir}/perl5 ${D}${libdir}/perl
96 fi
97
98 # for systemd
99 install -d ${D}${systemd_unitdir}/system
100 install -m 0664 ${WORKDIR}/ipmi.service ${D}${systemd_unitdir}/system
101 sed -i -e "s,@LIBEXECDIR@,${libexecdir},g" ${D}${systemd_unitdir}/system/ipmi.service
102 install -d ${D}${libexecdir}
103 install -m 0755 ${WORKDIR}/openipmi-helper ${D}${libexecdir}
104}
105
106INITSCRIPT_NAME = "ipmi"
107INITSCRIPT_PARAMS = "start 30 . stop 70 0 1 2 3 4 5 6 ."
108
109SYSTEMD_SERVICE_${PN} = "ipmi.service"
110SYSTEMD_AUTO_ENABLE = "disable"