mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-07-01 10:13:35 +00:00
Compare commits
516 Commits
IPMITOOL_1
...
bugfix/26
Author | SHA1 | Date | |
---|---|---|---|
6bed638c24 | |||
a4c1040420 | |||
576d4855d9 | |||
f2780c5d86 | |||
dc9b4ebfc9 | |||
6e2b688e24 | |||
6c3d4b56c9 | |||
4f05b95f6c | |||
f0d5c17ea7 | |||
a4ac8ce4ab | |||
65a2c548d8 | |||
1283382e82 | |||
7772254b62 | |||
a8862d7508 | |||
081bde8e1b | |||
9e05c0b120 | |||
6f336d04f1 | |||
9d49a6edfe | |||
c70665c3d1 | |||
2ed677c388 | |||
03d2b53c97 | |||
4c155320be | |||
40d52b5fa1 | |||
0b6abe8cd9 | |||
f43a78bfc3 | |||
b44ec2fb65 | |||
e9716e216d | |||
f3ef88724f | |||
9ecfb762bd | |||
bb1a4cc805 | |||
232773d171 | |||
a8f3413dc2 | |||
29e7d26edb | |||
7747d86cc4 | |||
5491b12596 | |||
3db2bf6c4b | |||
5a684b54ed | |||
6d6411d2fc | |||
5c033c06ab | |||
72b4b25b05 | |||
3aade24297 | |||
329ebdff84 | |||
6ee52071dd | |||
249e092967 | |||
b3d258b234 | |||
928716244d | |||
2de8a5e1a9 | |||
861ffb4680 | |||
0310208383 | |||
e8e94d8976 | |||
e49a20eece | |||
6c00d448d5 | |||
2a78ff2482 | |||
27f2f00dc6 | |||
f222df3081 | |||
8c0e76c21a | |||
432f06db3f | |||
564aef2aff | |||
ef7564a7ac | |||
724f7329a3 | |||
f498e3e296 | |||
6d9c540f6b | |||
60723084e6 | |||
9d41136c9b | |||
ecb4cfbff8 | |||
1664902525 | |||
f004b4b719 | |||
ba01dc84b4 | |||
497f7767cd | |||
7b0302cef5 | |||
840f573083 | |||
41fa699ae9 | |||
b35a634908 | |||
bc7d23761d | |||
e45dc6234b | |||
5db314f694 | |||
77fe563503 | |||
7b102293e8 | |||
b57487e360 | |||
80345ac56a | |||
0ea110a247 | |||
076ffb5650 | |||
b5ce925744 | |||
1487681b8c | |||
75a79e164d | |||
2d4762d573 | |||
2cc196d518 | |||
89cffb984b | |||
3f7e82a6b4 | |||
c6cd49ea37 | |||
052655cd91 | |||
fa2c1550b9 | |||
51198a1749 | |||
cc9a6b3964 | |||
ea471ed5fa | |||
e30c357db7 | |||
95eb252ecd | |||
2c99bf69ec | |||
34711329c2 | |||
2f76ab3d3a | |||
7f8d37493f | |||
f9211f8ed9 | |||
ea46724878 | |||
9a6ba64651 | |||
f8a711b9e8 | |||
fcf7445bce | |||
a3bec1d365 | |||
8bd9659101 | |||
9341982a38 | |||
4ecac48c68 | |||
6d8ad594cc | |||
a203644728 | |||
d56220f81f | |||
c89be0354a | |||
0fdfbce8b6 | |||
2153bd7aa3 | |||
9b1a1a1e82 | |||
0ffe39dedc | |||
7e991a18e0 | |||
b42c16d9dc | |||
55834ec3aa | |||
a7b0c213f9 | |||
70253df032 | |||
ec8ba928d4 | |||
f62a16f7f2 | |||
681bc21d32 | |||
fe2fcaf3ef | |||
27ac0c15ac | |||
8ca47f21ca | |||
b74c20c5d5 | |||
997b3ea328 | |||
ebe6b0ce48 | |||
b44366e92d | |||
e88e5c8186 | |||
a65b49c387 | |||
107e6affd0 | |||
5fca596492 | |||
244ce02f91 | |||
ccfa5aec4f | |||
eb94a394ba | |||
1636dbcf0c | |||
9f2072e6c3 | |||
d57bf32668 | |||
0d6a45357b | |||
d1b0e68515 | |||
4520b6ff0e | |||
a40737f856 | |||
a40d51abff | |||
9fd4dedd37 | |||
baa2c08ab3 | |||
955a875274 | |||
5d271b0f67 | |||
954859e330 | |||
19423c68d0 | |||
0f896e36f2 | |||
0008072590 | |||
aeba39bffc | |||
f3f4361568 | |||
aede0cee75 | |||
61d2f24090 | |||
3123ce01b5 | |||
f70a19cf63 | |||
02cdde0264 | |||
19293f08df | |||
c7169bc27e | |||
d6ca800da2 | |||
8fe8a5c74c | |||
9639cb3fa1 | |||
d65658aacc | |||
4648843f81 | |||
24ebe2fed9 | |||
2b8974fb22 | |||
38241decc7 | |||
a6a67e5e9c | |||
ac646c329b | |||
25e39b337c | |||
cacdd1b6ec | |||
eb5c73c04e | |||
55b024f573 | |||
e1897e2a1d | |||
9289aeb8c2 | |||
4e707af583 | |||
dc5dead291 | |||
b8ca3cac3a | |||
a74e837562 | |||
6a196c4a6a | |||
909fc7815c | |||
65ea078bdf | |||
89dbad1655 | |||
9020b67347 | |||
f62b924cb4 | |||
8055e0d9fb | |||
f67a7a3b2f | |||
ac1b3e1d46 | |||
336b2cb1ab | |||
2c3a876a73 | |||
37307c93e9 | |||
c9e3e6a01b | |||
603c14274a | |||
14368335b2 | |||
c56b5c9667 | |||
718a242205 | |||
636a785d82 | |||
c38ecd063f | |||
b6d0afb0f6 | |||
5be090f047 | |||
607cfe6f47 | |||
999cd0ad91 | |||
ffeb535db8 | |||
4a8691f477 | |||
c04aa9bb4e | |||
329281bbce | |||
e2c5b322d8 | |||
13a2a29156 | |||
3412d86143 | |||
a98eedb272 | |||
372b458e0f | |||
0caa68115e | |||
a5c1120dbb | |||
1add1486f9 | |||
89e9e63443 | |||
30becb3588 | |||
0d8f9a7453 | |||
ff80a188f3 | |||
169d9ac3fc | |||
6dec83ff5d | |||
c87aa0b96a | |||
fb6e311d27 | |||
24fd406506 | |||
a585af7e0c | |||
e8450850e3 | |||
2d79e69f5f | |||
259500e127 | |||
70099a3c40 | |||
82f6175dc7 | |||
d12b3b4870 | |||
ace0e646a1 | |||
eb54136775 | |||
9caa78be38 | |||
925a2fe55c | |||
531569ec62 | |||
ce861658c0 | |||
f1c6118c72 | |||
d5c2e976d4 | |||
7a854623aa | |||
fd5fdc59f2 | |||
4725cfd6d9 | |||
5a30d18af2 | |||
11bbf18345 | |||
026a8b6fce | |||
410606e868 | |||
8081427543 | |||
8f1f31cfdc | |||
90e2134413 | |||
66eee40df4 | |||
a6d47ceba4 | |||
21151953a5 | |||
b591bc2ab7 | |||
0e99dafa12 | |||
4c5058cdc3 | |||
f35ed010f0 | |||
512ec41ab4 | |||
b88a523ded | |||
75843864ba | |||
45c54aad0e | |||
32c4690950 | |||
03d8aa1882 | |||
d874267e9b | |||
c59e7247dd | |||
88891f69d6 | |||
aabd9eb1ac | |||
82a0caa38b | |||
55b1a41855 | |||
c56458da18 | |||
ce3f35d9d9 | |||
4dfb15281e | |||
7bd7c4fdd1 | |||
f0acdf1b50 | |||
ece5e55745 | |||
99721b52e4 | |||
0b54fac782 | |||
312f95930d | |||
d36cfcb817 | |||
33f9336e85 | |||
6febd10121 | |||
6b8d55d68b | |||
12b85b3c7b | |||
0ff2d6e464 | |||
dab7f5bf81 | |||
6c3f60e57c | |||
278dc84b22 | |||
0801b4588d | |||
56aa025dc2 | |||
238d3c4ea9 | |||
69f668309b | |||
585cb7c83d | |||
708be8bc45 | |||
d6deeb264e | |||
bcb96209c5 | |||
8227384c02 | |||
39fb1af285 | |||
faae8fd247 | |||
b6ec5072f4 | |||
fb36c69391 | |||
d099dca9c5 | |||
af276d4082 | |||
e4be291c65 | |||
bb35d370ba | |||
31f9d4c635 | |||
6d1afbf3a7 | |||
d9acbc4cd0 | |||
9811f79eae | |||
2d66f8d5cf | |||
8775af38f5 | |||
9fc4a39fda | |||
a6957f875c | |||
4ef4618366 | |||
8ac8361aca | |||
fb69b5dc9e | |||
c2e65d0dce | |||
12eeca602c | |||
c076fde0a6 | |||
ecfaeb2706 | |||
61db4df637 | |||
e37e3ab7de | |||
c97dbd3461 | |||
48117f5ddf | |||
70984dcad5 | |||
ce02ffaf2a | |||
3105812a44 | |||
148d0e0904 | |||
6ca88cb687 | |||
6d4e2bb632 | |||
104a7176ac | |||
d9f89a8da0 | |||
0a1f5c03e5 | |||
140add9d77 | |||
0562c809af | |||
a87b2ccc67 | |||
ad77da2065 | |||
6e6a04f971 | |||
befb21497f | |||
1d1ce49bf4 | |||
50bd7d01a8 | |||
4d3decc4c0 | |||
f8ce85ee6c | |||
2aa5d8c902 | |||
3c34aa0e1d | |||
a58a627fae | |||
aaf98b89d5 | |||
7cd86aaf1e | |||
dd4cab8153 | |||
d671052143 | |||
e9c3de03c3 | |||
1cf65c3236 | |||
0eaa2eae51 | |||
f56d740d98 | |||
342f44b9f3 | |||
e1c7b532bd | |||
3314024867 | |||
15499d014f | |||
21fbd0e967 | |||
deb9a4ed5d | |||
58837647c2 | |||
5c85c7bc61 | |||
aa8bac2da2 | |||
2b15969dcb | |||
7560d4f2f4 | |||
859e8a4576 | |||
f49c9eec53 | |||
a6f34c9029 | |||
bee3fda656 | |||
737b801768 | |||
96b19bb62d | |||
9372d2e34e | |||
9babab10f3 | |||
58d510f90f | |||
ea49700ec1 | |||
732be1b968 | |||
2f57897501 | |||
d79b0e05af | |||
3b15a7c0e2 | |||
3f508629a5 | |||
3473670051 | |||
aefd287222 | |||
6d25903a0b | |||
26da519310 | |||
edfee17f21 | |||
b37b914973 | |||
4e4a92100c | |||
8f7837364b | |||
be7917f9f5 | |||
a7d3bda08d | |||
d531785a23 | |||
eeeb973e39 | |||
166ae1da23 | |||
4f0967779e | |||
9d88837ef3 | |||
824c0ed4a0 | |||
7ea04d8f77 | |||
8d5e8fcf7a | |||
2c7526be6b | |||
a88db0d181 | |||
42aba7eb4f | |||
23e9340b49 | |||
707d77ffbc | |||
7584b96c1d | |||
cc85ce1333 | |||
2c7a5f91ef | |||
9e3dba7e97 | |||
176774cf9f | |||
cab450a052 | |||
250eb15f92 | |||
02e4a0361c | |||
ca5cc560f6 | |||
b4a9d2f9a2 | |||
8d44c55feb | |||
c18ec02f33 | |||
b0aad15d67 | |||
adbf585bd4 | |||
9393bf0133 | |||
2c2844ac03 | |||
c186e2a681 | |||
e02ed2ca2c | |||
a06f8a26d4 | |||
a324db391c | |||
b086e876d7 | |||
555a08ece0 | |||
696ccb0787 | |||
86cb5ee175 | |||
99fff91f9d | |||
df3e3c7969 | |||
135977a497 | |||
4e220bebb0 | |||
4698e667f5 | |||
ff1dbe3d5b | |||
d42890ef17 | |||
2d7fe32687 | |||
3a852a8849 | |||
c9e047c334 | |||
6cf6b4b845 | |||
36c11f6033 | |||
5dc9585e77 | |||
0b97d32c25 | |||
5949b19d44 | |||
0cd8f46c42 | |||
2ff745286b | |||
f6cabfb089 | |||
d3ca7cb090 | |||
6871fe1c8e | |||
b9a0c5a091 | |||
1cc4ba699d | |||
b779439ad0 | |||
63ef18e6e0 | |||
935b215514 | |||
cd524c2d25 | |||
e24c7f75f2 | |||
da4b779adf | |||
aca8d6ad7b | |||
5416af78a5 | |||
770e61663f | |||
22f294fc27 | |||
a675601da4 | |||
645120f545 | |||
2df9ca914f | |||
a5d55b5d51 | |||
f2ba7fcd60 | |||
24923222f6 | |||
5bf68a4769 | |||
4e2ac7d097 | |||
d5d86d4dcb | |||
0a4a5cafbc | |||
043c42160e | |||
49879b387c | |||
38121041c1 | |||
d8f27165d1 | |||
5a1e81a948 | |||
f12b976ebc | |||
0dddcfe450 | |||
700658e91e | |||
3df72b68bc | |||
068bcb02e4 | |||
52634a708f | |||
2b08fd405e | |||
fb3c6f292e | |||
d02492f1c7 | |||
9517cb332b | |||
ae96dd3229 | |||
968f5d6552 | |||
f4730e1f67 | |||
b782311e10 | |||
45d0a4255a | |||
ac9513025c | |||
60a3e63429 | |||
f19ed0a90b | |||
7a0b451fd7 | |||
a8119d13a8 | |||
f56cea1253 | |||
7b5683d85d | |||
80c03570ac | |||
6de0796079 | |||
18aadc30d0 | |||
08f50ad301 | |||
b803224398 | |||
5d3c64f028 | |||
942dcb71d8 | |||
29af592773 | |||
ada4b48baf | |||
47831b3c15 | |||
efdeb12724 | |||
c7412e5815 | |||
041d8e4bf8 | |||
6a02cccb70 | |||
3d9c5ae746 | |||
49350157fe | |||
c6f6550f27 |
33
.gitignore
vendored
Normal file
33
.gitignore
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
.deps
|
||||
.libs
|
||||
*.o
|
||||
*.lo
|
||||
*.la
|
||||
*.*~
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
compile
|
||||
config.guess
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
depcomp
|
||||
install-sh
|
||||
ltmain.sh
|
||||
libtool
|
||||
missing
|
||||
stamp-h1
|
||||
control/ipmitool.spec
|
||||
control/pkginfo
|
||||
control/prototype
|
||||
control/rpmmacros
|
||||
src/ipmievd
|
||||
src/ipmitool
|
||||
lib/ipmi_pen_list.inc.c
|
||||
cscope.out
|
||||
tags
|
10
.travis.yml
Normal file
10
.travis.yml
Normal file
@ -0,0 +1,10 @@
|
||||
language: C
|
||||
sudo: enabled
|
||||
before_install:
|
||||
- sudo apt-get install -y libssl-dev
|
||||
before_script:
|
||||
- ./bootstrap
|
||||
script:
|
||||
- ./configure --enable-intf-dummy
|
||||
- make
|
||||
- sudo make install
|
@ -2,3 +2,4 @@ Duncan Laurie <duncan@iceblink.org>
|
||||
Fredrik Öhrn <ohrn@chl.chalmers.se>
|
||||
Jon Cassorla <jon.cassorla@newisys.com>
|
||||
Jeremy Ellington <jeremy@jeremye.net>
|
||||
Petter Reinholdtsen <pere@hungry.com>
|
@ -1,4 +1,357 @@
|
||||
version 1.8.13rc0 2013-08-09
|
||||
version 1.8.18 2016-10-08
|
||||
* Add mac2str() and str2mac() to print/parse MAC address
|
||||
* Change formatting, remove commented-out code in
|
||||
src/plugins/imb/imbapi.c
|
||||
* Export find_lan_channel() as global
|
||||
* Expose _ipmi_get_channel_info()
|
||||
* Extend buf2str to allow separator
|
||||
* Fix indentation of #define in src/plugins/imb/imbapi.c
|
||||
* Fix missing `goto out_free;` when ipmi_parse_hex() returns (-1)
|
||||
* Fix warning for buf2str argument
|
||||
* ID 408 - fix sel list last X listing
|
||||
* ID: 38 - Protocol violating SOL retries when talking to
|
||||
SIMSO-HTC
|
||||
* ID: 459 - Fix reading FRU on Artesyn (Emerson) shelf manager,
|
||||
MF105.
|
||||
* ID: 464 - ipmievd crash fix in log_event
|
||||
* ID:230 - check return value of malloc() in lib/ipmi_ekanalyzer.c
|
||||
* ID:261 - Fix err. output consistency for % ipmitool chassis
|
||||
INV_PARAM;
|
||||
* ID:287 - Fix print-out of DDR3 SDRAM Serial Number
|
||||
* ID:287 - Remove trailing white-spaces from dimm_spd.c
|
||||
* ID:289 - bmx-snmp-proxy: PEF alerting does not work for
|
||||
multiple destinations
|
||||
* ID:312 - BREAKING CHANGE - Re-design of PEF user interface
|
||||
* ID:312 - Fix bitmask in _ipmi_set_pef_policy_entry()
|
||||
* ID:335 - Check return value of fseek(), prevent segfault
|
||||
* ID:335 - Check return value of fseek(), prevent segfault
|
||||
* ID:355 - Comment out statement without effect in lib/ipmi_sel.c
|
||||
* ID:355 - Fix 'missing initializer' in struct lan_param
|
||||
* ID:355 - Fix ``warning: ISO C forbids zero-size array 'data'''
|
||||
* ID:355 - Fix different pointer type in lib/ipmi_picmg.c
|
||||
* ID:355 - Fix missing struct initializers in lib/ipmi_firewall.c
|
||||
* ID:355 - Fix printf format in lib/ipmi_sunoem.c
|
||||
* ID:355 - Fix printf() related warnings in lib/ipmi_delloem.c
|
||||
* ID:355 - Fix signedness warnings in lib/ipmi_sdr.c
|
||||
* ID:355 - Fix statements without effect in lib/ipmi_ekanalyzer.c
|
||||
* ID:355 - Move section_id from ipmi_fru. to ipmi_fru.c
|
||||
* ID:355 - Replace DEBUG() macro with lprintf(LOG_DEBUG, ...)
|
||||
* ID:375 - Add lan6 subcommand to handle IPv6 LAN parameters
|
||||
* ID:400 - Add support for VITA-specific sensor types and events.
|
||||
* ID:441 - Add support for HMAC_MD5 and HMAC_SHA256
|
||||
* ID:443 - Disable USB driver by default on non-Linux systems
|
||||
* ID:444 - Cleanup of defaults in configure.ac
|
||||
* ID:445 - Fix of compilation on FreeBSD
|
||||
* ID:446 - Fix broken firewall reset iterator
|
||||
* ID:447 - Fix access beyond array limits in serial_terminal
|
||||
* ID:449 - ipmitool close console session for sol deactivate
|
||||
command
|
||||
* ID:451 - Modify the memory ecc error display of SEL for new
|
||||
supermicro motherboards.
|
||||
* ID:452 - Add PICMG extension 5.x for PICMG extension check
|
||||
* ID:454 - Add support for PICMG 3.1 R2.0 Link Types and Link
|
||||
Classes.
|
||||
* ID:456 - Unable to disable the VLAN ID using ipmitool
|
||||
* ID:457 - Display User ID enable/disable status
|
||||
* ID:463 - Removal of Nokia Siemens Networks
|
||||
* ID:465 - Supermicro memory ecc Modify the memory ecc error
|
||||
display of SEL for new supermicro boards.
|
||||
* Moved ipmi_parse_hex() to helper.c
|
||||
* Re-work ipmi_mc_get_guid() and turn it into reusable code
|
||||
* Revert "ID:335 - Check return value of fseek(), prevent
|
||||
segfault"
|
||||
* Rewrite code with the notion that Kg is binary data, not string
|
||||
|
||||
version 1.8.17 2016-05-01
|
||||
* Add INSTALL and NEWS, mandated by autoconf
|
||||
* Added missing ipmi_sel_supermicro.h to template Makefile.am
|
||||
* Check rsp->data_len in ipmi_sel_get_info()
|
||||
* Fix "redirecting incorrect #include <sys/poll.h> to <poll.h>"
|
||||
warning with musl libc
|
||||
* Fix automake compatibility warnings
|
||||
* Fix implicit declaration of function
|
||||
'get_nic_selection_mode_12g' in lib/ipmi_delloem.c
|
||||
* Fix implicit declaration of function 'ipmi_get_oem' in
|
||||
src/plugins/imb/imb.c
|
||||
* Fix implicit declaration of function 'ipmi_get_oem' in
|
||||
src/plugins/lanplus/lanplus.c
|
||||
* Fix implicit declaration of function 'ipmi_get_oem' in
|
||||
src/plugins/open/open.c
|
||||
* Fix implicit declarations of functions 'HpmfwupgPreUpgradeCheck'
|
||||
and 'ipmi_intf_get_max_request_data_size' in lib/ipmi_hpmfwupg.c
|
||||
* Fix implicit declarations of functions
|
||||
'ipmi_intf_set_max_request_data_size' and
|
||||
'ipmi_intf_set_max_response_data_size' in lib/hpm2.c
|
||||
* Fix implicit function declaration of
|
||||
ipmi_intf_get_max_response_data_size in lib/ipmi_sdr.c
|
||||
* Fix several implicit declarations of functions in
|
||||
lib/ipmi_main.c
|
||||
* Fix several implicit function declarations in lib/ipmi_fru.c
|
||||
* Fix warning: suggest parentheses around '+' inside '<<'
|
||||
in lib/ipmi_main.c
|
||||
* Fix warning: suggest parentheses around arithmetic in operand of
|
||||
'|' in include/ipmitool/hpm2
|
||||
* Get rid of old INCLUDES macro, use AM_CPPFLAGS instead.
|
||||
* ID 440 - Fix 'unknown type name fd_set" error.
|
||||
* ID 440 - remove obsolete headers from lib/ipmi_sunoem.c
|
||||
* ID:322 - let 'ekanalyzer frushow' run without a working
|
||||
IPMI target
|
||||
* ID:355 - Add #include <strings.h> to lib/ipmi_sel.c
|
||||
* ID:355 - Add macros and #include and reduce number of warnings
|
||||
* ID:355 - Change CFLAG -std=c99 to -std=gnu99
|
||||
* ID:355 - Move Super Micro stuff into dedicated header file
|
||||
* ID:355 - Remove declared, but not used variables
|
||||
* ID:404 - Edit FRU information update problem
|
||||
* ID:405 - Use meaningful Generator ID for "ipmitool sel add"
|
||||
* ID:407 - Avoid assert on mismatched session ID
|
||||
* ID:409 - Fix IPv6 socket creation on Windows/Cygwin.
|
||||
* ID:410 - Disable USB interface for Windows/Cygwin by default.
|
||||
* ID:410 - Enable/disable USB interface by "auto"
|
||||
* ID:411 - Fix HPM.2 revision check for R1.1 and subsequent
|
||||
specification revisions.
|
||||
* ID:412 - Check errors when setting a user password.
|
||||
* ID:413 - Print new line chne character when setting user
|
||||
privilege.
|
||||
* ID:414 - ekanalyzer frushow fails to show 'Product Info'
|
||||
correctly
|
||||
* ID:417 - Fix some typos
|
||||
* ID:418 - Fix Compiling under Mac OS X
|
||||
* ID:419 - List dummy.h in Makefile.am, so it gets included in
|
||||
a release tarball
|
||||
* ID:421 - Fix memleak for sol output
|
||||
* ID:423 - Don't assume internal use area is present in ekanalyzer
|
||||
* ID:424 - Update dimm_spd.c with data from the latest JEDEC List
|
||||
* ID:425 - Disable USB interface for OS X/darwin
|
||||
* ID:426 - Fallback to run-time detection of PAGESIZE if
|
||||
compile-time detection is not supported
|
||||
* ID:426 - Include sys/socket.h instead of asm/socket.h
|
||||
* ID:426 - Include wchar.h instead of defining wchar_t ourselves
|
||||
* ID:427 - Cleanup comment in ipmi_sdr_get_header()
|
||||
* ID:427 - The first two bytes of dumped raw SDR data is wrong.
|
||||
* ID:428 - Update IANA numbers / Product Name for IBM and ADLINK
|
||||
* ID:430 - Change Nokia Siemens Networks to Nokia Solutions
|
||||
and Networks
|
||||
* ID:431 - Fix correct interpretation of led states
|
||||
* ID:437 - sel: Fix "sel time set <time>"
|
||||
* Make bootstrap script part of dist packages
|
||||
* Remove #if 0 code aka not-compiled-in
|
||||
* Remove trailing white-spaces in lib/log.c
|
||||
* git-ignore autoconf-generated files
|
||||
|
||||
version 1.8.16 2015-11-22
|
||||
* Add _ipmi_get_channel_access() and _ipmi_get_channel_info()
|
||||
* Add _ipmi_get_user_access() and _ipmi_set_user_access()
|
||||
* Add _ipmi_get_user_name()
|
||||
* Add _ipmi_set_channel_access() function
|
||||
* Add _ipmi_set_user_password() function
|
||||
* Add limits check in get_cmdline_macaddr()
|
||||
* Change expression in ipmi_pef_get_info() in order to silence Coverity
|
||||
* Change expression in ipmi_pef_list_policies() in order to silence Coverity
|
||||
* Code cleanup in ipmi_user_main()
|
||||
* Create ask_password() and re-use code
|
||||
* Delete dead code from ipmi_sunoem_echo() - CID#1261338
|
||||
* Don't output pidfile before parsing command line arguments
|
||||
* Don't use tmp variable since it's not necessary in ipmi_user_test()
|
||||
* Fix 'user help' output
|
||||
* Fix Assign instead of compare in KfwumGetDeviceInfo() - CID#1149034
|
||||
* Fix Identical code for different branches in ipmi_tsol_main() -
|
||||
CID#1261346
|
||||
* Fix big parameter passed by value in ipmi_sel_oem_match() - CID#1261347
|
||||
* Fix dead code in ipmi_firewall_reset() - CID#1261342
|
||||
* Fix eval logic in ipmi_user_priv()
|
||||
* Fix file descriptor leak in ipmi_exec_main() - CID#1149040
|
||||
* Fix identical code for diff branches in DellOEM - CID#1261326
|
||||
* Fix memory leak in get_supermicro_evt_desc()
|
||||
* Fix memory leak in ipmi_ek_display_board_info_area() - CID#1149051
|
||||
* Fix missing return in ipmi_kontronoem_main() - CID#1261317
|
||||
* Fix of previous commit - memset() expects pointer
|
||||
* Fix out-of-bound-reads in get_supermicro_evt_desc()
|
||||
* Fix resource leak in fru_area_print_board() - CDI#1149048
|
||||
* Fix resource leak in fru_area_print_chassis() - CID#1149047
|
||||
* Fix resource leak in fru_area_print_product() - CID#1149046
|
||||
* Fix resource leak in ipmi_kontron_set_serial_number() - CID#1149041
|
||||
* Fix typo vlan->VLAN in ipmi_lan_set_vlan_id() and
|
||||
ipmi_lan_set_vlan_priority()
|
||||
* Fix uninitialized struct in ipmi_fru_upg_ekeying() - CID#1149065
|
||||
* Fix user input validation in Channel and User sub-commands
|
||||
* Fix wrong size argument in ipmi_sdr_list_cache_fromfile() - CID#1149056
|
||||
* Fix/remove pointer cast in _ipmi_set_user_access()
|
||||
* Hook functions in ipmi_user to _ipmi_set_user_password()
|
||||
* Hook ipmi_get_channel_info() to _ipmi_get_*()
|
||||
* Hook ipmi_get_channel_medium() to new _ipmi_get_*() functions
|
||||
* Hook ipmi_lan_set_password() to _ipmi_set_user_password()
|
||||
* Hook ipmi_print_user_list() and friends to _ipmi_* functions
|
||||
* Hook ipmi_set_alert_enable() to _ipmi_*()
|
||||
* Hook ipmi_set_user_access() to _ipmi_set_user_access()
|
||||
* Hook ipmi_user_priv() to _ipmi_set_user_access()
|
||||
* ID:307 - Intel I82751 super pass through mode fixup
|
||||
* ID:355 - Fix compiler warnings for Dummy Interface
|
||||
* ID:380 - raw commands override retry and timeout values
|
||||
* ID:319 - Interface safe re-open
|
||||
* ID:320 - Add VITA 46.11 support
|
||||
* ID:333 - Set read timeout to 15s in OpenIPMI interface
|
||||
* ID:336 - ipmitool does not fall back to IPv4 for IPMI v2 / RMCP+ sessions
|
||||
* ID:343 - Print actual sensor thresholds in 'sensors' comand
|
||||
* ID:343 - Remove AC_FUNC_MALLOC
|
||||
* ID:344 - Fix HPM.2 long message support
|
||||
* ID:345 - Do not do several close session retries when catching SIGINT
|
||||
* ID:346 - lib/ipmi_sdradd.c ipmi_sdr_read_record has a file descriptor leak
|
||||
* ID:347 - Incorrect reserved channel number
|
||||
* ID:348 - Add support for the "System Firmware Version"
|
||||
* ID:349 - user set password - add option to choose 16/20 byte password
|
||||
* ID:354 - Replace obsolete u_int with uint32_t in dimm_spd.c
|
||||
* ID:354 - Replace obsolete u_int[0-9]+_t with standardized types in Free
|
||||
iface
|
||||
* ID:354 - forcefully switch to C99 and more strict CFLAGS
|
||||
* ID:354 - replace/drop caddr_t in IMB
|
||||
* ID:354 - struct member h_addr has been replaced
|
||||
* ID:354 - uint8_t >= 0 is always true, don't test it
|
||||
* ID:355 - Fix Enumeration value not handled in ipmi_get_event_desc()
|
||||
* ID:355 - Fix ``ISO C forbids omitting the middle term of a ?: expression''
|
||||
* ID:355 - Fix ``obsolete use of designated initializer with ¿:¿'' warning
|
||||
* ID:355 - Fix comparison of unsigned expression
|
||||
* ID:355 - Fix compiler warnings
|
||||
* ID:355 - Fix compiler warnings in dimm_spd.c
|
||||
* ID:355 - Fix couple compiler warnings in ipmi_lanp.h
|
||||
* ID:355 - Fix formatting warning in get_cmdline_ipaddr()
|
||||
* ID:355 - Fix zero-length format string warning in
|
||||
get_supermicro_evt_desc()
|
||||
* ID:355 - Remove defined but unused variable in _set_command_enables()
|
||||
* ID:355 - remove unused variables from ipmi_dcmi.c
|
||||
* ID:357 - out-of-bound access in DDR4 code ID:356 - DIMM4 Die Count is
|
||||
unreachable
|
||||
* ID:357 - out-of-bound access in DDR4 code
|
||||
* ID:358 - check data length in else branch of ipmi_spd_print()
|
||||
* ID:361 - Add a OEM IANA information
|
||||
* ID:363 - Node Manager feature patch.
|
||||
* ID:363 - fix Coverity issues in NM implementation
|
||||
* ID:364 - Fix for serial-basic interface bridging
|
||||
* ID:365 - Fix for ipmitool crash when using serial-terminal interface
|
||||
* ID:366 - Properly clean LAN and LAN+ interfaces on close
|
||||
* ID:367 - Fix building of non-bridged LAN interface commands
|
||||
* ID:368 - Fix handling of bridging-related parameters
|
||||
* ID:369 - Fix lanplus interface bridging and response matching
|
||||
* ID:370 - add anonymous union support in CFLAGS for older gcc
|
||||
* ID:371 - add ericsson oem
|
||||
* ID:373 - Fix compilation of IMB on Windows
|
||||
* ID:374 - Check/set LED Duration correctly
|
||||
* ID:376 - Add means to configure "Bad Password Threshold"
|
||||
* ID:381 - Script to log installation status as SEL events
|
||||
* ID:382 - Fix memcpy() params in HpmFwupgActionUploadFirmware()
|
||||
* ID:383 - Fix compile-time error in src/plugins/lan/lan.c
|
||||
* ID:384 - Fix compilation under cygwin64
|
||||
* ID:388 - Fix Error message always printed if BMC does not support VITA
|
||||
* ID:388 - Handle ccode 0xCC as well in VITA discovery
|
||||
* ID:388 - Turn all messages into LOG_INFO in VITA discovery
|
||||
* ID:389 - Add on of Advantech IANA number
|
||||
* ID:390 - Support for new Communication Interface (USB Medium)
|
||||
* ID:391 - changing data_len from 17 to 16 according to ipmi spec 22.29,
|
||||
first byte is completion code
|
||||
* ID:392 - _ipmi_get_user_name() work-around for some BMCs
|
||||
* ID:393 - ipmitool man page addition for Node Manager support.
|
||||
* ID:394 - close fp if isn't NULL and set it NULL afterwards in USB plugin
|
||||
* ID:394 - plugins/usb: Fix probe for SCSI devices
|
||||
* ID:395 - Fix fru string without resizing it
|
||||
* ID:396 - Fixed invalid length check in picmg led cap command.
|
||||
* ID:397 - Fixed picmg policy set command.
|
||||
* ID:398 - Fixed channel setaccess command.
|
||||
* ID:399 - Fixed channel getciphers command.
|
||||
* ID:401 - Fixed 30 second delay when activating SOL on 'dumb' Intel MACs.
|
||||
* ID:402 - Misguiding error print-out when using some 'lan' commands.
|
||||
* Init user_access_t struct in ipmi_user_priv()
|
||||
* Make user User Privilege Limit is within range
|
||||
* Node Manager Feature, correct 1268194 missing break.
|
||||
* Output pidfile only in verbose mode
|
||||
* Print error message to STDERR in ipmi_channel.c
|
||||
* Re-work 'channel getaccess' and 'channel setaccess'
|
||||
* Re-work ccode eval in ipmi_get_channel_medium()
|
||||
* Remove commented-out code in ipmi_picmg_clk_set() - CID#1261339
|
||||
* Remove dead code - rsp can't be NULL at this point - CID#1149005
|
||||
* Remove dead code in fru_area_print_board() - CID#1149001
|
||||
* Remove dead code in fru_area_print_chassis() - CID#1149000
|
||||
* Remove dead code in fru_area_print_product() - CID#1148999
|
||||
* Remove dead(duplicate) code from ipmi_sol_main() - CID#1148996
|
||||
* Remove get_channel_access_rsp and get_channel_info_rsp structs
|
||||
* Remove ipmi_user_set_password()
|
||||
* Remove length checks in get_supermicro_evt_desc()
|
||||
* Remove redundant user-input conversion from ipmi_sel_delete()
|
||||
* Remove trailing white-spaces in ipmi_user.c
|
||||
* Remove trailing white-spaces in ipmi_user.c
|
||||
* Remove trailing white-spaces in src/plugins/dummy/dummy.c
|
||||
* Remove unused variable from ipmi_get_channel_cipher_suites()
|
||||
* Replace deprecated bzero() with memset()
|
||||
* Replace s6_addr16 with s6_addr since Mac OS X does not have it
|
||||
* Rewrite ipmi_set_channel_access()
|
||||
* Split ipmi_user_main() into smaller functions
|
||||
* ipmi_print_user_summary() to utilize _ipmi_get_user_access()
|
||||
* ipmitool delloem: ipmitool delloem extension always return success - fix
|
||||
it
|
||||
|
||||
version 1.8.15 2014-11-24
|
||||
* ID: 340 - ipmitool sol session improperly closes on packet retry
|
||||
* ID: 277 - support for hostnames longer than 64 chars
|
||||
* ID: 313 - ipmitool doesn't support hostname long than 64 symbols
|
||||
* ID: 277 - Minor issue with ipmi_intf_session_set_hostname()
|
||||
* ID: 247 - 'sensor thresh' help output is wrong
|
||||
* ID: 324 - conflicting declaration write_fru_area()
|
||||
* ID: 337 - Add support for 13G Dell PowerEdge
|
||||
* ID: 325 - DDR4 DIMM Decoding Logic
|
||||
* ID: 328 - HPM.2 fixes
|
||||
* ID: 329 - hpm.1 upgrade fixes
|
||||
* ID: 103 - picmg discover messages should be DEBUG, not INFO
|
||||
* ID: 331 - Passwords provided in file (-f option) truncated on space
|
||||
* ID: 318 - ipmi_tsol.c: fix buffer overflow
|
||||
* ID: 306 - "fru print" command prints the FRU #0 twice
|
||||
* ID: 305 - HPM.1 deferred activation support fixup
|
||||
* ID: 317 - ipmi_fwum.c: fix typo
|
||||
* ID: 315 - buildsystem: configure.in is deprecated
|
||||
* ID: 316 - Directory debian is outdated
|
||||
* ID: 103 - 'lib/ipmi_ekanalyzer.c' needs a re-work
|
||||
* ID: 46 - SEL OEM record corner case
|
||||
|
||||
version 1.8.14 2014-05-05
|
||||
* ID: 299 - openipmi plugin writes zero to wrong byte
|
||||
* ID: 301 - Add OS/Hypervisor installation status events
|
||||
* ID: 298 - fix LANplus retry
|
||||
* ID: 295 - inform user if SOL session disconnected
|
||||
* ID: 297 - don't print-out SEL entry if ID not present
|
||||
* ID: 296 - Fix PSD size decoding
|
||||
* ID: 293 - Use of uninitialized variable in ipmi_main()
|
||||
* ID: 278 - Error in sol looptest
|
||||
* ID: 290 - ipmi_sol.c needs a clean-up
|
||||
* ID: 85 - Supermicro memory ECC error display
|
||||
* ID: 290 - ipmi_sol.c needs a clean-up
|
||||
* ID: 286 - Open session retries hit assert in ipmi_lanplus_send_payload
|
||||
* ID: 285 - Fix SEGV in ipmi_lanplus_open_session
|
||||
* ID: 284 - Fix SEGV in ipmi_main
|
||||
* ID: 283 - ipmi_intf_socket_connect fails with IPv4 hosts
|
||||
* ID: 46 - ipmi_fwum needs some re-work
|
||||
* ID: 50 - ipmi_hpmfwupg needs a clean up
|
||||
* ID: 279 - ipmitool sdr list broken
|
||||
* ID: 44 - dummy interface support - fake-ipmistack project
|
||||
* ID: 48 - Remove hard-coded FRU inventory access length restriction
|
||||
* ID: 276 - HPM.1 upgrade combined patch
|
||||
* ID: 90 - Add options to chassis bootparam set bootflag
|
||||
* ID: 292 -Properly handle plugin non-zero target adddress with -t
|
||||
* Numerous Fixes based on running Coverity
|
||||
* Use TIOCFLUSH if TCFLSH is missing to get the serial plugin building on
|
||||
Hurd.
|
||||
* Disable imb and open plugins by default on Hurd. The platform lack
|
||||
the required kernel support.
|
||||
* Change serial plugin to only try to disable the IUCLC serial line flag on
|
||||
platforms supporting it. Fixes build problem on Hurd and FreeBSD.
|
||||
* PA: 83 - Revised IPv6 patch
|
||||
* FR: 24 - Exchange OS Name Hostname BMC URL during startup
|
||||
* ID: 304 - Incorect byteswap in SOL maximum payload
|
||||
* ID: 303 - Fix build error in HPM.2 code
|
||||
* ID: 300 - new sunoem functionality
|
||||
* ID: 144 - Fix 'dcmi power set_limit action <value>'
|
||||
* ID: 302 - HPM.2 long message support
|
||||
* ID: 309 - Add new SEL entries for ipmi 2.0 rev 1.1
|
||||
* ID: 280 - man page cleanup
|
||||
* ID: 311 - man page update for new sunoem commands
|
||||
|
||||
version 1.8.13 2013-09-09
|
||||
* ID: 3611905 - Direct Serial Basic/Terminal Mode Interface drivers
|
||||
* ID: 3577766 - configure's knobs and switches don't work
|
||||
* ID: 3611253 - do not override OS-default values for interfaces
|
||||
@ -126,6 +479,7 @@ version 1.8.13rc0 2013-08-09
|
||||
* ID: 99 - 'lib/ipmi_sel.c' - possible int *flow
|
||||
* ID: 222 - 'lib/ipmi_sdr.c' - a typo 'Not Reading' -> 'No Reading'
|
||||
* ID: 35 - Script to setup redirection of SNMP to/from BMC
|
||||
* ID: 273 - Reduce SOL Input buffer size by SOL header size
|
||||
|
||||
|
||||
version 1.8.12 released 2012-08-09
|
370
INSTALL
Normal file
370
INSTALL
Normal file
@ -0,0 +1,370 @@
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
|
||||
Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell command `./configure && make && make install'
|
||||
should configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the `README' file for
|
||||
instructions specific to this package. Some packages provide this
|
||||
`INSTALL' file but do not implement all of the features documented
|
||||
below. The lack of an optional feature in a given package is not
|
||||
necessarily a bug. More recommendations for GNU packages can be found
|
||||
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||
you want to change it or regenerate `configure' using a newer version
|
||||
of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system.
|
||||
|
||||
Running `configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the `make install' phase executed with root
|
||||
privileges.
|
||||
|
||||
5. Optionally, type `make installcheck' to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior `make install' required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
6. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
7. Often, you can also type `make uninstall' to remove the installed
|
||||
files again. In practice, not all packages have tested that
|
||||
uninstallation works correctly, even though it is required by the
|
||||
GNU Coding Standards.
|
||||
|
||||
8. Some packages, particularly those that use Automake, provide `make
|
||||
distcheck', which can by used by developers to test that all other
|
||||
targets like `make install' and `make uninstall' work correctly.
|
||||
This target is generally not run by end users.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'. This
|
||||
is known as a "VPATH" build.
|
||||
|
||||
With a non-GNU `make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use `make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple `-arch' options to the
|
||||
compiler but only a single `-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the `lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX', where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them. In general, the
|
||||
default for these options is expressed in terms of `${prefix}', so that
|
||||
specifying just `--prefix' will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to `configure'; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
`make install' command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, `make install
|
||||
prefix=/alternate/directory' will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
`${prefix}'. Any directories that were specified during `configure',
|
||||
but not in terms of `${prefix}', must each be overridden at install
|
||||
time for the entire installation to be relocated. The approach of
|
||||
makefile variable overrides for each directory variable is required by
|
||||
the GNU Coding Standards, and ideally causes no recompilation.
|
||||
However, some platforms have known limitations with the semantics of
|
||||
shared libraries that end up requiring recompilation when using this
|
||||
method, particularly noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the `DESTDIR' variable. For
|
||||
example, `make install DESTDIR=/alternate/directory' will prepend
|
||||
`/alternate/directory' before all installation names. The approach of
|
||||
`DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of `${prefix}'
|
||||
at `configure' time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of `make' will be. For these packages, running `./configure
|
||||
--enable-silent-rules' sets the default to minimal output, which can be
|
||||
overridden with `make V=1'; while running `./configure
|
||||
--disable-silent-rules' sets the default to verbose, which can be
|
||||
overridden with `make V=0'.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
|
||||
CC is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
HP-UX `make' updates targets which have the same time stamps as
|
||||
their prerequisites, which makes it generally unusable when shipped
|
||||
generated files such as `configure' are involved. Use GNU `make'
|
||||
instead.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
|
||||
a workaround. If GNU CC is not installed, it is therefore recommended
|
||||
to try
|
||||
|
||||
./configure CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./configure CC="cc -nodtk"
|
||||
|
||||
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
|
||||
directory contains several dysfunctional programs; working variants of
|
||||
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
|
||||
in your `PATH', put it _after_ `/usr/bin'.
|
||||
|
||||
On Haiku, software installed for all users goes in `/boot/common',
|
||||
not `/usr/local'. It is recommended to use the following options:
|
||||
|
||||
./configure --prefix=/boot/common
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS
|
||||
KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||
an Autoconf limitation. Until the limitation is lifted, you can use
|
||||
this workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of all of the options to `configure', and exit.
|
||||
|
||||
`--help=short'
|
||||
`--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
`configure', and exit. The `short' variant lists options used
|
||||
only in the top level, while the `recursive' variant lists options
|
||||
also present in any nested packages.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--prefix=DIR'
|
||||
Use DIR as the installation prefix. *note Installation Names::
|
||||
for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
`--no-create'
|
||||
`-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
@ -31,9 +31,7 @@
|
||||
DOCDIR = $(datadir)/doc/$(PACKAGE)
|
||||
DOCLIST = $(top_srcdir)/README $(top_srcdir)/COPYING $(top_srcdir)/AUTHORS $(top_srcdir)/ChangeLog
|
||||
|
||||
EXTRA_DIST = $(DOCLIST) \
|
||||
debian/changelog debian/control debian/copyright \
|
||||
debian/dirs debian/docs debian/rules
|
||||
EXTRA_DIST = $(DOCLIST) bootstrap
|
||||
|
||||
AUTOMAKE_OPTIONS = dist-bzip2
|
||||
|
@ -24,7 +24,7 @@ Background
|
||||
==========
|
||||
I originally wrote ipmitool while between projects and employeed at Sun
|
||||
Microsystems. Sun had just embarked on a new line of general-purpose x86
|
||||
servers that inclued an OEM Intel board with an IPMIv1.5 BMC on board.
|
||||
servers that included an OEM Intel board with an IPMIv1.5 BMC on board.
|
||||
It started with an idea that remote chassis power control would be a handy
|
||||
feature for my systems in the lab and from there it grew into a multi-
|
||||
purpose tool that lots of people found useful. I decided to release it
|
||||
@ -42,8 +42,8 @@ Requirements
|
||||
============
|
||||
Obviously the largest requirement is hardware with a service processor
|
||||
that supports the IPMI specification. Many x86-based servers are now
|
||||
comming with IPMI support, check with your preferred hardware vendor
|
||||
about available prodcuts.
|
||||
coming with IPMI support, check with your preferred hardware vendor
|
||||
about available products.
|
||||
|
||||
Once you are certain you have the required hardware, you then need to
|
||||
decide how you want to access the BMC. The most common case involve
|
||||
@ -126,7 +126,7 @@ hardware will come with a utility (often a DOS bootable CD) for configuring
|
||||
enabling the LAN interface as well.
|
||||
|
||||
In order to support the IPMIv2.0 interface you must have an OpenSSL library
|
||||
with the required encrytion functions. Recent distributions should have
|
||||
with the required encryption functions. Recent distributions should have
|
||||
no problems. The IPMIv1.5 interface will attempt to use OpenSSL for MD5
|
||||
hash function at compile time but if that is not found it will use an
|
||||
internal library.
|
||||
@ -396,17 +396,16 @@ ipmievd: Memory Sensor 01 - Correctable ECC
|
||||
Resources
|
||||
=========
|
||||
IPMItool homepage
|
||||
http://ipmitool.sourceforge.net
|
||||
http://github.com/ipmitool/ipmitool
|
||||
|
||||
IPMItool manpage
|
||||
http://ipmitool.sourceforge.net/manpage.html
|
||||
|
||||
IPMItool overview paper from Linux.conf.au 2004
|
||||
http://ipmitool.sourceforge.net/lca2004_ipmitool.pdf
|
||||
https://github.com/ipmitool/ipmitool/blob/master/doc/ipmitool.1
|
||||
|
||||
Intelligent Platform Management Interface specification
|
||||
http://www.intel.com/design/servers/ipmi/spec.htm
|
||||
https://www.intel.com/content/www/us/en/servers/ipmi/ipmi-home.html
|
||||
|
||||
OpenIPMI project: Linux IPMI kernel driver and userland library
|
||||
http://openipmi.sourceforge.net
|
||||
|
||||
IPMItool commit archive
|
||||
https://lists.sourceforge.net/lists/listinfo/ipmitool-cvs
|
@ -31,7 +31,15 @@
|
||||
# EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
aclocal
|
||||
libtoolize --automake --copy
|
||||
|
||||
case `uname` in
|
||||
Darwin*)
|
||||
glibtoolize --automake --copy
|
||||
;;
|
||||
*)
|
||||
libtoolize --automake --copy
|
||||
;;
|
||||
esac
|
||||
|
||||
autoheader
|
||||
automake --foreign --add-missing --copy
|
@ -1,11 +1,12 @@
|
||||
dnl
|
||||
dnl autoconf for ipmitool
|
||||
dnl
|
||||
AC_INIT([src/ipmitool.c])
|
||||
AC_CANONICAL_SYSTEM
|
||||
AM_INIT_AUTOMAKE([ipmitool], [1.8.13rc0-cvs])
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
m4_define([git_suffix], m4_esyscmd_s(./csv-revision))
|
||||
AC_INIT([ipmitool], [1.8.18git_suffix])
|
||||
AC_CONFIG_SRCDIR([src/ipmitool.c])
|
||||
AC_CANONICAL_SYSTEM
|
||||
AM_INIT_AUTOMAKE([foreign])
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AC_PREREQ(2.50)
|
||||
AC_SUBST(ac_configure_args)
|
||||
|
||||
@ -26,19 +27,20 @@ AC_C_CONST
|
||||
AC_C_INLINE
|
||||
AC_C_BIGENDIAN
|
||||
|
||||
AC_FUNC_MALLOC
|
||||
AC_FUNC_SELECT_ARGTYPES
|
||||
AC_FUNC_STRTOD
|
||||
AC_CHECK_FUNCS([alarm gethostbyname socket select])
|
||||
AC_CHECK_FUNCS([alarm gethostbyname getaddrinfo getifaddrs socket select])
|
||||
AC_CHECK_FUNCS([memmove memset strchr strdup strerror])
|
||||
AC_CHECK_FUNCS([getpassphrase])
|
||||
|
||||
CFLAGS="$CFLAGS -fno-strict-aliasing -Wreturn-type"
|
||||
CFLAGS="$CFLAGS -Wall -Wextra -std=gnu11 -pedantic -Wformat -Wformat-nonliteral"
|
||||
|
||||
AM_PROG_LIBTOOL
|
||||
LIBTOOL="$LIBTOOL --silent"
|
||||
|
||||
AC_SEARCH_LIBS([gethostbyname], [nsl])
|
||||
AC_SEARCH_LIBS([getaddrinfo], [nsl])
|
||||
AC_SEARCH_LIBS([getifaddrs], [nsl])
|
||||
AC_SEARCH_LIBS([socket], [socket], [],
|
||||
[AC_CHECK_LIB([nsl], [socket],
|
||||
[LIBS="$LIBS -lsocket -lnsl"], [], [-lsocket])])
|
||||
@ -55,12 +57,14 @@ dnl
|
||||
dnl set default option values
|
||||
dnl
|
||||
|
||||
xenable_intf_bmc=no
|
||||
xenable_intf_imb=yes
|
||||
xenable_intf_open=yes
|
||||
xenable_intf_lipmi=yes
|
||||
#xenable_intf_serial=yes
|
||||
xenable_all_options=yes
|
||||
xenable_intf_bmc=no
|
||||
xenable_intf_dummy=no
|
||||
xenable_intf_imb=yes
|
||||
xenable_intf_lipmi=yes
|
||||
xenable_intf_open=yes
|
||||
#xenable_intf_serial=yes
|
||||
xenable_intf_usb=no
|
||||
xenable_ipmishell=yes
|
||||
|
||||
dnl set some things so we build with GNU tools on Solaris
|
||||
@ -85,27 +89,30 @@ solaris*)
|
||||
xenable_intf_imb=no
|
||||
xenable_intf_open=no
|
||||
xenable_intf_lipmi=no
|
||||
xenable_intf_bmc=no
|
||||
;;
|
||||
*darwin*|aix*)
|
||||
# disable the linux and solaris-specific interfaces
|
||||
xenable_intf_imb=no
|
||||
xenable_intf_open=no
|
||||
xenable_intf_lipmi=no
|
||||
xenable_intf_bmc=no
|
||||
xenable_ipmishell=no
|
||||
;;
|
||||
*freebsd*)
|
||||
xenable_intf_imb=no
|
||||
xenable_intf_lipmi=no
|
||||
xenable_intf_bmc=no
|
||||
CFLAGS="$CFLAGS -D__BSD_VISIBLE"
|
||||
;;
|
||||
*netbsd*)
|
||||
xenable_intf_imb=no
|
||||
xenable_intf_lipmi=no
|
||||
xenable_intf_bmc=no
|
||||
xenable_intf_open=no
|
||||
;;
|
||||
gnu*)
|
||||
# disable the linux and solaris-specific interfaces on Hurd
|
||||
xenable_intf_imb=no
|
||||
xenable_intf_open=no
|
||||
xenable_intf_usb=yes
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST(ARCH, $host_cpu)
|
||||
@ -123,6 +130,24 @@ if test "x$xenable_all_options" = "xyes" || test "x$xenable_solaris_opt" = "xyes
|
||||
AC_DEFINE(ENABLE_ALL_OPTIONS, [1], [Define to 1 to enable all command line options.])
|
||||
fi
|
||||
|
||||
dnl Determine anonymous union/structure support in GCC
|
||||
AC_TRY_COMPILE([
|
||||
#include <stdio.h>
|
||||
], [
|
||||
struct test {
|
||||
union {
|
||||
int a;
|
||||
unsigned int b;
|
||||
};
|
||||
} test;
|
||||
|
||||
printf("a is %d", test.a);
|
||||
], ac_need_fms_extension=no, ac_need_fms_extension=yes)
|
||||
if test "x$ac_need_fms_extension" = "xyes"; then
|
||||
CFLAGS="$CFLAGS -fms-extensions"
|
||||
AC_SUBST(CFLAGS)
|
||||
fi
|
||||
|
||||
dnl check for OpenSSL functionality
|
||||
AC_ARG_ENABLE([internal-md5],
|
||||
[AC_HELP_STRING([--enable-internal-md5],
|
||||
@ -136,6 +161,16 @@ AC_CHECK_LIB([crypto], [EVP_aes_128_cbc],
|
||||
fi],
|
||||
[have_crypto=no], [-lcrypto])
|
||||
|
||||
AC_CHECK_LIB([crypto], [EVP_sha256],
|
||||
[if test "x$xenable_internal_sha256" != "xyes"; then
|
||||
if test "x$have_crypto" != "xyes"; then
|
||||
LIBS="$LIBS -lcrypto"
|
||||
have_sha256=yes
|
||||
fi
|
||||
AC_DEFINE(HAVE_CRYPTO_SHA256, [1], [Define to 1 if libcrypto supports SHA256.])
|
||||
fi],
|
||||
[], [-lcrypto])
|
||||
|
||||
AC_CHECK_LIB([crypto], [MD5_Init],
|
||||
[if test "x$xenable_internal_md5" != "xyes"; then
|
||||
if test "x$have_crypto" != "xyes"; then
|
||||
@ -172,6 +207,22 @@ if test "x$xenable_intf_lan" = "xyes"; then
|
||||
IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB lan/libintf_lan.la"
|
||||
fi
|
||||
|
||||
dnl enable IPMI USB interface
|
||||
AC_ARG_ENABLE([intf-usb],
|
||||
[AC_HELP_STRING([--enable-intf-usb],
|
||||
[enable IPMI USB interface [default=auto]])],
|
||||
[xenable_intf_usb=$enableval],
|
||||
[xenable_intf_usb=$xenable_intf_usb])
|
||||
if test "x$xenable_intf_usb" = "xstatic" || test "x$xenable_intf_usb" = "xplugin"; then
|
||||
xenable_intf_usb=yes
|
||||
fi
|
||||
if test "x$xenable_intf_usb" = "xyes"; then
|
||||
AC_DEFINE(IPMI_INTF_USB, [1], [Define to 1 to enable USB interface.])
|
||||
AC_SUBST(INTF_USB, [usb])
|
||||
AC_SUBST(INTF_USB_LIB, [libintf_usb.la])
|
||||
IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB usb/libintf_usb.la"
|
||||
fi
|
||||
|
||||
dnl enable IPMIv2.0 RMCP+ LAN interface
|
||||
AC_ARG_ENABLE([intf-lanplus],
|
||||
[AC_HELP_STRING([--enable-intf-lanplus],
|
||||
@ -503,6 +554,18 @@ if test "x$xenable_intf_bmc" = "xyes"; then
|
||||
IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB bmc/libintf_bmc.la"
|
||||
fi
|
||||
|
||||
dnl enable Dummy interface for testing
|
||||
AC_ARG_ENABLE([intf-dummy],
|
||||
[AC_HELP_STRING([--enable-intf-dummy],
|
||||
[enable Dummy(test) interface [default=no]])],
|
||||
[xenable_intf_dummy=$enableval], [xenable_intf_dummy=no])
|
||||
if test "x$xenable_intf_dummy" = "xyes"; then
|
||||
AC_DEFINE(IPMI_INTF_DUMMY, [1], [Define to 1 to enable Dummy interface.])
|
||||
AC_SUBST(INTF_DUMMY, [dummy])
|
||||
AC_SUBST(INTF_DUMMY_LIB, [libintf_dummy.la])
|
||||
IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB dummy/libintf_dummy.la"
|
||||
fi
|
||||
|
||||
AC_SUBST(IPMITOOL_INTF_LIB)
|
||||
|
||||
if test "x$xenable_ipmishell" = "xyes"; then
|
||||
@ -601,8 +664,10 @@ AC_CONFIG_FILES([Makefile
|
||||
src/plugins/free/Makefile
|
||||
src/plugins/imb/Makefile
|
||||
src/plugins/bmc/Makefile
|
||||
src/plugins/usb/Makefile
|
||||
src/plugins/lipmi/Makefile
|
||||
src/plugins/serial/Makefile])
|
||||
src/plugins/serial/Makefile
|
||||
src/plugins/dummy/Makefile])
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
@ -616,8 +681,10 @@ AC_MSG_RESULT([ open : $xenable_intf_open])
|
||||
AC_MSG_RESULT([ free : $xenable_intf_free])
|
||||
AC_MSG_RESULT([ imb : $xenable_intf_imb])
|
||||
AC_MSG_RESULT([ bmc : $xenable_intf_bmc])
|
||||
AC_MSG_RESULT([ usb : $xenable_intf_usb])
|
||||
AC_MSG_RESULT([ lipmi : $xenable_intf_lipmi])
|
||||
AC_MSG_RESULT([ serial : $xenable_intf_serial])
|
||||
AC_MSG_RESULT([ dummy : $xenable_intf_dummy])
|
||||
AC_MSG_RESULT([])
|
||||
AC_MSG_RESULT([Extra tools])
|
||||
AC_MSG_RESULT([ ipmievd : yes])
|
@ -34,6 +34,8 @@ dist_pkgdata_DATA = oem_ibm_sel_map
|
||||
|
||||
EXTRA_DIST = README \
|
||||
bmclanconf ipmi.init.basic ipmi.init.redhat \
|
||||
exchange-bmc-os-info.init.redhat exchange-bmc-os-info.service.redhat \
|
||||
exchange-bmc-os-info.sysconf log_bmc.sh\
|
||||
ipmievd.init.redhat ipmievd.init.suse ipmievd.init.debian \
|
||||
collect_data.sh create_rrds.sh create_webpage_compact.sh create_webpage.sh \
|
||||
bmc-snmp-proxy bmc-snmp-proxy.service bmc-snmp-proxy.sysconf
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
# bmc-snmp-proxy: Set SNMP proxy to BMC (Baseboard Management Controller)
|
||||
#
|
||||
# version: 0.6
|
||||
# version: 0.62
|
||||
#
|
||||
# Authors: Charles Rose <charles_rose@dell.com>
|
||||
# Jordan Hargrave <jordan_hargrave@dell.com>
|
||||
@ -20,9 +20,9 @@
|
||||
SYSCONF_DIR="/etc/sysconfig"
|
||||
CONFIG="${SYSCONF_DIR}/bmc-snmp-proxy"
|
||||
|
||||
SNMPD_LOCAL_CONF_DIR="/etc/snmp/bmc"
|
||||
SNMPD_LOCAL_CONF="${SNMPD_LOCAL_CONF_DIR}/snmpd.local.conf"
|
||||
TRAPD_LOCAL_CONF="${SNMPD_LOCAL_CONF_DIR}/snmptrapd.local.conf"
|
||||
SNMPD_BMC_CONF_DIR="/etc/snmp/bmc"
|
||||
SNMPD_BMC_CONF="${SNMPD_BMC_CONF_DIR}/snmpd.local.conf"
|
||||
TRAPD_BMC_CONF="${SNMPD_BMC_CONF_DIR}/snmptrapd.local.conf"
|
||||
|
||||
TRAPD_CONF="/etc/snmp/snmptrapd.conf"
|
||||
|
||||
@ -57,14 +57,16 @@ bmc_info_exists()
|
||||
else
|
||||
RETVAL=2
|
||||
fi
|
||||
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
check_snmp()
|
||||
{
|
||||
if [ ! -d /etc/snmp ] && [ ! -x /usr/sbin/snmpd ]; then
|
||||
if [ ! -d /etc/snmp ] || [ ! -x /usr/sbin/snmpd ]; then
|
||||
RETVAL=12
|
||||
fi
|
||||
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
@ -77,11 +79,12 @@ write_snmp_conf()
|
||||
printf "###############################################\n"
|
||||
printf "# Automatically created by %s #\n" "${SCRIPT_NAME}"
|
||||
printf "###############################################\n"
|
||||
printf "view bmcview included %s 80\n" "${BMC_OID}"
|
||||
printf "com2sec -Cn bmc_ctx bmc_sec default bmc_cmty\n"
|
||||
printf "group bmc_grp v1 bmc_sec\n"
|
||||
printf "access bmc_grp bmc_ctx any noauth exact bmcview none none\n"
|
||||
printf "proxy -Cn bmc_ctx -v 1 %s\n" "${PROXY_TOKEN}"
|
||||
printf "#view bmcview included %s 80\n" "${BMC_OID}"
|
||||
printf "#com2sec -Cn bmc_ctx bmc_sec default bmc_cmty\n"
|
||||
printf "#group bmc_grp v1 bmc_sec\n"
|
||||
printf "#access bmc_grp bmc_ctx any noauth exact bmcview none none\n"
|
||||
printf "#proxy -Cn bmc_ctx -v 1 %s\n" "${PROXY_TOKEN}"
|
||||
printf "proxy -v 1 %s\n" "${PROXY_TOKEN}"
|
||||
printf "###############################################\n"
|
||||
}
|
||||
|
||||
@ -92,6 +95,7 @@ valid_ip()
|
||||
|
||||
printf -- "%s" "${1}"| grep -Eq \
|
||||
"^${octet}\\.${octet}\\.${octet}\\.${octet}$"
|
||||
|
||||
return $?
|
||||
}
|
||||
|
||||
@ -112,37 +116,38 @@ set_snmp_proxy()
|
||||
if check_vars; then
|
||||
PROXY_TOKEN="-c ${BMC_COMMUNITY} ${BMC_IPv4} ${BMC_OID}"
|
||||
|
||||
if [ ! -d ${SNMPD_LOCAL_CONF_DIR} ] && \
|
||||
mkdir ${SNMPD_LOCAL_CONF_DIR}; then
|
||||
write_snmp_conf > ${SNMPD_LOCAL_CONF}
|
||||
[ $? -ne 0 ] && RETVAL=4
|
||||
if [ -d ${SNMPD_BMC_CONF_DIR} ]; then
|
||||
write_snmp_conf > ${SNMPD_BMC_CONF} || RETVAL=4
|
||||
fi
|
||||
else
|
||||
RETVAL=3
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
set_snmpd_conf_path()
|
||||
{
|
||||
for SYSCONF in ${SYSCONF_DIR}/snmp*d;
|
||||
if [ ! -d ${SNMPD_BMC_CONF_DIR} ]; then
|
||||
mkdir ${SNMPD_BMC_CONF_DIR} || RETVAL=7
|
||||
fi
|
||||
|
||||
# We need SNMPCONFPATH set for both snmpd and snmptrapd
|
||||
for sysconf in ${SYSCONF_DIR}/snmp*d;
|
||||
do
|
||||
if grep -q "${SNMPD_LOCAL_CONF_DIR}" "${SYSCONF}" > \
|
||||
/dev/null 2>&1; then
|
||||
continue
|
||||
else
|
||||
printf "SNMPCONFPATH=%s\n" "${SNMPD_LOCAL_CONF_DIR}" \
|
||||
>> ${SYSCONF} || RETVAL=7
|
||||
if ! grep -q "^SNMPCONFPATH.*${SNMPD_BMC_CONF_DIR}" \
|
||||
"${sysconf}" > /dev/null 2>&1; then
|
||||
printf "SNMPCONFPATH=/etc/snmp:%s\n" \
|
||||
"${SNMPD_BMC_CONF_DIR}" >> ${sysconf} || \
|
||||
RETVAL=7
|
||||
fi
|
||||
done
|
||||
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
disable_snmp_proxy()
|
||||
{
|
||||
if [ -f ${SNMPD_LOCAL_CONF} ]; then
|
||||
rm -f ${SNMPD_LOCAL_CONF}
|
||||
[ $? -ne 0 ] && RETVAL=5
|
||||
if [ -f ${SNMPD_BMC_CONF} ]; then
|
||||
rm -f ${SNMPD_BMC_CONF} || RETVAL=5
|
||||
fi
|
||||
}
|
||||
#############################################################################
|
||||
@ -152,6 +157,7 @@ disable_snmp_proxy()
|
||||
pick_alert_dest()
|
||||
{
|
||||
test_ip="$1"
|
||||
# We have 4 IPv4 and 4 IPv6 alert dest. We will set IPv4 for now.
|
||||
for ALERT_DEST in `seq 1 4`
|
||||
do
|
||||
temp_ip=$(${IPMITOOL} lan alert print ${CHANNEL} ${ALERT_DEST}\
|
||||
@ -165,27 +171,27 @@ pick_alert_dest()
|
||||
set_alert_dest_ip()
|
||||
{
|
||||
${IPMITOOL} lan alert set ${CHANNEL} ${ALERT_DEST} ipaddr ${1} \
|
||||
retry 4 type pet >/dev/null 2>&1
|
||||
[ $? -ne 0 ] && RETVAL=8
|
||||
retry 4 type pet >/dev/null 2>&1 || RETVAL=8
|
||||
}
|
||||
|
||||
bmc_alert_dest()
|
||||
config_bmc_alert_dest()
|
||||
{
|
||||
# call with enable|disable
|
||||
# Pick the first active LAN channel
|
||||
for CHANNEL in `seq 1 14`
|
||||
do
|
||||
[ $(${IPMI_TOOL} -I open channel info ${CHANNEL} 2>/dev/null \
|
||||
[ $(${IPMITOOL} -I open channel info ${CHANNEL} 2>/dev/null \
|
||||
| grep -q "802\.3") ] || break
|
||||
done
|
||||
|
||||
# If TRAPD_IP is already set as an alert dest,
|
||||
if pick_alert_dest "${TRAPD_IP}"; then
|
||||
# reset: reset it if we are called with reset
|
||||
[ "${1}" = "reset" ] && \
|
||||
# disable: reset it if we are called with disable
|
||||
[ "${1}" = "disable" ] && \
|
||||
set_alert_dest_ip "0.0.0.0"
|
||||
# else, find the next free alert dest,
|
||||
elif pick_alert_dest "0.0.0.0"; then
|
||||
[ "${1}" = "reset" ] && \
|
||||
[ "${1}" = "disable" ] && \
|
||||
return $RETVAL
|
||||
# set: the TRAPD_IP
|
||||
set_alert_dest_ip "${TRAPD_IP}"
|
||||
@ -193,42 +199,54 @@ bmc_alert_dest()
|
||||
# No free alert destinations
|
||||
RETVAL=9
|
||||
fi
|
||||
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
set_ipmi_alert()
|
||||
set_ipmi_pef()
|
||||
{
|
||||
${IPMITOOL} lan set ${CHANNEL} alert "${1}" >/dev/null 2>&1
|
||||
[ $? -ne 0 ] && RETVAL=10
|
||||
# Needs ipmitool-1.8.13 + patches
|
||||
${IPMITOOL} pef policy set ${ALERT_DEST} "${1}" >/dev/null 2>&1 || \
|
||||
RETVAL=10
|
||||
}
|
||||
|
||||
get_host_ip()
|
||||
{
|
||||
# Get host's IP that the BMC can reach.
|
||||
# Get host's IP that the BMC can reach. This is at best a hack.
|
||||
IFACE=$(/usr/sbin/ip -o -f inet address |awk '!/: lo/ {print $2}')
|
||||
|
||||
for dev in ${IFACE}
|
||||
do
|
||||
ping -c 1 -I ${dev} ${BMC_IPv4} > /dev/null 2>&1
|
||||
temp_ping=$(ping -c 1 -I ${dev} ${BMC_IPv4})
|
||||
[ $? -ne 0 ] && continue
|
||||
|
||||
printf -- "%s" "$temp_ping"| awk 'NR==1{print $5}' && break
|
||||
done
|
||||
}
|
||||
|
||||
config_bmc_alert()
|
||||
{
|
||||
# Do two things
|
||||
# Set/Reset TRAP IP in BMC
|
||||
# Enable/Disable PEF alerting in BMC for TRAP
|
||||
|
||||
# Get Host's IP that the BMC can send traps to
|
||||
TRAPD_IP=$(get_host_ip)
|
||||
|
||||
# Set Host's IP as the alert destination in the BMC
|
||||
valid_ip ${TRAPD_IP} && bmc_alert_dest "${ACTION}"
|
||||
valid_ip ${TRAPD_IP} && config_bmc_alert_dest "${ACTION}"
|
||||
|
||||
# Enable alerting on the LAN channel
|
||||
[ $RETVAL -eq 0 ] && set_ipmi_alert "${ACTION}"
|
||||
# Enable/Disable alerting on the LAN channel
|
||||
[ $RETVAL -eq 0 ] && set_ipmi_pef "${ACTION}"
|
||||
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
write_trapd_conf()
|
||||
{
|
||||
printf "###############################################\n"
|
||||
printf "# Automatically created by %s #\n" "${SCRIPT_NAME}"
|
||||
printf "forward %s %s\n" "${BMC_OID}*" "${FORWARD_HOST}"
|
||||
printf "forward default %s\n" "${FORWARD_HOST}"
|
||||
printf "###############################################\n"
|
||||
}
|
||||
|
||||
@ -236,10 +254,9 @@ config_trapd()
|
||||
{
|
||||
# Proceed only if snmptrapd is available on the system
|
||||
if [ -f ${TRAPD_CONF} ]; then
|
||||
write_trapd_conf > ${TRAPD_LOCAL_CONF}
|
||||
[ $? -ne 0 ] && RETVAL=11
|
||||
write_trapd_conf > ${TRAPD_BMC_CONF} || RETVAL=11
|
||||
else
|
||||
return 1
|
||||
RETVAL=11
|
||||
fi
|
||||
}
|
||||
|
||||
@ -249,6 +266,7 @@ trap_sink_exists()
|
||||
# multiple
|
||||
FORWARD_HOST=$(awk '/^trap.*sink/{print $2}; /^informsink/{print $2}' \
|
||||
/etc/snmp/snmpd*conf | head -1)
|
||||
|
||||
if [ -z "${FORWARD_HOST}" ]; then
|
||||
# there is no trapsink setup.
|
||||
return 1
|
||||
@ -261,19 +279,20 @@ trap_sink_exists()
|
||||
trap_forward()
|
||||
{
|
||||
NO_TRAP=0
|
||||
ACTION=${1} # set or reset
|
||||
ACTION=${1} # enable or disable
|
||||
|
||||
if [ "${ACTION}" = "set" ]; then
|
||||
if [ "${ACTION}" = "enable" ]; then
|
||||
# Get trapd config,
|
||||
if trap_sink_exists; then
|
||||
config_trapd && config_bmc_alert
|
||||
config_bmc_alert && config_trapd
|
||||
else
|
||||
# exit silently if there is no sink
|
||||
NO_TRAP=1
|
||||
fi
|
||||
else
|
||||
if [ -f ${TRAPD_LOCAL_CONF} ]; then
|
||||
rm -f ${TRAPD_LOCAL_CONF} >/dev/null 2>&1
|
||||
if [ -f ${TRAPD_BMC_CONF} ]; then
|
||||
rm -f ${TRAPD_BMC_CONF} >/dev/null 2>&1
|
||||
config_bmc_alert
|
||||
else
|
||||
NO_TRAP=1
|
||||
fi
|
||||
@ -288,7 +307,6 @@ service_reload()
|
||||
service $1 reload
|
||||
[ $? -ne 0 ] && RETVAL=6
|
||||
fi
|
||||
return
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
@ -296,11 +314,12 @@ start()
|
||||
{
|
||||
if bmc_info_exists && check_snmp; then
|
||||
touch ${LOCKFILE}
|
||||
|
||||
set_snmpd_conf_path && set_snmp_proxy
|
||||
[ $RETVAL -eq 0 ] && service_reload snmpd
|
||||
|
||||
if [ "${TRAP_FORWARD}" = "yes" ]; then
|
||||
trap_forward "set"
|
||||
trap_forward "enable"
|
||||
[ $RETVAL -eq 0 ] && [ $NO_TRAP -eq 0 ] && \
|
||||
service_reload snmptrapd
|
||||
fi
|
||||
@ -316,10 +335,11 @@ stop()
|
||||
[ $RETVAL -eq 0 ] && service_reload snmpd
|
||||
|
||||
if [ "${TRAP_FORWARD}" = "yes" ]; then
|
||||
trap_forward "reset"
|
||||
trap_forward "disable"
|
||||
[ $RETVAL -eq 0 ] && [ $NO_TRAP -eq 0 ] && \
|
||||
service_reload snmptrapd
|
||||
fi
|
||||
|
||||
rm -f ${LOCKFILE}
|
||||
fi
|
||||
}
|
||||
@ -329,12 +349,13 @@ status()
|
||||
{
|
||||
eval_gettext "${SCRIPT_NAME}: snmp proxy to BMC is "
|
||||
# Checking for lockfile is better.
|
||||
#if grep -q "^proxy" "${SNMPD_LOCAL_CONF}" > /dev/null 2>&1 ; then
|
||||
#if grep -q "^proxy" "${SNMPD_BMC_CONF}" > /dev/null 2>&1 ; then
|
||||
if [ -f ${LOCKFILE} ]; then
|
||||
eval_gettext "set"
|
||||
else
|
||||
eval_gettext "not set"
|
||||
fi
|
||||
|
||||
echo
|
||||
RETVAL=0
|
||||
}
|
||||
@ -360,10 +381,10 @@ case "$RETVAL" in
|
||||
0|1) ;;
|
||||
2) eval_gettext "${SCRIPT_NAME}: failed to read ${BMC_INFO} " 1>&2 ;;
|
||||
3) eval_gettext "${SCRIPT_NAME}: failed to get proxy config." 1>&2 ;;
|
||||
4) eval_gettext "${SCRIPT_NAME}: failed to set ${SNMPD_LOCAL_CONF}." 1>&2 ;;
|
||||
4) eval_gettext "${SCRIPT_NAME}: failed to set ${SNMPD_BMC_CONF}." 1>&2 ;;
|
||||
5) eval_gettext "${SCRIPT_NAME}: failed to disable snmp proxy." 1>&2 ;;
|
||||
6) eval_gettext "${SCRIPT_NAME}: failed to reload snmpd." 1>&2 ;;
|
||||
7) eval_gettext "${SCRIPT_NAME}: failed to update ${SYSCONF}." 1>&2 ;;
|
||||
7) eval_gettext "${SCRIPT_NAME}: failed to set snmpd config." 1>&2 ;;
|
||||
8) eval_gettext "${SCRIPT_NAME}: failed to set IPMI alert dest." 1>&2 ;;
|
||||
9) eval_gettext "${SCRIPT_NAME}: no free IPMI alert dest." 1>&2 ;;
|
||||
10) eval_gettext "${SCRIPT_NAME}: failed to set IPMI PEF." 1>&2 ;;
|
||||
@ -375,6 +396,7 @@ esac
|
||||
if [ ${RETVAL} -gt 1 ]; then
|
||||
eval_gettext " Return code: ${RETVAL}"; echo
|
||||
fi
|
||||
|
||||
exit ${RETVAL}
|
||||
#############################################################################
|
||||
# end of file
|
326
contrib/exchange-bmc-os-info.init.redhat
Normal file
326
contrib/exchange-bmc-os-info.init.redhat
Normal file
@ -0,0 +1,326 @@
|
||||
#!/bin/sh
|
||||
#############################################################################
|
||||
#
|
||||
# exchange-bmc-os-info: Set OS and BMC (Baseboard Management Controller)
|
||||
# parameters during system startup.
|
||||
#
|
||||
# version: 0.72
|
||||
#
|
||||
# Authors: Charles Rose <charles_rose@dell.com>
|
||||
# Jordan Hargrave <jordan_hargrave@dell.com>
|
||||
#
|
||||
# Description: Script to set OS information in the BMC; fetch BMC IP/URL
|
||||
# and set in the OS for use by other scripts/user.
|
||||
#
|
||||
# BMC IP and URL are made available in /var/run/bmc-info
|
||||
#
|
||||
# Example to launch BMC web-interface:
|
||||
# # . /var/run/bmc-info
|
||||
# # xdg-open $BMC_URL
|
||||
#
|
||||
# See here for details:
|
||||
# https://fedoraproject.org/wiki/Features/AgentFreeManagement
|
||||
#
|
||||
# OEM Specific: OEM specific ipmi commands go in:
|
||||
# 'oem_set_os_version' and 'oem_get_bmc_url'
|
||||
#############################################################################
|
||||
#
|
||||
# chkconfig: 345 99 00
|
||||
# description: Set OS name, hostname in BMC; make BMC IP/URL available in OS
|
||||
# processname: exchange-bmc-os-info
|
||||
# config: /etc/sysconfig/exchange-bmc-os-info
|
||||
#
|
||||
### BEGIN INIT INFO
|
||||
# Provides: exchange-bmc-os-info
|
||||
# Required-Start: ipmi
|
||||
# Default-Start: 3 4 5
|
||||
# Default-Stop: 0 1 2 6
|
||||
|
||||
|
||||
#############################################################################
|
||||
# GLOBALS
|
||||
#############################################################################
|
||||
CONFIGFILE=/etc/sysconfig/exchange-bmc-os-info
|
||||
IPMI_TOOL=/usr/bin/ipmitool
|
||||
BMC_INFO=/var/run/bmc-info
|
||||
|
||||
# BMC Manufacturer ID used in 'oem_set_os_version' and 'oem_get_bmc_url'
|
||||
DELL="674"
|
||||
#OTHER_OEM="123"
|
||||
|
||||
# Defaults for ${CONFIGFILE}
|
||||
SET_OS_INFO="yes"
|
||||
RESET_OS_INFO="no"
|
||||
SET_BMC_INFO="yes"
|
||||
|
||||
# getsysinfo and setsysinfo commands
|
||||
IPMI_SET_SYSINFO="${IPMI_TOOL} mc setsysinfo"
|
||||
IPMI_GET_SYSINFO="${IPMI_TOOL} mc getsysinfo"
|
||||
#############################################################################
|
||||
SCRIPT_NAME=$(basename $0)
|
||||
|
||||
# source config
|
||||
[ -r ${CONFIGFILE} ] && . ${CONFIGFILE}
|
||||
|
||||
RETVAL=0
|
||||
|
||||
if [ -f /bin/gettext.sh ]; then
|
||||
GETTEXT=1
|
||||
. /bin/gettext.sh
|
||||
OUTPUT="eval_gettext"
|
||||
else
|
||||
GETTEXT=0
|
||||
OUTPUT="echo"
|
||||
fi
|
||||
|
||||
#############################################################################
|
||||
# Get Vendor ID of BMC for use in 'oem_set_os_version' and 'oem_get_bmc_url'
|
||||
#
|
||||
get_bmc_vendor_id()
|
||||
{
|
||||
BMC_VENDOR=$(${IPMI_TOOL} mc info 2>/dev/null | \
|
||||
sed -n "s#^Manufacturer ID.*: ##p")
|
||||
[ -z "${BMC_VENDOR}" ] && RETVAL=4
|
||||
}
|
||||
|
||||
check_ipmitool()
|
||||
{
|
||||
if [ -x ${IPMI_TOOL} ]; then
|
||||
# v1.8.12 plus patches are required for set/getsysinfo support
|
||||
# http://sourceforge.net/mailarchive/message.php?msg_id=29647222
|
||||
[ ! ${IPMI_GET_SYSINFO} >/dev/null 2>&1 ] && \
|
||||
RETVAL=3
|
||||
else
|
||||
RETVAL=2
|
||||
fi
|
||||
}
|
||||
|
||||
bmc_exists()
|
||||
{
|
||||
check_ipmitool
|
||||
[ $RETVAL -eq 0 ] && get_bmc_vendor_id
|
||||
return $RETVAL
|
||||
}
|
||||
#############################################################################
|
||||
|
||||
get_os_info()
|
||||
{
|
||||
OS_HOSTNAME=$(hostname)
|
||||
KERNEL_VERSION=$(uname -r -m)
|
||||
|
||||
if [ -e /etc/lsb-release ] ; then
|
||||
. /etc/lsb-release
|
||||
NAME=${DISTRIB_ID}
|
||||
VERSION="${DISTRIB_RELEASE} ${DISTRIB_CODENAME}"
|
||||
fi
|
||||
|
||||
# we prefer systemd's /etc/os-release over other sources
|
||||
[ -e /etc/os-release ] && . /etc/os-release
|
||||
|
||||
OS_NAME=${NAME}
|
||||
OS_VERSION="${VERSION} kernel ${KERNEL_VERSION}"
|
||||
}
|
||||
|
||||
oem_set_os_version()
|
||||
{
|
||||
# OS Version setting is not standard yet
|
||||
# we need per vendor oem commands
|
||||
case "${BMC_VENDOR}" in
|
||||
$DELL) ${IPMI_SET_SYSINFO} delloem_os_version \
|
||||
"${OS_VERSION}" > /dev/null 2>&1
|
||||
return $?
|
||||
;;
|
||||
# Add OEM specific commands.
|
||||
# Example:
|
||||
# $OTHER_OEM) ${IPMI_SET_SYSINFO} otheroem_os_version \
|
||||
# "${OS_VERSION}" > /dev/null 2>&1
|
||||
# return $?
|
||||
# ;;
|
||||
*) return 0
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
set_os_info()
|
||||
{
|
||||
# Set and reset OS info in the BMC
|
||||
if [ "$1" = "reset" ]; then
|
||||
OS_NAME=""
|
||||
OS_HOSTNAME=""
|
||||
OS_VERSION=""
|
||||
fi
|
||||
|
||||
${IPMI_SET_SYSINFO} os_name "${OS_NAME}" >/dev/null 2>&1 \
|
||||
|| RETVAL=6
|
||||
${IPMI_SET_SYSINFO} primary_os_name "${OS_NAME}" >/dev/null 2>&1 \
|
||||
|| RETVAL=6
|
||||
${IPMI_SET_SYSINFO} system_name "${OS_HOSTNAME}" >/dev/null 2>&1 \
|
||||
|| RETVAL=6
|
||||
oem_set_os_version || RETVAL=6
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
valid_url()
|
||||
{
|
||||
url="(https?|http)://[a-z0-9-]+(\.[a-z0-9-]+)+([/?].*)?"
|
||||
printf -- "%s" "${TMP_URL}"| grep -Eq "^${url}"
|
||||
return $?
|
||||
}
|
||||
|
||||
oem_get_bmc_url()
|
||||
{
|
||||
# BMC URL is not standard yet
|
||||
# we need per vendor oem commands
|
||||
case "$BMC_VENDOR" in
|
||||
$DELL) TMP_URL=$(${IPMI_GET_SYSINFO} delloem_url 2> /dev/null)
|
||||
;;
|
||||
# Add OEM specific commands
|
||||
# Example:
|
||||
# $OTHER_OEM)
|
||||
# TMP_URL=$(${IPMI_GET_SYSINFO} otheroem_url 2> /dev/null)
|
||||
# ;;
|
||||
*) TMP_URL="" ;;
|
||||
esac
|
||||
|
||||
valid_url && BMC_URL=${TMP_URL} || BMC_URL=""
|
||||
}
|
||||
|
||||
valid_ip()
|
||||
{
|
||||
#Thanks to mkyong.com
|
||||
octet="([01]?[[:digit:]][[:digit:]]?|2[0-4][[:digit:]]|25[0-5])"
|
||||
|
||||
printf -- "%s" "${TMP_IPv4}"| grep -Eq "^${octet}\\.${octet}\\.${octet}\\.${octet}$"
|
||||
return $?
|
||||
}
|
||||
|
||||
get_bmc_ip()
|
||||
{
|
||||
#Thanks to http://ingvar.blog.redpill-linpro.com
|
||||
for CHANNEL in `seq 1 14`
|
||||
do
|
||||
[ $(${IPMI_TOOL} lan print ${CHANNEL} 2>/dev/null \
|
||||
| grep -q "^Set") ] || break
|
||||
done
|
||||
|
||||
# Get BMC_IPv4 and BMC_URL from BMC
|
||||
TMP_IPv4=$(${IPMI_TOOL} lan print ${CHANNEL} 2>/dev/null \
|
||||
| sed -n "s#^IP Address .*: ##p")
|
||||
|
||||
valid_ip && BMC_IPv4=${TMP_IPv4} || BMC_IPv4=""
|
||||
}
|
||||
|
||||
get_bmc_info()
|
||||
{
|
||||
get_bmc_ip
|
||||
if [ -z "${BMC_IPv4}" ] || [ "${BMC_IPv4}" = "0.0.0.0" ]; then
|
||||
BMC_IPv4=""
|
||||
RETVAL=5
|
||||
else
|
||||
# URL makes sense only if there is an IP
|
||||
oem_get_bmc_url
|
||||
fi
|
||||
}
|
||||
|
||||
set_bmc_info()
|
||||
{
|
||||
if [ ! $(touch "${BMC_INFO}" && chmod 600 "${BMC_INFO}") ]; then
|
||||
printf "BMC_IPv4=%s\n" "${BMC_IPv4}" > "${BMC_INFO}"
|
||||
[ -n "${BMC_URL}" ] && \
|
||||
printf "BMC_URL=%s\n" "${BMC_URL}" >> "${BMC_INFO}"
|
||||
else
|
||||
RETVAL=5
|
||||
fi
|
||||
}
|
||||
|
||||
unset_bmc_info()
|
||||
{
|
||||
[ -f ${BMC_INFO} ] && rm -f ${BMC_INFO} > /dev/null 2>&1
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
start()
|
||||
{
|
||||
if bmc_exists; then
|
||||
[ "${SET_OS_INFO}" = "yes" ] && \
|
||||
get_os_info && set_os_info
|
||||
|
||||
if [ "${SET_BMC_INFO}" = "yes" ]; then
|
||||
get_bmc_info
|
||||
if [ ${RETVAL} -eq 0 ]; then
|
||||
set_bmc_info
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
stop()
|
||||
{
|
||||
if bmc_exists; then
|
||||
# reset OS info while system reboots
|
||||
# aids with debugging OS boot-up issues
|
||||
if [ "${RESET_OS_INFO}" = "yes" ]; then
|
||||
set_os_info reset
|
||||
fi
|
||||
unset_bmc_info
|
||||
fi
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
restart()
|
||||
{
|
||||
stop
|
||||
[ $RETVAL -eq 0 ] && start
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
status()
|
||||
{
|
||||
[ -r ${BMC_INFO} ] && \
|
||||
grep -q "BMC_IPv4" "${BMC_INFO}" >/dev/null 1>&2 && \
|
||||
BMC_STATUS="ok" || BMC_STATUS="inactive"
|
||||
${OUTPUT} "${SCRIPT_NAME}: ${BMC_STATUS}" 1>&2
|
||||
[ ${GETTEXT} -eq 1 ] && echo
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
usage()
|
||||
{
|
||||
${OUTPUT} "Usage: ${SCRIPT_NAME} {start|stop|restart|status}" 1>&2
|
||||
[ ${GETTEXT} -eq 1 ] && echo
|
||||
RETVAL=1
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
# MAIN
|
||||
#############################################################################
|
||||
case "$1" in
|
||||
start) start ;;
|
||||
stop) stop ;;
|
||||
restart) restart ;;
|
||||
status) status ;;
|
||||
*) usage ;;
|
||||
esac
|
||||
|
||||
case "$RETVAL" in
|
||||
0|1) ;;
|
||||
2) ${OUTPUT} "${SCRIPT_NAME}: ipmitool(1) not found." 1>&2 ;;
|
||||
3) ${OUTPUT} "${SCRIPT_NAME}: this version of ipmitool does not support getsysinfo." 1>&2 ;;
|
||||
4) ${OUTPUT} "${SCRIPT_NAME}: failed to communicate with BMC." 1>&2 ;;
|
||||
5) ${OUTPUT} "${SCRIPT_NAME}: failed to set OS information in BMC." 1>&2 ;;
|
||||
6) ${OUTPUT} "${SCRIPT_NAME}: failed to get BMC information." 1>&2 ;;
|
||||
*) ${OUTPUT} "${SCRIPT_NAME}: unexpected error." 1>&2 ;;
|
||||
esac
|
||||
|
||||
if [ ${RETVAL} -gt 1 ]; then
|
||||
${OUTPUT} " Return code: ${RETVAL}" 1>&2
|
||||
[ ${GETTEXT} -eq 1 ] && echo
|
||||
fi
|
||||
|
||||
|
||||
exit ${RETVAL}
|
||||
|
||||
#############################################################################
|
||||
# end of file
|
||||
#############################################################################
|
13
contrib/exchange-bmc-os-info.service.redhat
Normal file
13
contrib/exchange-bmc-os-info.service.redhat
Normal file
@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Exchange Information between BMC and OS
|
||||
After=ipmi.service network.target
|
||||
Requires=ipmi.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/usr/libexec/exchange-bmc-os-info start
|
||||
ExecStop=/usr/libexec/exchange-bmc-os-info stop
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
26
contrib/exchange-bmc-os-info.sysconf
Normal file
26
contrib/exchange-bmc-os-info.sysconf
Normal file
@ -0,0 +1,26 @@
|
||||
# exchange-bmc-os-info
|
||||
#
|
||||
# Config file to control Exchange of information between
|
||||
# the OS and Service Processor/Baseboard Management Controller (BMC)
|
||||
#
|
||||
# See here for details
|
||||
# https://fedoraproject.org/wiki/Features/AgentFreeManagement
|
||||
|
||||
### Set OS Info in BMC/Service Processor ###
|
||||
# Name: SET_OS_INFO
|
||||
# Description: Set OS Name, Version and Hostname in the Service Processor (BMC)
|
||||
# Default: yes
|
||||
SET_OS_INFO="yes"
|
||||
|
||||
### Reset OS Info in BMC/Service Processor ###
|
||||
# Name: RESET_OS_INFO
|
||||
# Description: Reset OS Name, Version and Hostname in the Service Processor (BMC).
|
||||
# Useful when the OS Name/Hostname should be empty on reboot
|
||||
# Default: no
|
||||
RESET_OS_INFO="no"
|
||||
|
||||
### Set BMC/Service Processor Info in OS ###
|
||||
# Name; SET_BMC_INFO
|
||||
# Description: Set IP Address and URL of Service Processor/BMC in /run/bmc-info
|
||||
# Default: yes
|
||||
SET_BMC_INFO="yes"
|
88
contrib/log_bmc.sh
Normal file
88
contrib/log_bmc.sh
Normal file
@ -0,0 +1,88 @@
|
||||
#!/bin/sh
|
||||
#############################################################################
|
||||
#
|
||||
# log_bmc.sh: Add SEL entries to indicate OS Boot/Install status.
|
||||
#
|
||||
# version: 0.1
|
||||
#
|
||||
# Authors: Charles Rose <charles_rose@dell.com>
|
||||
# Jordan Hargrave <jordan_hargrave@dell.com>
|
||||
#
|
||||
# Description: Script to log OS boot/install status to the BMC. Primarily
|
||||
# meant for use in automated installs and start up scripts.
|
||||
# Will provide administrators with OS boot/install status in
|
||||
# BMC and aid with debugging.
|
||||
#
|
||||
# Example usage:
|
||||
# # ./log_bmc.sh inst_start
|
||||
# # ipmitool sel list
|
||||
# b | 05/07/2014 | 12:07:32 | OS Boot | Installation started
|
||||
#
|
||||
# See here for details:
|
||||
# https://fedoraproject.org/wiki/Features/AgentFreeManagement
|
||||
#
|
||||
#############################################################################
|
||||
IPMI_CMD="/usr/bin/ipmitool"
|
||||
|
||||
#############################################################################
|
||||
# SEL Event types from ipmi_sel.h
|
||||
OS_STOP="0x20"
|
||||
OS_BOOT="0x1f"
|
||||
# SEL Event data from ipmi_sel.h
|
||||
GRACEFUL_SHUTDOWN="0x03" # OS Stop/Shutdown: Installation started
|
||||
BOOT_COMPLETED="0x01" # OS Boot: Installation started
|
||||
INSTALL_STARTED="0x07" # OS Boot: Installation started
|
||||
INSTALL_COMPLETED="0x08" # OS Boot: Installation completed
|
||||
INSTALL_ABORTED="0x09" # OS Boot: Installation aborted
|
||||
INSTALL_FAILED="0x0a" # OS Boot: Installation failed
|
||||
|
||||
##########################################################################
|
||||
|
||||
# check for ipmi functionality.
|
||||
check_ipmi()
|
||||
{
|
||||
# ensures presence of ipmitool and /dev/ipmi*
|
||||
${IPMI_CMD} mc info > /dev/null 2>&1
|
||||
[ $? -ne 0 ] && RETVAL=2
|
||||
}
|
||||
|
||||
# Write out the events to SEL
|
||||
ipmi_sel_add()
|
||||
{
|
||||
# Refer ipmitool(1) event for details on format.
|
||||
printf "0x04 %s 0x00 0x6f %s 0x00 0x00" ${type} ${status} > \
|
||||
${tmpfile} && \
|
||||
${IPMI_CMD} sel add ${tmpfile} > /dev/null 2>&1
|
||||
[ $? -ne 0 ] && RETVAL=3
|
||||
}
|
||||
|
||||
### Main
|
||||
# Most of the status is for this event type
|
||||
tmpfile=$(/usr/bin/mktemp)
|
||||
RETVAL=0
|
||||
type=${OS_BOOT}
|
||||
|
||||
case ${1} in
|
||||
os_shutdown) type=${OS_STOP}; status=${GRACEFUL_SHUTDOWN} ;;
|
||||
os_boot) status=${BOOT_COMPLETED} ;;
|
||||
inst_start) status=${INSTALL_STARTED} ;;
|
||||
inst_complete) status=${INSTALL_COMPLETED} ;;
|
||||
inst_abort) status=${INSTALL_ABORTED} ;;
|
||||
inst_fail) status=${INSTALL_FAILED} ;;
|
||||
*) RETVAL=1 ;;
|
||||
esac
|
||||
|
||||
[ ${RETVAL} -eq 0 ] && check_ipmi
|
||||
[ ${RETVAL} -eq 0 ] && ipmi_sel_add ${status}
|
||||
|
||||
case ${RETVAL} in
|
||||
0) ;;
|
||||
1) printf -- %s\\n "Usage: $0 <os_boot|os_shutdown|inst_start|inst_complete|inst_abort|inst_fail>" ;;
|
||||
2) printf -- %s\\n "failed to communicate with BMC." ;;
|
||||
3) printf -- %s\\n "error adding ipmi sel entry." ;;
|
||||
esac
|
||||
|
||||
[ -f ${tmpfile} ] && rm -f ${tmpfile} > /dev/null 2>&1
|
||||
|
||||
exit ${RETVAL}
|
||||
### End
|
10
csv-revision
Executable file
10
csv-revision
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
git describe --first-parent --tags 2>/dev/null | (
|
||||
IFS=- read tag rev hash
|
||||
if [ $? ] && [ -n "$rev" ]; then
|
||||
echo .$rev.$hash
|
||||
elif [ -d .git ]; then
|
||||
echo .0.gsnapshot
|
||||
fi
|
||||
)
|
@ -145,7 +145,7 @@ placed at the end of commands to get option usage help.
|
||||
> ipmievd help
|
||||
.br
|
||||
Commands:
|
||||
open Use OpenIPMI for asyncronous notification of events
|
||||
open Use OpenIPMI for asynchronous notification of events
|
||||
sel Poll SEL for notification of events
|
||||
|
||||
.TP
|
File diff suppressed because it is too large
Load Diff
@ -30,7 +30,7 @@
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
noinst_HEADERS = log.h bswap.h helper.h ipmi.h ipmi_cc.h ipmi_intf.h \
|
||||
noinst_HEADERS = log.h bswap.h hpm2.h helper.h ipmi.h ipmi_cc.h ipmi_intf.h \
|
||||
ipmi_chassis.h ipmi_entity.h ipmi_fru.h ipmi_hpmfwupg.h ipmi_lanp.h \
|
||||
ipmi_sdr.h ipmi_sel.h ipmi_sol.h ipmi_mc.h ipmi_raw.h \
|
||||
ipmi_channel.h ipmi_sensor.h ipmi_event.h ipmi_session.h \
|
||||
@ -38,5 +38,5 @@ noinst_HEADERS = log.h bswap.h helper.h ipmi.h ipmi_cc.h ipmi_intf.h \
|
||||
ipmi_oem.h ipmi_sdradd.h ipmi_isol.h ipmi_sunoem.h ipmi_picmg.h \
|
||||
ipmi_fwum.h ipmi_main.h ipmi_tsol.h ipmi_firewall.h \
|
||||
ipmi_kontronoem.h ipmi_ekanalyzer.h ipmi_gendev.h ipmi_ime.h \
|
||||
ipmi_delloem.h ipmi_dcmi.h
|
||||
|
||||
ipmi_delloem.h ipmi_dcmi.h ipmi_vita.h ipmi_sel_supermicro.h \
|
||||
ipmi_cfgp.h ipmi_lanp6.h ipmi_quantaoem.h
|
@ -38,6 +38,8 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
@ -61,7 +63,7 @@
|
||||
struct ipmi_intf;
|
||||
|
||||
struct valstr {
|
||||
uint16_t val;
|
||||
uint32_t val;
|
||||
const char * str;
|
||||
};
|
||||
struct oemvalstr {
|
||||
@ -83,9 +85,12 @@ int str2ushort(const char * str, uint16_t * ushrt_ptr);
|
||||
int str2char(const char * str, int8_t * chr_ptr);
|
||||
int str2uchar(const char * str, uint8_t * uchr_ptr);
|
||||
|
||||
int eval_ccode(const int ccode);
|
||||
|
||||
int is_fru_id(const char *argv_ptr, uint8_t *fru_id_ptr);
|
||||
int is_ipmi_channel_num(const char *argv_ptr, uint8_t *channel_ptr);
|
||||
int is_ipmi_user_id(const char *argv_ptr, uint8_t *ipmi_uid_ptr);
|
||||
int is_ipmi_user_priv_limit(const char *argv_ptr, uint8_t *ipmi_priv_limit_ptr);
|
||||
|
||||
uint16_t str2val(const char * str, const struct valstr * vs);
|
||||
void print_valstr(const struct valstr * vs, const char * title, int loglevel);
|
||||
@ -94,11 +99,77 @@ void print_valstr_2col(const struct valstr * vs, const char * title, int logleve
|
||||
|
||||
uint16_t buf2short(uint8_t * buf);
|
||||
uint32_t buf2long(uint8_t * buf);
|
||||
const char * buf2str(uint8_t * buf, int len);
|
||||
#define BUF2STR_MAXIMUM_OUTPUT_SIZE (3*1024 + 1)
|
||||
const char * buf2str_extended(const uint8_t *buf, int len, const char *sep);
|
||||
const char * buf2str(const uint8_t *buf, int len);
|
||||
int str2mac(const char *arg, uint8_t *buf);
|
||||
const char * mac2str(const uint8_t *buf);
|
||||
int ipmi_parse_hex(const char *str, uint8_t *out, int size);
|
||||
void printbuf(const uint8_t * buf, int len, const char * desc);
|
||||
uint8_t ipmi_csum(uint8_t * d, int s);
|
||||
FILE * ipmi_open_file(const char * file, int rw);
|
||||
void ipmi_start_daemon(struct ipmi_intf *intf);
|
||||
uint16_t ipmi_get_oem_id(struct ipmi_intf *intf);
|
||||
|
||||
#define IS_SET(v, b) ((v) & (1 << (b)))
|
||||
|
||||
/* le16toh(), hto16le(), et. al. don't exist for Windows or Apple */
|
||||
/* For portability, let's simply define our own versions here */
|
||||
|
||||
/* IPMI is always little-endian */
|
||||
static inline uint16_t ipmi16toh(void *ipmi16)
|
||||
{
|
||||
uint8_t *ipmi = (uint8_t *)ipmi16;
|
||||
uint16_t h;
|
||||
|
||||
h = ipmi[1] << 8; /* MSB */
|
||||
h |= ipmi[0]; /* LSB */
|
||||
|
||||
return h;
|
||||
}
|
||||
|
||||
static inline void htoipmi16(uint16_t h, uint8_t *ipmi)
|
||||
{
|
||||
ipmi[0] = h & 0xFF; /* LSB */
|
||||
ipmi[1] = h >> 8; /* MSB */
|
||||
}
|
||||
|
||||
static inline uint32_t ipmi24toh(void *ipmi24)
|
||||
{
|
||||
uint8_t *ipmi = (uint8_t *)ipmi24;
|
||||
uint32_t h = 0;
|
||||
|
||||
h = ipmi[2] << 16; /* MSB */
|
||||
h |= ipmi[1] << 8;
|
||||
h |= ipmi[0]; /* LSB */
|
||||
|
||||
return h;
|
||||
}
|
||||
|
||||
static inline uint32_t ipmi32toh(void *ipmi32)
|
||||
{
|
||||
uint8_t *ipmi = ipmi32;
|
||||
uint32_t h;
|
||||
|
||||
h = ipmi[3] << 24; /* MSB */
|
||||
h |= ipmi[2] << 16;
|
||||
h |= ipmi[1] << 8;
|
||||
h |= ipmi[0]; /* LSB */
|
||||
|
||||
return h;
|
||||
}
|
||||
|
||||
static inline void htoipmi32(uint32_t h, uint8_t *ipmi)
|
||||
{
|
||||
ipmi[0] = h & 0xFF; /* LSB */
|
||||
ipmi[1] = (h >> 8) & 0xFF;
|
||||
ipmi[2] = (h >> 16) & 0xFF;
|
||||
ipmi[3] = (h >> 24) & 0xFF; /* MSB */
|
||||
}
|
||||
|
||||
uint8_t *array_byteswap(uint8_t *buffer, size_t length);
|
||||
uint8_t *array_ntoh(uint8_t *buffer, size_t length);
|
||||
uint8_t *array_letoh(uint8_t *buffer, size_t length);
|
||||
|
||||
#define ipmi_open_file_read(file) ipmi_open_file(file, 0)
|
||||
#define ipmi_open_file_write(file) ipmi_open_file(file, 1)
|
91
include/ipmitool/hpm2.h
Normal file
91
include/ipmitool/hpm2.h
Normal file
@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright (c) 2012 Pigeon Point Systems. All Rights Reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Pigeon Point Systems nor the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
* PIGEON POINT SYSTEMS ("PPS") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
* PPS OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
* OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF PPS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <ipmitool/ipmi_intf.h>
|
||||
|
||||
/* Global HPM.2 defines */
|
||||
#define HPM2_REVISION 0x01
|
||||
#define HPM3_REVISION 0x01
|
||||
#define HPM2_LAN_PARAMS_REV 0x01
|
||||
#define HPM2_SOL_PARAMS_REV 0x01
|
||||
#define HPM3_LAN_PARAMS_REV 0x01
|
||||
/* IPMI defines parameter revision as
|
||||
* MSN = present revision,
|
||||
* LSN = oldest revision parameter is
|
||||
* backward compatible with. */
|
||||
#define LAN_PARAM_REV(x, y) (((x) << 4) | ((y) & 0xF))
|
||||
|
||||
/* HPM.2 capabilities */
|
||||
#define HPM2_CAPS_SOL_EXTENSION 0x01
|
||||
#define HPM2_CAPS_PACKET_TRACE 0x02
|
||||
#define HPM2_CAPS_EXT_MANAGEMENT 0x04
|
||||
#define HPM2_CAPS_VERSION_SENSOR 0x08
|
||||
#define HPM2_CAPS_DYNAMIC_SESSIONS 0x10
|
||||
|
||||
#if HAVE_PRAGMA_PACK
|
||||
# pragma pack(push, 1)
|
||||
#endif
|
||||
|
||||
/* HPM.2 LAN attach capabilities */
|
||||
struct hpm2_lan_attach_capabilities {
|
||||
uint8_t hpm2_revision_id;
|
||||
uint16_t lan_channel_mask;
|
||||
uint8_t hpm2_caps;
|
||||
uint8_t hpm2_lan_params_start;
|
||||
uint8_t hpm2_lan_params_rev;
|
||||
uint8_t hpm2_sol_params_start;
|
||||
uint8_t hpm2_sol_params_rev;
|
||||
} ATTRIBUTE_PACKING;
|
||||
|
||||
/* HPM.2 LAN channel capabilities */
|
||||
struct hpm2_lan_channel_capabilities {
|
||||
uint8_t capabilities;
|
||||
uint8_t attach_type;
|
||||
uint8_t bandwidth_class;
|
||||
uint16_t max_inbound_pld_size;
|
||||
uint16_t max_outbound_pld_size;
|
||||
} ATTRIBUTE_PACKING;
|
||||
|
||||
#if HAVE_PRAGMA_PACK
|
||||
# pragma pack(pop)
|
||||
#endif
|
||||
|
||||
/* HPM.2 command assignments */
|
||||
#define HPM2_GET_LAN_ATTACH_CAPABILITIES 0x3E
|
||||
|
||||
extern int hpm2_get_capabilities(struct ipmi_intf * intf,
|
||||
struct hpm2_lan_attach_capabilities * caps);
|
||||
extern int hpm2_get_lan_channel_capabilities(struct ipmi_intf * intf,
|
||||
uint8_t hpm2_lan_params_start,
|
||||
struct hpm2_lan_channel_capabilities * caps);
|
||||
extern int hpm2_detect_max_payload_size(struct ipmi_intf * intf);
|
@ -46,6 +46,7 @@
|
||||
#endif
|
||||
|
||||
#define IPMI_BUF_SIZE 1024
|
||||
#define IPMI_MAX_MD_SIZE 0x20
|
||||
|
||||
#if HAVE_PRAGMA_PACK
|
||||
#define ATTRIBUTE_PACKING
|
||||
@ -211,13 +212,13 @@ struct ipmi_rs {
|
||||
uint32_t console_id;
|
||||
uint8_t bmc_rand[16]; /* Random number generated by the BMC */
|
||||
uint8_t bmc_guid[16];
|
||||
uint8_t key_exchange_auth_code[20];
|
||||
uint8_t key_exchange_auth_code[IPMI_MAX_MD_SIZE];
|
||||
} rakp2_message;
|
||||
struct {
|
||||
uint8_t message_tag;
|
||||
uint8_t rakp_return_code;
|
||||
uint32_t console_id;
|
||||
uint8_t integrity_check_value[20];
|
||||
uint8_t integrity_check_value[IPMI_MAX_MD_SIZE];
|
||||
} rakp4_message;
|
||||
struct {
|
||||
uint8_t packet_sequence_number;
|
||||
@ -251,8 +252,17 @@ struct ipmi_rs {
|
||||
|
||||
|
||||
/* These values are IANA numbers */
|
||||
/************************************************************************
|
||||
* Add ID String for IANA Enterprise Number of IBM & ADLINK
|
||||
* https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers
|
||||
************************************************************************/
|
||||
|
||||
typedef enum IPMI_OEM {
|
||||
IPMI_OEM_UNKNOWN = 0,
|
||||
IPMI_OEM_DEBUG = 0xFFFFFE, /* Hoping IANA won't hit this soon */
|
||||
IPMI_OEM_RESERVED = 0x0FFFFF, /* As per IPMI 2.0 specification */
|
||||
/* 2 for [IBM] */
|
||||
IPMI_OEM_IBM_2 = 2,
|
||||
IPMI_OEM_HP = 11,
|
||||
IPMI_OEM_SUN = 42,
|
||||
IPMI_OEM_NOKIA = 94,
|
||||
@ -260,6 +270,7 @@ typedef enum IPMI_OEM {
|
||||
IPMI_OEM_HITACHI_116 = 116,
|
||||
IPMI_OEM_NEC = 119,
|
||||
IPMI_OEM_TOSHIBA = 186,
|
||||
IPMI_OEM_ERICSSON = 193,
|
||||
IPMI_OEM_INTEL = 343,
|
||||
IPMI_OEM_TATUNG = 373,
|
||||
IPMI_OEM_HITACHI_399 = 399,
|
||||
@ -267,9 +278,13 @@ typedef enum IPMI_OEM {
|
||||
IPMI_OEM_LMC = 2168,
|
||||
IPMI_OEM_RADISYS = 4337,
|
||||
IPMI_OEM_BROADCOM = 4413,
|
||||
/* 4769 for [IBM Corporation] */
|
||||
IPMI_OEM_IBM_4769 = 4769,
|
||||
IPMI_OEM_MAGNUM = 5593,
|
||||
IPMI_OEM_TYAN = 6653,
|
||||
IPMI_OEM_QUANTA = 7244,
|
||||
IPMI_OEM_NEWISYS = 9237,
|
||||
IPMI_OEM_ADVANTECH = 10297,
|
||||
IPMI_OEM_FUJITSU_SIEMENS = 10368,
|
||||
IPMI_OEM_AVOCENT = 10418,
|
||||
IPMI_OEM_PEPPERCON = 10437,
|
||||
@ -280,8 +295,15 @@ typedef enum IPMI_OEM {
|
||||
IPMI_OEM_RARITAN = 13742,
|
||||
IPMI_OEM_KONTRON = 15000,
|
||||
IPMI_OEM_PPS = 16394,
|
||||
/* 20301 for [IBM eServer X] */
|
||||
IPMI_OEM_IBM_20301 = 20301,
|
||||
IPMI_OEM_AMI = 20974,
|
||||
IPMI_OEM_NOKIA_SIEMENS_NETWORKS = 28458
|
||||
/* 24339 for [ADLINK TECHNOLOGY INC.] */
|
||||
IPMI_OEM_ADLINK_24339 = 24339,
|
||||
IPMI_OEM_NOKIA_SOLUTIONS_AND_NETWORKS = 28458,
|
||||
IPMI_OEM_VITA = 33196,
|
||||
IPMI_OEM_SUPERMICRO_47488 = 47488,
|
||||
IPMI_OEM_YADRO = 49769,
|
||||
} IPMI_OEM;
|
||||
|
||||
extern const struct valstr completion_code_vals[];
|
197
include/ipmitool/ipmi_cfgp.h
Normal file
197
include/ipmitool/ipmi_cfgp.h
Normal file
@ -0,0 +1,197 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Pentair Technical Products. All right reserved
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Pentair Technical Products or the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* PENTAIR TECHNICAL SOLUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef IPMI_CFGP_H
|
||||
#define IPMI_CFGP_H
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* Forward declarations. */
|
||||
struct ipmi_cfgp;
|
||||
struct ipmi_cfgp_ctx;
|
||||
|
||||
/*
|
||||
* Action types.
|
||||
*/
|
||||
enum {
|
||||
/* parse dumped parameter data */
|
||||
CFGP_PARSE,
|
||||
/* get parameter from BMC */
|
||||
CFGP_GET,
|
||||
/* set parameter to BMC */
|
||||
CFGP_SET,
|
||||
/* output parameter data in form that can be parsed back */
|
||||
CFGP_SAVE,
|
||||
/* print parameter in user-friendly format */
|
||||
CFGP_PRINT
|
||||
};
|
||||
|
||||
/*
|
||||
* Action-specific information.
|
||||
*/
|
||||
struct ipmi_cfgp_action {
|
||||
/* Action type. */
|
||||
int type;
|
||||
|
||||
/* Set selector. */
|
||||
int set;
|
||||
|
||||
/* Block selector. */
|
||||
int block;
|
||||
|
||||
/* No error output needed. */
|
||||
int quiet;
|
||||
|
||||
/* Number of command line arguments (only for parse action). */
|
||||
int argc;
|
||||
|
||||
/* Command line arguments (only for parse action). */
|
||||
const char **argv;
|
||||
|
||||
/* Output file (only for dump/print actions). */
|
||||
FILE *file;
|
||||
};
|
||||
|
||||
/*
|
||||
* Access types.
|
||||
*/
|
||||
enum {
|
||||
CFGP_RDWR,
|
||||
CFGP_RDONLY,
|
||||
CFGP_WRONLY,
|
||||
CFGP_RESERVED
|
||||
};
|
||||
|
||||
/*
|
||||
* Configuration parameter descriptor.
|
||||
*/
|
||||
struct ipmi_cfgp {
|
||||
/* Parameter name. */
|
||||
const char *name;
|
||||
|
||||
/* Parameter format description. */
|
||||
const char *format;
|
||||
|
||||
/* Various parameter traits. */
|
||||
unsigned int size; /* block size */
|
||||
unsigned int access:2; /* read-write/read-only/write-only */
|
||||
unsigned int is_set:1; /* takes non-zero set selectors */
|
||||
unsigned int first_set:1; /* 1 = 1-based set selector */
|
||||
unsigned int has_blocks:1; /* takes non-zero block selectors */
|
||||
unsigned int first_block:1; /* 1 = 1-based block selector */
|
||||
|
||||
/* Parameter-specific data. */
|
||||
int specific;
|
||||
};
|
||||
|
||||
/* Parameter callback. */
|
||||
typedef int (*ipmi_cfgp_handler_t)(void *priv,
|
||||
const struct ipmi_cfgp *p, const struct ipmi_cfgp_action *action,
|
||||
unsigned char *data);
|
||||
|
||||
/*
|
||||
* Parameter selector.
|
||||
*/
|
||||
struct ipmi_cfgp_sel {
|
||||
int param;
|
||||
int set;
|
||||
int block;
|
||||
};
|
||||
|
||||
/*
|
||||
* Configuration parameter data.
|
||||
*/
|
||||
struct ipmi_cfgp_data {
|
||||
struct ipmi_cfgp_data *next;
|
||||
struct ipmi_cfgp_sel sel;
|
||||
unsigned char data[];
|
||||
};
|
||||
|
||||
/*
|
||||
* Configuration parameter operation context.
|
||||
*/
|
||||
struct ipmi_cfgp_ctx {
|
||||
/* Set of parameters. */
|
||||
const struct ipmi_cfgp *set;
|
||||
|
||||
/* Descriptor count. */
|
||||
int count;
|
||||
|
||||
/* Parameter action handler. */
|
||||
ipmi_cfgp_handler_t handler;
|
||||
|
||||
/* ipmitool cmd name */
|
||||
const char *cmdname;
|
||||
|
||||
/* List of parameter values. */
|
||||
struct ipmi_cfgp_data *v;
|
||||
|
||||
/* Private data. */
|
||||
void *priv;
|
||||
};
|
||||
|
||||
/* Initialize configuration context. */
|
||||
extern int ipmi_cfgp_init(struct ipmi_cfgp_ctx *ctx,
|
||||
const struct ipmi_cfgp *set, unsigned int count,
|
||||
const char *cmdname,
|
||||
ipmi_cfgp_handler_t handler, void *priv);
|
||||
|
||||
/* Uninitialize context, free allocated memory. */
|
||||
extern int ipmi_cfgp_uninit(struct ipmi_cfgp_ctx *ctx);
|
||||
|
||||
/* Print parameter usage. */
|
||||
void ipmi_cfgp_usage(const struct ipmi_cfgp *set, int count, int write);
|
||||
|
||||
/* Parse parameter selector from command line. */
|
||||
extern int ipmi_cfgp_parse_sel(struct ipmi_cfgp_ctx *ctx,
|
||||
int argc, const char **argv, struct ipmi_cfgp_sel *sel);
|
||||
|
||||
/* Parse parameter data from command line. */
|
||||
extern int ipmi_cfgp_parse_data(struct ipmi_cfgp_ctx *ctx,
|
||||
const struct ipmi_cfgp_sel *sel, int argc, const char **argv);
|
||||
|
||||
/* Get parameter data from BMC. */
|
||||
extern int ipmi_cfgp_get(struct ipmi_cfgp_ctx *ctx,
|
||||
const struct ipmi_cfgp_sel *sel);
|
||||
|
||||
/* Set parameter data to BMC. */
|
||||
extern int ipmi_cfgp_set(struct ipmi_cfgp_ctx *ctx,
|
||||
const struct ipmi_cfgp_sel *sel);
|
||||
|
||||
/* Write parameter data to file. */
|
||||
extern int ipmi_cfgp_save(struct ipmi_cfgp_ctx *ctx,
|
||||
const struct ipmi_cfgp_sel *sel, FILE *file);
|
||||
|
||||
/* Print parameter data in user-friendly format. */
|
||||
extern int ipmi_cfgp_print(struct ipmi_cfgp_ctx *ctx,
|
||||
const struct ipmi_cfgp_sel *sel, FILE *file);
|
||||
|
||||
#endif /* IPMI_CFGP_H */
|
@ -37,9 +37,11 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
#include <ipmitool/ipmi.h>
|
||||
#include <ipmitool/ipmi_intf.h>
|
||||
|
||||
|
||||
#define IPMI_GET_CHANNEL_AUTH_CAP 0x38
|
||||
#define IPMI_SET_CHANNEL_ACCESS 0x40
|
||||
#define IPMI_GET_CHANNEL_ACCESS 0x41
|
||||
#define IPMI_GET_CHANNEL_INFO 0x42
|
||||
#define IPMI_SET_USER_ACCESS 0x43
|
||||
@ -49,6 +51,76 @@
|
||||
#define IPMI_SET_USER_PASSWORD 0x47
|
||||
#define IPMI_GET_CHANNEL_CIPHER_SUITES 0x54
|
||||
|
||||
/* These are for channel_info_t.session_support */
|
||||
#define IPMI_CHANNEL_SESSION_LESS 0x00
|
||||
#define IPMI_CHANNEL_SESSION_SINGLE 0x40
|
||||
#define IPMI_CHANNEL_SESSION_MULTI 0x80
|
||||
#define IPMI_CHANNEL_SESSION_BASED 0xC0
|
||||
|
||||
/* (22.24) Get Channel Info */
|
||||
struct channel_info_t {
|
||||
uint8_t channel;
|
||||
uint8_t medium;
|
||||
uint8_t protocol;
|
||||
uint8_t session_support;
|
||||
uint8_t active_sessions;
|
||||
uint8_t vendor_id[3];
|
||||
uint8_t aux_info[2];
|
||||
};
|
||||
|
||||
/* (22.23) Get Channel Access */
|
||||
struct channel_access_t {
|
||||
uint8_t access_mode;
|
||||
uint8_t alerting;
|
||||
uint8_t channel;
|
||||
uint8_t per_message_auth;
|
||||
uint8_t privilege_limit;
|
||||
uint8_t user_level_auth;
|
||||
};
|
||||
|
||||
/*
|
||||
* The Cipher Suite Record Format from table 22-18 of the IPMI v2.0 spec
|
||||
*/
|
||||
enum cipher_suite_format_tag {
|
||||
STANDARD_CIPHER_SUITE = 0xc0,
|
||||
OEM_CIPHER_SUITE = 0xc1,
|
||||
};
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct std_cipher_suite_record_t {
|
||||
uint8_t start_of_record;
|
||||
uint8_t cipher_suite_id;
|
||||
uint8_t auth_alg;
|
||||
uint8_t integrity_alg;
|
||||
uint8_t crypt_alg;
|
||||
} ATTRIBUTE_PACKING;
|
||||
struct oem_cipher_suite_record_t {
|
||||
uint8_t start_of_record;
|
||||
uint8_t cipher_suite_id;
|
||||
uint8_t iana[3];
|
||||
uint8_t auth_alg;
|
||||
uint8_t integrity_alg;
|
||||
uint8_t crypt_alg;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
#define CIPHER_ALG_MASK 0x3f
|
||||
#define MAX_CIPHER_SUITE_RECORD_OFFSET 0x40
|
||||
#define MAX_CIPHER_SUITE_DATA_LEN 0x10
|
||||
#define LIST_ALGORITHMS_BY_CIPHER_SUITE 0x80
|
||||
|
||||
/* Below is the theoretical maximum number of cipher suites that could be
|
||||
* reported by a BMC. That is with the Get Channel Cipher Suites Command, at 16
|
||||
* bytes at a time and 0x40 requests, it can report 1024 bytes, which is about
|
||||
* 204 standard records or 128 OEM records. Really, we probably don't need more
|
||||
* than about 20, which is the full set of standard records plus a few OEM
|
||||
* records.
|
||||
*/
|
||||
#define MAX_CIPHER_SUITE_COUNT (MAX_CIPHER_SUITE_RECORD_OFFSET * \
|
||||
MAX_CIPHER_SUITE_DATA_LEN / \
|
||||
sizeof(struct std_cipher_suite_record_t))
|
||||
|
||||
/*
|
||||
* The Get Authentication Capabilities response structure
|
||||
@ -101,158 +173,26 @@ struct get_channel_auth_cap_rsp {
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* The Get Channel Info response structure
|
||||
* From table 22-29 of the IPMI v2.0 spec
|
||||
*/
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct get_channel_info_rsp {
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t __reserved1 : 4;
|
||||
uint8_t channel_number : 4; /* channel number */
|
||||
#else
|
||||
uint8_t channel_number : 4; /* channel number */
|
||||
uint8_t __reserved1 : 4;
|
||||
#endif
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t __reserved2 : 1;
|
||||
uint8_t channel_medium : 7; /* Channel medium type per table 6-3 */
|
||||
#else
|
||||
uint8_t channel_medium : 7; /* Channel medium type per table 6-3 */
|
||||
uint8_t __reserved2 : 1;
|
||||
#endif
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t __reserved3 : 3;
|
||||
uint8_t channel_protocol : 5; /* Channel protocol per table 6-2 */
|
||||
#else
|
||||
uint8_t channel_protocol : 5; /* Channel protocol per table 6-2 */
|
||||
uint8_t __reserved3 : 3;
|
||||
#endif
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t session_support : 2; /* Description of session support */
|
||||
uint8_t active_sessions : 6; /* Count of active sessions */
|
||||
#else
|
||||
uint8_t active_sessions : 6; /* Count of active sessions */
|
||||
uint8_t session_support : 2; /* Description of session support */
|
||||
#endif
|
||||
uint8_t vendor_id[3]; /* For OEM that specified the protocol */
|
||||
uint8_t aux_info[2]; /* Not used*/
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* The Get Channel Access response structure
|
||||
* From table 22-28 of the IPMI v2.0 spec
|
||||
*/
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct get_channel_access_rsp {
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t __reserved1 : 2;
|
||||
uint8_t alerting : 1;
|
||||
uint8_t per_message_auth : 1;
|
||||
uint8_t user_level_auth : 1;
|
||||
uint8_t access_mode : 3;
|
||||
#else
|
||||
uint8_t access_mode : 3;
|
||||
uint8_t user_level_auth : 1;
|
||||
uint8_t per_message_auth : 1;
|
||||
uint8_t alerting : 1;
|
||||
uint8_t __reserved1 : 2;
|
||||
#endif
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t __reserved2 : 4;
|
||||
uint8_t channel_priv_limit : 4; /* Channel privilege level limit */
|
||||
#else
|
||||
uint8_t channel_priv_limit : 4; /* Channel privilege level limit */
|
||||
uint8_t __reserved2 : 4;
|
||||
#endif
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct get_user_access_rsp {
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t __reserved1 : 2;
|
||||
uint8_t max_user_ids : 6;
|
||||
uint8_t __reserved2 : 2;
|
||||
uint8_t enabled_user_ids : 6;
|
||||
uint8_t __reserved3 : 2;
|
||||
uint8_t fixed_user_ids : 6;
|
||||
uint8_t __reserved4 : 1;
|
||||
uint8_t callin_callback : 1;
|
||||
uint8_t link_auth : 1;
|
||||
uint8_t ipmi_messaging : 1;
|
||||
uint8_t privilege_limit : 4;
|
||||
#else
|
||||
uint8_t max_user_ids : 6;
|
||||
uint8_t __reserved1 : 2;
|
||||
uint8_t enabled_user_ids : 6;
|
||||
uint8_t __reserved2 : 2;
|
||||
uint8_t fixed_user_ids : 6;
|
||||
uint8_t __reserved3 : 2;
|
||||
uint8_t privilege_limit : 4;
|
||||
uint8_t ipmi_messaging : 1;
|
||||
uint8_t link_auth : 1;
|
||||
uint8_t callin_callback : 1;
|
||||
uint8_t __reserved4 : 1;
|
||||
#endif
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct set_user_access_data {
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t change_bits : 1;
|
||||
uint8_t callin_callback : 1;
|
||||
uint8_t link_auth : 1;
|
||||
uint8_t ipmi_messaging : 1;
|
||||
uint8_t channel : 4;
|
||||
uint8_t __reserved1 : 2;
|
||||
uint8_t user_id : 6;
|
||||
uint8_t __reserved2 : 4;
|
||||
uint8_t privilege_limit : 4;
|
||||
uint8_t __reserved3 : 4;
|
||||
uint8_t session_limit : 4;
|
||||
#else
|
||||
uint8_t channel : 4;
|
||||
uint8_t ipmi_messaging : 1;
|
||||
uint8_t link_auth : 1;
|
||||
uint8_t callin_callback : 1;
|
||||
uint8_t change_bits : 1;
|
||||
uint8_t user_id : 6;
|
||||
uint8_t __reserved1 : 2;
|
||||
uint8_t privilege_limit : 4;
|
||||
uint8_t __reserved2 : 4;
|
||||
uint8_t session_limit : 4;
|
||||
uint8_t __reserved3 : 4;
|
||||
#endif
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
int _ipmi_get_channel_access(struct ipmi_intf *intf,
|
||||
struct channel_access_t *channel_access,
|
||||
uint8_t get_volatile_settings);
|
||||
int ipmi_get_channel_cipher_suites(struct ipmi_intf *intf,
|
||||
const char *payload_type,
|
||||
uint8_t channel,
|
||||
struct cipher_suite_info *suites,
|
||||
size_t *count);
|
||||
int _ipmi_get_channel_info(struct ipmi_intf *intf,
|
||||
struct channel_info_t *channel_info);
|
||||
int _ipmi_set_channel_access(struct ipmi_intf *intf,
|
||||
struct channel_access_t channel_access,
|
||||
uint8_t access_option,
|
||||
uint8_t privilege_option);
|
||||
|
||||
uint8_t ipmi_get_channel_medium(struct ipmi_intf * intf, uint8_t channel);
|
||||
uint8_t ipmi_current_channel_medium(struct ipmi_intf * intf);
|
||||
int ipmi_channel_main(struct ipmi_intf * intf, int argc, char ** argv);
|
||||
int ipmi_get_channel_auth_cap(struct ipmi_intf * intf, uint8_t channel, uint8_t priv);
|
||||
int ipmi_get_channel_auth_cap(struct ipmi_intf * intf,
|
||||
uint8_t channel, uint8_t priv);
|
||||
int ipmi_get_channel_info(struct ipmi_intf * intf, uint8_t channel);
|
||||
|
||||
#endif /*IPMI_CHANNEL_H*/
|
@ -118,14 +118,16 @@
|
||||
#define IPMI_AUTH_RAKP_NONE 0x00
|
||||
#define IPMI_AUTH_RAKP_HMAC_SHA1 0x01
|
||||
#define IPMI_AUTH_RAKP_HMAC_MD5 0x02
|
||||
#define IPMI_AUTH_RAKP_HMAC_SHA256 0x03
|
||||
|
||||
/* From table 13-18 of the IPMI v2 specification */
|
||||
#define IPMI_INTEGRITY_NONE 0x00
|
||||
#define IPMI_INTEGRITY_HMAC_SHA1_96 0x01
|
||||
#define IPMI_INTEGRITY_HMAC_MD5_128 0x02
|
||||
#define IPMI_INTEGRITY_MD5_128 0x03
|
||||
#define IPMI_INTEGRITY_HMAC_SHA256_128 0x04
|
||||
|
||||
/* From table 13-19 of the IPMI v2 specfication */
|
||||
/* From table 13-19 of the IPMI v2 specification */
|
||||
#define IPMI_CRYPT_NONE 0x00
|
||||
#define IPMI_CRYPT_AES_CBC_128 0x01
|
||||
#define IPMI_CRYPT_XRC4_128 0x02
|
@ -52,6 +52,53 @@
|
||||
#define GOOD_PWR_GLIMIT_CCODE(ccode) ((ccode = ((ccode == 0x80) ? 0 : ccode)))
|
||||
#define GOOD_ASSET_TAG_CCODE(ccode) ((ccode = (((ccode == 0x80) || (ccode == 0x81) || (ccode == 0x82) || (ccode == 0x83)) ? 0 : ccode)))
|
||||
|
||||
/* External Node Manager Configuration and Control Commands per spec 2.0 */
|
||||
|
||||
#define IPMI_NM_POLICY_CTL 0xC0
|
||||
#define IPMI_NM_SET_POLICY 0xC1
|
||||
#define IPMI_NM_GET_POLICY 0xC2
|
||||
#define IPMI_NM_SET_ALERT_TH 0xC3
|
||||
#define IPMI_NM_GET_ALERT_TH 0xC4
|
||||
#define IPMI_NM_SET_SUSPEND 0xC5
|
||||
#define IPMI_NM_GET_SUSPEND 0xC6
|
||||
#define IPMI_NM_RESET_STATS 0xC7
|
||||
#define IPMI_NM_GET_STATS 0xC8
|
||||
#define IPMI_NM_GET_CAP 0xC9
|
||||
#define IPMI_NM_GET_VERSION 0xCA
|
||||
#define IPMI_NM_SET_POWER 0xCB
|
||||
#define IPMI_NM_SET_ALERT_DS 0xCE
|
||||
#define IPMI_NM_GET_ALERT_DS 0xCF
|
||||
#define IPMI_NM_LIMITING 0xF2
|
||||
|
||||
/* Node Manager Policy Control Flags */
|
||||
#define IPMI_NM_GLOBAL_ENABLE 0x01
|
||||
#define IPMI_NM_DOMAIN_ENABLE 0x02
|
||||
#define IPMI_NM_PER_POLICY_ENABLE 0x04
|
||||
|
||||
/* Node Manager Set Policy Enable */
|
||||
#define IPMI_NM_POLICY_ENABLE 0x10
|
||||
|
||||
/* Node Manager Policy Trigger Codes */
|
||||
#define IPMI_NM_NO_POLICY_TRIG 0x00
|
||||
#define IPMI_NM_TEMP_TRIGGER 0x01
|
||||
#define IPMI_NM_NO_READ_TRIG 0x02
|
||||
#define IPMI_NM_RESET_TRIGGER 0x03
|
||||
#define IPMI_NM_BOOT_TRIGGER 0x04
|
||||
|
||||
/* Policy Exception Actions flags */
|
||||
#define IPMI_NM_POLICY_ALERT 0x01
|
||||
#define IPMI_NM_POLICY_SHUT 0x02
|
||||
|
||||
/* Power Correction codes for Policy action */
|
||||
#define IPMI_NM_PWR_AUTO_CORR 0x00
|
||||
#define IPMI_NM_PWR_SOFT_CORR 0x01
|
||||
#define IPMI_NM_PWR_AGGR_CORR 0x02
|
||||
|
||||
/* Set Threshold message size */
|
||||
#define IPMI_NM_SET_THRESH_LEN 12
|
||||
|
||||
/* Number of Suspend Periods */
|
||||
#define IPMI_NM_SUSPEND_PERIOD_MAX 5
|
||||
|
||||
struct dcmi_cmd {
|
||||
uint16_t val;
|
||||
@ -82,7 +129,7 @@ struct power_reading {
|
||||
uint8_t state;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* make a struct for the return from the capabilites command */
|
||||
/* make a struct for the return from the capabilities command */
|
||||
struct capabilities {
|
||||
uint8_t grp_id; /* first byte: Group Extension ID */
|
||||
uint16_t conformance;
|
||||
@ -126,4 +173,98 @@ struct thermal_limit {
|
||||
|
||||
int ipmi_dcmi_main(struct ipmi_intf * intf, int argc, char ** argv);
|
||||
|
||||
/* Node Manager discover command */
|
||||
struct nm_discover {
|
||||
uint8_t intel_id[3]; /* Always returns 000157 */
|
||||
uint8_t nm_version;
|
||||
uint8_t ipmi_version;
|
||||
uint8_t patch_version;
|
||||
uint8_t major_rev;
|
||||
uint8_t minor_rev;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Node Manager get capabilities command */
|
||||
struct nm_capability {
|
||||
uint8_t intel_id[3];
|
||||
uint8_t max_settings;
|
||||
uint16_t max_value; /* max power/thermal/time after reset */
|
||||
uint16_t min_value; /* min "" */
|
||||
uint32_t min_corr; /* min correction time inmillesecs */
|
||||
uint32_t max_corr;
|
||||
uint16_t min_stats;
|
||||
uint16_t max_stats;
|
||||
uint8_t scope;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Node Manager get statistics command */
|
||||
struct nm_statistics {
|
||||
uint8_t intel_id[3];
|
||||
uint16_t curr_value;
|
||||
uint16_t min_value;
|
||||
uint16_t max_value;
|
||||
uint16_t ave_value;
|
||||
uint32_t time_stamp;
|
||||
uint32_t stat_period;
|
||||
uint8_t id_state;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Node Manager set policy */
|
||||
struct nm_policy {
|
||||
uint8_t intel_id[3];
|
||||
uint8_t domain; /* 0:3 are domain, 4 = Policy enabled */
|
||||
uint8_t policy_id;
|
||||
uint8_t policy_type; /* 0:3 trigger type 4 = action 5:6 correction */
|
||||
uint8_t policy_exception; /* exception actions */
|
||||
uint16_t policy_limits;
|
||||
uint32_t corr_time;
|
||||
uint16_t trigger_limit;
|
||||
uint16_t stats_period;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Node Maager get policy */
|
||||
struct nm_get_policy {
|
||||
uint8_t intel_id[3];
|
||||
uint8_t domain; /* 0:3 are domain, 4 = Policy enabled */
|
||||
uint8_t policy_type; /* 0:3 trigger type 4 = action 5:6 correction */
|
||||
uint8_t policy_exception; /* exception actions */
|
||||
uint16_t policy_limits;
|
||||
uint32_t corr_time;
|
||||
uint16_t trigger_limit;
|
||||
uint16_t stats_period;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Node Manager set alert destination */
|
||||
struct nm_set_alert {
|
||||
uint8_t intel_id[3];
|
||||
uint8_t chan; /* 0:3 BMC chan, 4:6 reserved, bit 7=0 register alert receiver =1 invalidate */
|
||||
uint8_t dest; /* lan destination */
|
||||
uint8_t string; /* alert string selector */
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Node Manager set alert threshold */
|
||||
struct nm_thresh {
|
||||
uint8_t intel_id[3];
|
||||
uint8_t domain; /* 0:3 are domain, 4 = Policy enabled */
|
||||
uint8_t policy_id;
|
||||
uint8_t count;
|
||||
uint16_t thresholds[3];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Node Manager suspend period struct */
|
||||
struct nm_period {
|
||||
uint8_t start;
|
||||
uint8_t stop;
|
||||
uint8_t repeat;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Node Manager set suspend period */
|
||||
struct nm_suspend {
|
||||
uint8_t intel_id[3];
|
||||
uint8_t domain; /* 0:3 are domain, 4 = Policy enabled */
|
||||
uint8_t policy_id;
|
||||
uint8_t count;
|
||||
struct nm_period period[IPMI_NM_SUSPEND_PERIOD_MAX];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
int ipmi_nm_main(struct ipmi_intf * intf, int argc, char ** argv);
|
||||
#endif /*IPMI_DCMI_H*/
|
@ -72,6 +72,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#define IDRAC_11G 1
|
||||
#define IDRAC_12G 2
|
||||
#define IDRAC_13G 3
|
||||
// Return Error code for license
|
||||
#define LICENSE_NOT_SUPPORTED 0x6F
|
||||
#define VFL_NOT_LICENSED 0x33
|
||||
@ -184,6 +185,9 @@ typedef struct _lcd_mode
|
||||
#define IMC_IDRAC_12G_MONOLITHIC (uint8_t) (0x10)
|
||||
#define IMC_IDRAC_12G_MODULAR (uint8_t) (0x11)
|
||||
|
||||
#define IMC_IDRAC_13G_MONOLITHIC (uint8_t) (0x20)
|
||||
#define IMC_IDRAC_13G_MODULAR (uint8_t) (0x21)
|
||||
#define IMC_IDRAC_13G_DCS (uint8_t) (0x22)
|
||||
|
||||
|
||||
typedef struct
|
@ -36,6 +36,7 @@
|
||||
#include <inttypes.h>
|
||||
#include <ipmitool/ipmi.h>
|
||||
#include <ipmitool/ipmi_sdr.h>
|
||||
#include <ipmitool/ipmi_time.h>
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
@ -63,6 +64,8 @@ enum {
|
||||
struct fru_info {
|
||||
uint16_t size;
|
||||
uint8_t access:1;
|
||||
uint8_t max_read_size;
|
||||
uint8_t max_write_size;
|
||||
};
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
@ -70,13 +73,16 @@ struct fru_info {
|
||||
#endif
|
||||
struct fru_header {
|
||||
uint8_t version;
|
||||
struct {
|
||||
uint8_t internal;
|
||||
uint8_t chassis;
|
||||
uint8_t board;
|
||||
uint8_t product;
|
||||
uint8_t multi;
|
||||
} offset;
|
||||
union {
|
||||
struct {
|
||||
uint8_t internal;
|
||||
uint8_t chassis;
|
||||
uint8_t board;
|
||||
uint8_t product;
|
||||
uint8_t multi;
|
||||
} offset;
|
||||
uint8_t offsets[5];
|
||||
};
|
||||
uint8_t pad;
|
||||
uint8_t checksum;
|
||||
}ATTRIBUTE_PACKING;
|
||||
@ -292,22 +298,24 @@ struct fru_picmgext_link_desc {
|
||||
unsigned int desig_channel:6;
|
||||
unsigned int desig_if:2;
|
||||
unsigned int desig_port:4;
|
||||
#define FRU_PICMGEXT_LINK_TYPE_BASE 0x01
|
||||
#define FRU_PICMGEXT_LINK_TYPE_BASE 0x01
|
||||
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_ETHERNET 0x02
|
||||
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_INFINIBAND 0x03
|
||||
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_STAR 0x04
|
||||
#define FRU_PICMGEXT_LINK_TYPE_PCIE 0x05
|
||||
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_STAR 0x04
|
||||
#define FRU_PICMGEXT_LINK_TYPE_PCIE 0x05
|
||||
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_ETHERNET_10GBD 0x32
|
||||
unsigned int type:8;
|
||||
unsigned int ext:4;
|
||||
unsigned int grouping:8;
|
||||
#else
|
||||
unsigned int grouping:8;
|
||||
unsigned int ext:4;
|
||||
#define FRU_PICMGEXT_LINK_TYPE_BASE 0x01
|
||||
#define FRU_PICMGEXT_LINK_TYPE_BASE 0x01
|
||||
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_ETHERNET 0x02
|
||||
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_INFINIBAND 0x03
|
||||
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_STAR 0x04
|
||||
#define FRU_PICMGEXT_LINK_TYPE_PCIE 0x05
|
||||
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_STAR 0x04
|
||||
#define FRU_PICMGEXT_LINK_TYPE_PCIE 0x05
|
||||
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_ETHERNET_10GBD 0x32
|
||||
unsigned int type:8;
|
||||
unsigned int desig_port:4;
|
||||
unsigned int desig_if:2;
|
||||
@ -584,7 +592,22 @@ struct fru_picmgext_amc_link_desc_record {
|
||||
#endif
|
||||
|
||||
/* FRU Board manufacturing date */
|
||||
static const uint64_t secs_from_1970_1996 = 820454400;
|
||||
#define FRU_BOARD_DATE_UNSPEC 0 /* IPMI FRU Information Storage Definition
|
||||
v1.0 rev 1.3, Table 11-1 */
|
||||
static inline time_t ipmi_fru2time_t(void *mfg_date) {
|
||||
const uint64_t secs_from_1970_1996 = 820454400;
|
||||
uint32_t fru_ts = ipmi24toh(mfg_date);
|
||||
time_t ts;
|
||||
|
||||
if (FRU_BOARD_DATE_UNSPEC == fru_ts) {
|
||||
ts = IPMI_TIME_UNSPECIFIED;
|
||||
}
|
||||
else {
|
||||
ts = fru_ts * 60 + secs_from_1970_1996;
|
||||
}
|
||||
|
||||
return ts;
|
||||
}
|
||||
static const char * chassis_type_desc[] __attribute__((unused)) = {
|
||||
"Unspecified", "Other", "Unknown",
|
||||
"Desktop", "Low Profile Desktop", "Pizza Box",
|
||||
@ -598,7 +621,15 @@ static const char * chassis_type_desc[] __attribute__((unused)) = {
|
||||
"AdvancedTCA", "Blade", "Blade Enclosure"
|
||||
};
|
||||
|
||||
typedef struct ipmi_fru_bloc {
|
||||
struct ipmi_fru_bloc * next;
|
||||
uint16_t start;
|
||||
uint16_t size;
|
||||
uint8_t blocId[32];
|
||||
} t_ipmi_fru_bloc;
|
||||
|
||||
int ipmi_fru_main(struct ipmi_intf *intf, int argc, char **argv);
|
||||
int ipmi_fru_print(struct ipmi_intf *intf, struct sdr_record_fru_locator *fru);
|
||||
char *get_fru_area_str(uint8_t *data, uint32_t *offset);
|
||||
|
||||
#endif /* IPMI_FRU_H */
|
243
include/ipmitool/ipmi_fwum.h
Normal file
243
include/ipmitool/ipmi_fwum.h
Normal file
@ -0,0 +1,243 @@
|
||||
/*
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Sun Microsystems, Inc. or the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
* SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
* SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
* OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
#ifndef IPMI_KFWUM_H
|
||||
# define IPMI_KFWUM_H
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <ipmitool/ipmi.h>
|
||||
|
||||
/* KFWUM Version */
|
||||
# define VER_MAJOR 1
|
||||
# define VER_MINOR 3
|
||||
/* Minimum size (IPMB/IOL/old protocol) */
|
||||
# define KFWUM_SMALL_BUFFER 32
|
||||
/* Maximum size on KCS interface */
|
||||
# define KFWUM_BIG_BUFFER 32
|
||||
# define MAX_BUFFER_SIZE 1024*16
|
||||
|
||||
/* 3 address + 1 size + 1 checksum + 1 command */
|
||||
# define KFWUM_OLD_CMD_OVERHEAD 6
|
||||
/* 1 sequence + 1 size + 1 checksum + 1 command */
|
||||
# define KFWUM_NEW_CMD_OVERHEAD 4
|
||||
# define KFWUM_PAGE_SIZE 256
|
||||
|
||||
# define FWUM_SAVE_FIRMWARE_NO_RESPONSE_LIMIT 6
|
||||
# define FWUM_MAX_UPLOAD_RETRY 6
|
||||
|
||||
# define TRACE_LOG_CHUNK_COUNT 7
|
||||
# define TRACE_LOG_CHUNK_SIZE 7
|
||||
# define TRACE_LOG_ATT_COUNT 3
|
||||
|
||||
# define IN_FIRMWARE_INFO_OFFSET_LOCATION 0x5a0
|
||||
# define IN_FIRMWARE_INFO_SIZE 20
|
||||
# define IN_FIRMWARE_INFO_OFFSET_FILE_SIZE 0
|
||||
# define IN_FIRMWARE_INFO_OFFSET_CHECKSUM 4
|
||||
# define IN_FIRMWARE_INFO_OFFSET_BOARD_ID 6
|
||||
# define IN_FIRMWARE_INFO_OFFSET_DEVICE_ID 8
|
||||
# define IN_FIRMWARE_INFO_OFFSET_TABLE_VERSION 9
|
||||
# define IN_FIRMWARE_INFO_OFFSET_IMPLEMENT_REV 10
|
||||
# define IN_FIRMWARE_INFO_OFFSET_VER_MAJOROR 11
|
||||
# define IN_FIRMWARE_INFO_OFFSET_VER_MINORSUB 12
|
||||
# define IN_FIRMWARE_INFO_OFFSET_SDR_REV 13
|
||||
# define IN_FIRMWARE_INFO_OFFSET_IANA0 14
|
||||
# define IN_FIRMWARE_INFO_OFFSET_IANA1 15
|
||||
# define IN_FIRMWARE_INFO_OFFSET_IANA2 16
|
||||
|
||||
# define KWUM_GET_BYTE_AT_OFFSET(pBuffer,os) pBuffer[os]
|
||||
|
||||
int ipmi_fwum_main(struct ipmi_intf *, int, char **);
|
||||
|
||||
typedef enum eKFWUM_BoardList
|
||||
{
|
||||
KFWUM_BOARD_KONTRON_UNKNOWN = 0,
|
||||
KFWUM_BOARD_KONTRON_5002 = 5002,
|
||||
} tKFWUM_BoardList;
|
||||
|
||||
typedef struct sKFWUM_BoardInfo
|
||||
{
|
||||
tKFWUM_BoardList boardId;
|
||||
IPMI_OEM iana;
|
||||
} tKFWUM_BoardInfo;
|
||||
|
||||
typedef enum eKFWUM_DownloadType
|
||||
{
|
||||
KFWUM_DOWNLOAD_TYPE_ADDRESS = 0,
|
||||
KFWUM_DOWNLOAD_TYPE_SEQUENCE,
|
||||
} tKFWUM_DownloadType;
|
||||
|
||||
typedef enum eKFWUM_DownloadBuffferType
|
||||
{
|
||||
KFWUM_SMALL_BUFFER_TYPE = 0,
|
||||
KFUMW_BIG_BUFFER_TYPE
|
||||
} tKFWUM_DownloadBuffferType;
|
||||
|
||||
typedef struct sKFWUM_InFirmwareInfo
|
||||
{
|
||||
unsigned long fileSize;
|
||||
unsigned short checksum;
|
||||
unsigned short sumToRemoveFromChecksum;
|
||||
/* Since the checksum is added in the bin
|
||||
* after the checksum is calculated, we
|
||||
* need to remove the each byte value. This
|
||||
* byte will contain the addition of both bytes
|
||||
*/
|
||||
tKFWUM_BoardList boardId;
|
||||
unsigned char deviceId;
|
||||
unsigned char tableVers;
|
||||
unsigned char implRev;
|
||||
unsigned char versMajor;
|
||||
unsigned char versMinor;
|
||||
unsigned char versSubMinor;
|
||||
unsigned char sdrRev;
|
||||
IPMI_OEM iana;
|
||||
} tKFWUM_InFirmwareInfo;
|
||||
|
||||
typedef struct sKFWUM_SaveFirmwareInfo
|
||||
{
|
||||
tKFWUM_DownloadType downloadType;
|
||||
unsigned char bufferSize;
|
||||
unsigned char overheadSize;
|
||||
} tKFWUM_SaveFirmwareInfo;
|
||||
|
||||
/* COMMANDS */
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
# endif
|
||||
struct KfwumGetInfoResp {
|
||||
unsigned char protocolRevision;
|
||||
unsigned char controllerDeviceId;
|
||||
struct {
|
||||
unsigned char mode:1;
|
||||
unsigned char seqAdd:1;
|
||||
unsigned char res : 6;
|
||||
} byte;
|
||||
unsigned char firmRev1;
|
||||
unsigned char firmRev2;
|
||||
unsigned char numBank;
|
||||
} ATTRIBUTE_PACKING;
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
# endif
|
||||
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
# endif
|
||||
struct KfwumGetStatusResp {
|
||||
unsigned char bankState;
|
||||
unsigned char firmLengthLSB;
|
||||
unsigned char firmLengthMid;
|
||||
unsigned char firmLengthMSB;
|
||||
unsigned char firmRev1;
|
||||
unsigned char firmRev2;
|
||||
unsigned char firmRev3;
|
||||
} ATTRIBUTE_PACKING;
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
# endif
|
||||
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
# endif
|
||||
struct KfwumManualRollbackReq {
|
||||
unsigned char type;
|
||||
} ATTRIBUTE_PACKING;
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
# endif
|
||||
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
# endif
|
||||
struct KfwumStartFirmwareDownloadReq {
|
||||
unsigned char lengthLSB;
|
||||
unsigned char lengthMid;
|
||||
unsigned char lengthMSB;
|
||||
unsigned char paddingLSB;
|
||||
unsigned char paddingMSB;
|
||||
unsigned char useSequence;
|
||||
} ATTRIBUTE_PACKING;
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
# endif
|
||||
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
# endif
|
||||
struct KfwumStartFirmwareDownloadResp {
|
||||
unsigned char bank;
|
||||
} ATTRIBUTE_PACKING;
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
# endif
|
||||
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
# endif
|
||||
struct KfwumSaveFirmwareAddressReq
|
||||
{
|
||||
unsigned char addressLSB;
|
||||
unsigned char addressMid;
|
||||
unsigned char addressMSB;
|
||||
unsigned char numBytes;
|
||||
unsigned char txBuf[KFWUM_SMALL_BUFFER-KFWUM_OLD_CMD_OVERHEAD];
|
||||
} ATTRIBUTE_PACKING;
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
# endif
|
||||
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
# endif
|
||||
struct KfwumSaveFirmwareSequenceReq
|
||||
{
|
||||
unsigned char sequenceNumber;
|
||||
unsigned char txBuf[KFWUM_BIG_BUFFER];
|
||||
} ATTRIBUTE_PACKING;
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
# endif
|
||||
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
# endif
|
||||
struct KfwumFinishFirmwareDownloadReq {
|
||||
unsigned char versionMaj;
|
||||
unsigned char versionMinSub;
|
||||
unsigned char versionSdr;
|
||||
unsigned char reserved;
|
||||
} ATTRIBUTE_PACKING;
|
||||
# ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
# endif
|
||||
|
||||
#endif /* IPMI_KFWUM_H */
|
809
include/ipmitool/ipmi_hpmfwupg.h
Normal file
809
include/ipmitool/ipmi_hpmfwupg.h
Normal file
@ -0,0 +1,809 @@
|
||||
/*
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Sun Microsystems, Inc. or the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
* SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
* SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
* OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
#ifndef IPMI_HPMFWUPG_H
|
||||
#define IPMI_HPMFWUPG_H
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <ipmitool/ipmi.h>
|
||||
|
||||
int ipmi_hpmfwupg_main(struct ipmi_intf *, int, char **);
|
||||
|
||||
/* Agent version */
|
||||
#define HPMFWUPG_VERSION_MAJOR 1
|
||||
#define HPMFWUPG_VERSION_MINOR 0
|
||||
#define HPMFWUPG_VERSION_SUBMINOR 9
|
||||
|
||||
/* HPM.1 FIRMWARE UPGRADE COMMANDS (part of PICMG) */
|
||||
#define HPMFWUPG_GET_TARGET_UPG_CAPABILITIES 0x2E
|
||||
#define HPMFWUPG_GET_COMPONENT_PROPERTIES 0x2F
|
||||
#define HPMFWUPG_ABORT_UPGRADE 0x30
|
||||
#define HPMFWUPG_INITIATE_UPGRADE_ACTION 0x31
|
||||
#define HPMFWUPG_UPLOAD_FIRMWARE_BLOCK 0x32
|
||||
#define HPMFWUPG_FINISH_FIRMWARE_UPLOAD 0x33
|
||||
#define HPMFWUPG_GET_UPGRADE_STATUS 0x34
|
||||
#define HPMFWUPG_ACTIVATE_FIRMWARE 0x35
|
||||
#define HPMFWUPG_QUERY_SELFTEST_RESULT 0x36
|
||||
#define HPMFWUPG_QUERY_ROLLBACK_STATUS 0x37
|
||||
#define HPMFWUPG_MANUAL_FIRMWARE_ROLLBACK 0x38
|
||||
|
||||
/* HPM.1 SPECIFIC COMPLETION CODES */
|
||||
#define HPMFWUPG_ROLLBACK_COMPLETED 0x00
|
||||
#define HPMFWUPG_COMMAND_IN_PROGRESS 0x80
|
||||
#define HPMFWUPG_NOT_SUPPORTED 0x81
|
||||
#define HPMFWUPG_SIZE_MISMATCH 0x81
|
||||
#define HPMFWUPG_ROLLBACK_FAILURE 0x81
|
||||
#define HPMFWUPG_INV_COMP_MASK 0x81
|
||||
#define HPMFWUPG__ABORT_FAILURE 0x81
|
||||
#define HPMFWUPG_INV_COMP_ID 0x82
|
||||
#define HPMFWUPG_INT_CHECKSUM_ERROR 0x82
|
||||
#define HPMFWUPG_INV_UPLOAD_MODE 0x82
|
||||
#define HPMFWUPG_ROLLBACK_OVERRIDE 0x82
|
||||
#define HPMFWUPG_INV_COMP_PROP 0x83
|
||||
#define HPMFWUPG_FW_MISMATCH 0x83
|
||||
#define HPMFWUPG_ROLLBACK_DENIED 0x83
|
||||
|
||||
/*
|
||||
* This error code is used as a temporary PATCH to
|
||||
* the latest Open ipmi driver. This PATCH
|
||||
* will be removed once a new Open IPMI driver is released.
|
||||
* (Buggy version = 39)
|
||||
*/
|
||||
#define ENABLE_OPENIPMI_V39_PATCH
|
||||
|
||||
#ifdef ENABLE_OPENIPMI_V39_PATCH
|
||||
# define RETRY_COUNT_MAX 3
|
||||
static int errorCount;
|
||||
# define HPMFWUPG_IS_RETRYABLE(error) \
|
||||
((((error==0x83)||(error==0x82)||(error==0x80)) && (errorCount++<RETRY_COUNT_MAX))?TRUE:FALSE)
|
||||
#else
|
||||
# define HPMFWUPG_IS_RETRYABLE(error) FALSE
|
||||
#endif
|
||||
|
||||
/* HPM FIRMWARE UPGRADE GENERAL DEFINITIONS */
|
||||
#define HPMFWUPG_PICMG_IDENTIFIER 0
|
||||
#define HPMFWUPG_VERSION_SIZE 6
|
||||
#define HPMFWUPG_DESC_STRING_LENGTH 12
|
||||
#define HPMFWUPG_DEFAULT_INACCESS_TIMEOUT 60 /* sec */
|
||||
#define HPMFWUPG_DEFAULT_UPGRADE_TIMEOUT 60 /* sec */
|
||||
#define HPMFWUPG_MD5_SIGNATURE_LENGTH 16
|
||||
|
||||
/* Component IDs */
|
||||
typedef enum eHpmfwupgComponentId {
|
||||
HPMFWUPG_COMPONENT_ID_0 = 0,
|
||||
HPMFWUPG_COMPONENT_ID_1,
|
||||
HPMFWUPG_COMPONENT_ID_2,
|
||||
HPMFWUPG_COMPONENT_ID_3,
|
||||
HPMFWUPG_COMPONENT_ID_4,
|
||||
HPMFWUPG_COMPONENT_ID_5,
|
||||
HPMFWUPG_COMPONENT_ID_6,
|
||||
HPMFWUPG_COMPONENT_ID_7,
|
||||
HPMFWUPG_COMPONENT_ID_MAX
|
||||
} tHpmfwupgComponentId;
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgComponentBitMask {
|
||||
union {
|
||||
unsigned char byte;
|
||||
struct {
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
unsigned char component7 : 1;
|
||||
unsigned char component6 : 1;
|
||||
unsigned char component5 : 1;
|
||||
unsigned char component4 : 1;
|
||||
unsigned char component3 : 1;
|
||||
unsigned char component2 : 1;
|
||||
unsigned char component1 : 1;
|
||||
unsigned char component0 : 1;
|
||||
#else
|
||||
unsigned char component0 : 1;
|
||||
unsigned char component1 : 1;
|
||||
unsigned char component2 : 1;
|
||||
unsigned char component3 : 1;
|
||||
unsigned char component4 : 1;
|
||||
unsigned char component5 : 1;
|
||||
unsigned char component6 : 1;
|
||||
unsigned char component7 : 1;
|
||||
#endif
|
||||
} ATTRIBUTE_PACKING bitField;
|
||||
} ATTRIBUTE_PACKING ComponentBits;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
|
||||
static const int HPMFWUPG_SUCCESS = 0;
|
||||
static const int HPMFWUPG_ERROR = -1;
|
||||
/* Upload firmware specific error codes */
|
||||
static const int HPMFWUPG_UPLOAD_BLOCK_LENGTH = 1;
|
||||
static const int HPMFWUPG_UPLOAD_RETRY = 2;
|
||||
|
||||
|
||||
/* TARGET UPGRADE CAPABILITIES DEFINITIONS */
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetTargetUpgCapabilitiesReq {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetTargetUpgCapabilitiesResp {
|
||||
unsigned char picmgId;
|
||||
unsigned char hpmVersion;
|
||||
union {
|
||||
unsigned char byte;
|
||||
struct {
|
||||
#if WORDS_BIGENDIAN
|
||||
unsigned char fwUpgUndesirable : 1;
|
||||
unsigned char autRollbackOverride : 1;
|
||||
unsigned char ipmcDegradedDurinUpg: 1;
|
||||
unsigned char deferActivation : 1;
|
||||
unsigned char servAffectDuringUpg : 1;
|
||||
unsigned char manualRollback : 1;
|
||||
unsigned char autRollback : 1;
|
||||
unsigned char ipmcSelftestCap : 1;
|
||||
#else
|
||||
unsigned char ipmcSelftestCap : 1;
|
||||
unsigned char autRollback : 1;
|
||||
unsigned char manualRollback : 1;
|
||||
unsigned char servAffectDuringUpg : 1;
|
||||
unsigned char deferActivation : 1;
|
||||
unsigned char ipmcDegradedDurinUpg: 1;
|
||||
unsigned char autRollbackOverride : 1;
|
||||
unsigned char fwUpgUndesirable : 1;
|
||||
#endif
|
||||
} ATTRIBUTE_PACKING bitField;
|
||||
} ATTRIBUTE_PACKING GlobalCapabilities;
|
||||
unsigned char upgradeTimeout;
|
||||
unsigned char selftestTimeout;
|
||||
unsigned char rollbackTimeout;
|
||||
unsigned char inaccessTimeout;
|
||||
struct HpmfwupgComponentBitMask componentsPresent;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetTargetUpgCapabilitiesCtx {
|
||||
struct HpmfwupgGetTargetUpgCapabilitiesReq req;
|
||||
struct HpmfwupgGetTargetUpgCapabilitiesResp resp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* COMPONENT PROPERTIES DEFINITIONS */
|
||||
typedef enum eHpmfwupgCompPropertiesSelect {
|
||||
HPMFWUPG_COMP_GEN_PROPERTIES = 0,
|
||||
HPMFWUPG_COMP_CURRENT_VERSION,
|
||||
HPMFWUPG_COMP_DESCRIPTION_STRING,
|
||||
HPMFWUPG_COMP_ROLLBACK_FIRMWARE_VERSION,
|
||||
HPMFWUPG_COMP_DEFERRED_FIRMWARE_VERSION,
|
||||
HPMFWUPG_COMP_RESERVED,
|
||||
HPMFWUPG_COMP_OEM_PROPERTIES = 192
|
||||
} tHpmfwupgCompPropertiesSelect;
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetComponentPropertiesReq {
|
||||
unsigned char picmgId;
|
||||
unsigned char componentId;
|
||||
unsigned char selector;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetGeneralPropResp {
|
||||
unsigned char picmgId;
|
||||
union {
|
||||
unsigned char byte;
|
||||
struct {
|
||||
#if WORDS_BIGENDIAN
|
||||
unsigned char reserved : 2;
|
||||
unsigned char payloadColdReset : 1;
|
||||
unsigned char deferredActivation : 1;
|
||||
unsigned char comparisonSupport : 1;
|
||||
unsigned char preparationSupport : 1;
|
||||
unsigned char rollbackBackup : 2;
|
||||
#else
|
||||
unsigned char rollbackBackup : 2;
|
||||
unsigned char preparationSupport : 1;
|
||||
unsigned char comparisonSupport : 1;
|
||||
unsigned char deferredActivation : 1;
|
||||
unsigned char payloadColdReset : 1;
|
||||
unsigned char reserved : 2;
|
||||
#endif
|
||||
} ATTRIBUTE_PACKING bitfield;
|
||||
} ATTRIBUTE_PACKING GeneralCompProperties;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetCurrentVersionResp {
|
||||
unsigned char picmgId;
|
||||
unsigned char currentVersion[HPMFWUPG_VERSION_SIZE];
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetDescStringResp {
|
||||
unsigned char picmgId;
|
||||
char descString[HPMFWUPG_DESC_STRING_LENGTH];
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetRollbackFwVersionResp {
|
||||
unsigned char picmgId;
|
||||
unsigned char rollbackFwVersion[HPMFWUPG_VERSION_SIZE];
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetDeferredFwVersionResp {
|
||||
unsigned char picmgId;
|
||||
unsigned char deferredFwVersion[HPMFWUPG_VERSION_SIZE];
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* GetComponentProperties - OEM properties (192) */
|
||||
#define HPMFWUPG_OEM_LENGTH 4
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetOemProperties {
|
||||
unsigned char picmgId;
|
||||
unsigned char oemRspData[HPMFWUPG_OEM_LENGTH];
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetComponentPropertiesResp {
|
||||
union {
|
||||
struct HpmfwupgGetGeneralPropResp generalPropResp;
|
||||
struct HpmfwupgGetCurrentVersionResp currentVersionResp;
|
||||
struct HpmfwupgGetDescStringResp descStringResp;
|
||||
struct HpmfwupgGetRollbackFwVersionResp rollbackFwVersionResp;
|
||||
struct HpmfwupgGetDeferredFwVersionResp deferredFwVersionResp;
|
||||
struct HpmfwupgGetOemProperties oemProperties;
|
||||
} ATTRIBUTE_PACKING Response;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetComponentPropertiesCtx {
|
||||
struct HpmfwupgGetComponentPropertiesReq req;
|
||||
struct HpmfwupgGetComponentPropertiesResp resp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* ABORT UPGRADE DEFINITIONS */
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgAbortUpgradeReq {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgAbortUpgradeResp {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgAbortUpgradeCtx {
|
||||
struct HpmfwupgAbortUpgradeReq req;
|
||||
struct HpmfwupgAbortUpgradeResp resp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* UPGRADE ACTIONS DEFINITIONS */
|
||||
typedef enum eHpmfwupgUpgradeAction {
|
||||
HPMFWUPG_UPGRADE_ACTION_BACKUP = 0,
|
||||
HPMFWUPG_UPGRADE_ACTION_PREPARE,
|
||||
HPMFWUPG_UPGRADE_ACTION_UPGRADE,
|
||||
HPMFWUPG_UPGRADE_ACTION_COMPARE,
|
||||
HPMFWUPG_UPGRADE_ACTION_INVALID = 0xff
|
||||
} tHpmfwupgUpgradeAction;
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgInitiateUpgradeActionReq {
|
||||
unsigned char picmgId;
|
||||
struct HpmfwupgComponentBitMask componentsMask;
|
||||
unsigned char upgradeAction;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgInitiateUpgradeActionResp {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgInitiateUpgradeActionCtx {
|
||||
struct HpmfwupgInitiateUpgradeActionReq req;
|
||||
struct HpmfwupgInitiateUpgradeActionResp resp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* UPLOAD FIRMWARE BLOCK DEFINITIONS */
|
||||
#define HPMFWUPG_SEND_DATA_COUNT_KCS 30
|
||||
#define HPMFWUPG_SEND_DATA_COUNT_LAN 25
|
||||
#define HPMFWUPG_SEND_DATA_COUNT_IPMB 26
|
||||
#define HPMFWUPG_SEND_DATA_COUNT_IPMBL 26
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgUploadFirmwareBlockReq {
|
||||
unsigned char picmgId;
|
||||
unsigned char blockNumber;
|
||||
unsigned char data[];
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgUploadFirmwareBlockResp {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgUploadFirmwareBlockCtx {
|
||||
struct HpmfwupgUploadFirmwareBlockReq * req;
|
||||
struct HpmfwupgUploadFirmwareBlockResp resp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* FINISH FIRMWARE UPLOAD DEFINITIONS */
|
||||
#define HPMFWUPG_IMAGE_SIZE_BYTE_COUNT 4
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgFinishFirmwareUploadReq {
|
||||
unsigned char picmgId;
|
||||
unsigned char componentId;
|
||||
unsigned char imageLength[HPMFWUPG_IMAGE_SIZE_BYTE_COUNT];
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgFinishFirmwareUploadResp {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgFinishFirmwareUploadCtx {
|
||||
struct HpmfwupgFinishFirmwareUploadReq req;
|
||||
struct HpmfwupgFinishFirmwareUploadResp resp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* ACTIVATE FW DEFINITIONS */
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgActivateFirmwareReq {
|
||||
unsigned char picmgId;
|
||||
unsigned char rollback_override;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgActivateFirmwareResp {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgActivateFirmwareCtx {
|
||||
struct HpmfwupgActivateFirmwareReq req;
|
||||
struct HpmfwupgActivateFirmwareResp resp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* GET UPGRADE STATUS DEFINITIONS */
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetUpgradeStatusReq {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetUpgradeStatusResp {
|
||||
unsigned char picmgId;
|
||||
unsigned char cmdInProcess;
|
||||
unsigned char lastCmdCompCode;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgGetUpgradeStatusCtx {
|
||||
struct HpmfwupgGetUpgradeStatusReq req;
|
||||
struct HpmfwupgGetUpgradeStatusResp resp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* MANUAL FW ROLLBACK DEFINITIONS */
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgManualFirmwareRollbackReq {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgManualFirmwareRollbackResp {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
struct HpmfwupgManualFirmwareRollbackCtx {
|
||||
struct HpmfwupgManualFirmwareRollbackReq req;
|
||||
struct HpmfwupgManualFirmwareRollbackResp resp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* QUERY ROLLBACK STATUS DEFINITIONS */
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgQueryRollbackStatusReq {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgQueryRollbackStatusResp {
|
||||
unsigned char picmgId;
|
||||
struct HpmfwupgComponentBitMask rollbackComp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgQueryRollbackStatusCtx {
|
||||
struct HpmfwupgQueryRollbackStatusReq req;
|
||||
struct HpmfwupgQueryRollbackStatusResp resp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* QUERY SELF TEST RESULT DEFINITIONS */
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgQuerySelftestResultReq {
|
||||
unsigned char picmgId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgQuerySelftestResultResp {
|
||||
unsigned char picmgId;
|
||||
unsigned char result1;
|
||||
unsigned char result2;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgQuerySelftestResultCtx {
|
||||
struct HpmfwupgQuerySelftestResultReq req;
|
||||
struct HpmfwupgQuerySelftestResultResp resp;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* HPM.1 IMAGE DEFINITIONS */
|
||||
#define HPMFWUPG_HEADER_SIGNATURE_LENGTH 8
|
||||
#define HPMFWUPG_MANUFATURER_ID_LENGTH 3
|
||||
#define HPMFWUPG_PRODUCT_ID_LENGTH 2
|
||||
#define HPMFWUPG_TIME_LENGTH 4
|
||||
#define HPMFWUPG_TIMEOUT_LENGTH 1
|
||||
#define HPMFWUPG_COMP_REVISION_LENGTH 2
|
||||
#define HPMFWUPG_FIRM_REVISION_LENGTH 6
|
||||
#define HPMFWUPG_IMAGE_HEADER_VERSION 0
|
||||
#define HPMFWUPG_IMAGE_SIGNATURE "PICMGFWU"
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgImageHeader {
|
||||
char signature[HPMFWUPG_HEADER_SIGNATURE_LENGTH];
|
||||
unsigned char formatVersion;
|
||||
unsigned char deviceId;
|
||||
unsigned char manId[HPMFWUPG_MANUFATURER_ID_LENGTH];
|
||||
unsigned char prodId[HPMFWUPG_PRODUCT_ID_LENGTH];
|
||||
unsigned char time[HPMFWUPG_TIME_LENGTH];
|
||||
union {
|
||||
struct {
|
||||
#if WORDS_BIGENDIAN
|
||||
unsigned char imageSelfTest : 1;
|
||||
unsigned char autRollback : 1;
|
||||
unsigned char manRollback : 1;
|
||||
unsigned char servAffected : 1;
|
||||
unsigned char reserved : 4;
|
||||
#else
|
||||
unsigned char reserved : 4;
|
||||
unsigned char servAffected : 1;
|
||||
unsigned char manRollback : 1;
|
||||
unsigned char autRollback : 1;
|
||||
unsigned char imageSelfTest : 1;
|
||||
#endif
|
||||
} ATTRIBUTE_PACKING bitField;
|
||||
unsigned char byte;
|
||||
}ATTRIBUTE_PACKING imageCapabilities;
|
||||
struct HpmfwupgComponentBitMask components;
|
||||
unsigned char selfTestTimeout;
|
||||
unsigned char rollbackTimeout;
|
||||
unsigned char inaccessTimeout;
|
||||
unsigned char compRevision[HPMFWUPG_COMP_REVISION_LENGTH];
|
||||
unsigned char firmRevision[HPMFWUPG_FIRM_REVISION_LENGTH];
|
||||
unsigned short oemDataLength;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#define HPMFWUPG_DESCRIPTION_LENGTH 21
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgActionRecord {
|
||||
unsigned char actionType;
|
||||
struct HpmfwupgComponentBitMask components;
|
||||
unsigned char checksum;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#define HPMFWUPG_FIRMWARE_SIZE_LENGTH 4
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgFirmwareImage {
|
||||
unsigned char version[HPMFWUPG_FIRM_REVISION_LENGTH];
|
||||
char desc[HPMFWUPG_DESCRIPTION_LENGTH];
|
||||
unsigned char length[HPMFWUPG_FIRMWARE_SIZE_LENGTH];
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(1)
|
||||
#endif
|
||||
struct HpmfwupgUpgradeCtx {
|
||||
struct HpmfwupgComponentBitMask compUpdateMask;
|
||||
unsigned int imageSize;
|
||||
unsigned char* pImageData;
|
||||
unsigned char componentId;
|
||||
struct HpmfwupgGetTargetUpgCapabilitiesResp targetCap;
|
||||
struct HpmfwupgGetGeneralPropResp genCompProp[HPMFWUPG_COMPONENT_ID_MAX];
|
||||
struct ipm_devid_rsp devId;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
# pragma pack(0)
|
||||
#endif
|
||||
|
||||
typedef enum eHpmfwupgActionType {
|
||||
HPMFWUPG_ACTION_BACKUP_COMPONENTS = 0,
|
||||
HPMFWUPG_ACTION_PREPARE_COMPONENTS,
|
||||
HPMFWUPG_ACTION_UPLOAD_FIRMWARE,
|
||||
HPMFWUPG_ACTION_RESERVED = 0xFF
|
||||
} tHpmfwupgActionType;
|
||||
|
||||
/* FUNCTIONS PROTOTYPES */
|
||||
#define HPMFWUPG_MAJORMINOR_VERSION_SIZE 2
|
||||
|
||||
/* Options added for user to check the version and to view both the FILE and
|
||||
* TARGET Version
|
||||
*/
|
||||
#define VIEW_MODE 0x01
|
||||
#define DEBUG_MODE 0x02
|
||||
#define FORCE_MODE 0x04
|
||||
#define COMPARE_MODE 0x08
|
||||
|
||||
typedef struct _VERSIONINFO {
|
||||
unsigned char componentId;
|
||||
unsigned char targetMajor;
|
||||
unsigned char targetMinor;
|
||||
unsigned char targetAux[4];
|
||||
unsigned char rollbackMajor;
|
||||
unsigned char rollbackMinor;
|
||||
unsigned char rollbackAux[4];
|
||||
unsigned char deferredMajor;
|
||||
unsigned char deferredMinor;
|
||||
unsigned char deferredAux[4];
|
||||
unsigned char imageMajor;
|
||||
unsigned char imageMinor;
|
||||
unsigned char imageAux[4];
|
||||
unsigned char coldResetRequired;
|
||||
unsigned char rollbackSupported;
|
||||
unsigned char deferredActivationSupported;
|
||||
char descString[HPMFWUPG_DESC_STRING_LENGTH + 1];
|
||||
}VERSIONINFO, *PVERSIONINFO;
|
||||
|
||||
VERSIONINFO gVersionInfo[HPMFWUPG_COMPONENT_ID_MAX];
|
||||
|
||||
#define TARGET_VER (0x01)
|
||||
#define ROLLBACK_VER (0x02)
|
||||
#define IMAGE_VER (0x04)
|
||||
|
||||
#endif /* IPMI_KFWUM_H */
|
@ -59,37 +59,77 @@ enum LANPLUS_SESSION_STATE {
|
||||
|
||||
|
||||
#define IPMI_AUTHCODE_BUFFER_SIZE 20
|
||||
#define IPMI_SIK_BUFFER_SIZE 20
|
||||
#define IPMI_SIK_BUFFER_SIZE IPMI_MAX_MD_SIZE
|
||||
#define IPMI_KG_BUFFER_SIZE 21 /* key plus null byte */
|
||||
|
||||
struct ipmi_session {
|
||||
uint8_t hostname[64];
|
||||
enum cipher_suite_ids {
|
||||
IPMI_LANPLUS_CIPHER_SUITE_0 = 0,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_1 = 1,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_2 = 2,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_3 = 3,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_4 = 4,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_5 = 5,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_6 = 6,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_7 = 7,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_8 = 8,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_9 = 9,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_10 = 10,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_11 = 11,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_12 = 12,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_13 = 13,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_14 = 14,
|
||||
#ifdef HAVE_CRYPTO_SHA256
|
||||
IPMI_LANPLUS_CIPHER_SUITE_15 = 15,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_16 = 16,
|
||||
IPMI_LANPLUS_CIPHER_SUITE_17 = 17,
|
||||
#endif /* HAVE_CRYPTO_SHA256 */
|
||||
IPMI_LANPLUS_CIPHER_SUITE_RESERVED = 0xff,
|
||||
};
|
||||
|
||||
struct cipher_suite_info {
|
||||
enum cipher_suite_ids cipher_suite_id;
|
||||
uint8_t auth_alg;
|
||||
uint8_t integrity_alg;
|
||||
uint8_t crypt_alg;
|
||||
uint32_t iana;
|
||||
};
|
||||
|
||||
struct ipmi_session_params {
|
||||
char * hostname;
|
||||
uint8_t username[17];
|
||||
uint8_t authcode[IPMI_AUTHCODE_BUFFER_SIZE + 1];
|
||||
uint8_t challenge[16];
|
||||
uint8_t authtype;
|
||||
uint8_t authcode_set[IPMI_AUTHCODE_BUFFER_SIZE + 1];
|
||||
uint8_t authtype_set;
|
||||
uint8_t privlvl;
|
||||
enum cipher_suite_ids cipher_suite_id;
|
||||
char sol_escape_char;
|
||||
int password;
|
||||
int port;
|
||||
int retry;
|
||||
uint32_t timeout;
|
||||
uint8_t kg[IPMI_KG_BUFFER_SIZE]; /* BMC key */
|
||||
uint8_t lookupbit;
|
||||
};
|
||||
|
||||
#define IPMI_AUTHSTATUS_PER_MSG_DISABLED 0x10
|
||||
#define IPMI_AUTHSTATUS_PER_USER_DISABLED 0x08
|
||||
#define IPMI_AUTHSTATUS_NONNULL_USERS_ENABLED 0x04
|
||||
#define IPMI_AUTHSTATUS_NULL_USERS_ENABLED 0x02
|
||||
#define IPMI_AUTHSTATUS_ANONYMOUS_USERS_ENABLED 0x01
|
||||
uint8_t authstatus;
|
||||
uint8_t authextra;
|
||||
uint8_t privlvl;
|
||||
uint8_t cipher_suite_id;
|
||||
char sol_escape_char;
|
||||
int password;
|
||||
int port;
|
||||
int active;
|
||||
int retry;
|
||||
|
||||
struct ipmi_session {
|
||||
int active;
|
||||
uint32_t session_id;
|
||||
uint32_t in_seq;
|
||||
uint32_t out_seq;
|
||||
|
||||
uint8_t authcode[IPMI_AUTHCODE_BUFFER_SIZE + 1];
|
||||
uint8_t challenge[16];
|
||||
uint8_t authtype;
|
||||
uint8_t authstatus;
|
||||
uint8_t authextra;
|
||||
uint32_t timeout;
|
||||
|
||||
struct sockaddr_in addr;
|
||||
struct sockaddr_storage addr;
|
||||
socklen_t addrlen;
|
||||
|
||||
/*
|
||||
@ -106,13 +146,12 @@ struct ipmi_session {
|
||||
uint8_t integrity_alg;
|
||||
uint8_t crypt_alg;
|
||||
uint8_t max_priv_level;
|
||||
uint8_t lookupbit;
|
||||
|
||||
uint32_t console_id;
|
||||
uint32_t bmc_id;
|
||||
|
||||
/*
|
||||
* Values required for RAKP mesages
|
||||
* Values required for RAKP messages
|
||||
*/
|
||||
|
||||
/* Random number generated byt the console */
|
||||
@ -124,10 +163,13 @@ struct ipmi_session {
|
||||
uint8_t requested_role; /* As sent in the RAKP 1 message */
|
||||
uint8_t rakp2_return_code;
|
||||
|
||||
uint8_t sik[IPMI_SIK_BUFFER_SIZE]; /* Session integrity key */
|
||||
uint8_t kg[IPMI_KG_BUFFER_SIZE]; /* BMC key */
|
||||
uint8_t k1[20]; /* Used for Integrity checking? */
|
||||
uint8_t k2[20]; /* First 16 bytes used for AES */
|
||||
uint8_t sik[IPMI_SIK_BUFFER_SIZE]; /* Session integrity key */
|
||||
uint8_t sik_len; /* Session Integrity key length */
|
||||
uint8_t kg[IPMI_KG_BUFFER_SIZE]; /* BMC key */
|
||||
uint8_t k1[IPMI_MAX_MD_SIZE]; /* Used for Integrity checking? */
|
||||
uint8_t k1_len; /* K1 key length */
|
||||
uint8_t k2[IPMI_MAX_MD_SIZE]; /* First 16 bytes used for AES */
|
||||
uint8_t k2_len; /* K2 key length */
|
||||
} v2_data;
|
||||
|
||||
|
||||
@ -167,8 +209,11 @@ struct ipmi_intf {
|
||||
int abort;
|
||||
int noanswer;
|
||||
int picmg_avail;
|
||||
int vita_avail;
|
||||
IPMI_OEM manufacturer_id;
|
||||
int ai_family;
|
||||
|
||||
struct ipmi_session_params ssn_params;
|
||||
struct ipmi_session * session;
|
||||
struct ipmi_oem_handle * oem;
|
||||
struct ipmi_cmd * cmdlist;
|
||||
@ -179,7 +224,8 @@ struct ipmi_intf {
|
||||
uint8_t target_channel;
|
||||
uint32_t transit_addr;
|
||||
uint8_t transit_channel;
|
||||
uint8_t channel_buf_size;
|
||||
uint16_t max_request_data_size;
|
||||
uint16_t max_response_data_size;
|
||||
|
||||
uint8_t devnum;
|
||||
|
||||
@ -187,13 +233,23 @@ struct ipmi_intf {
|
||||
int (*open)(struct ipmi_intf * intf);
|
||||
void (*close)(struct ipmi_intf * intf);
|
||||
struct ipmi_rs *(*sendrecv)(struct ipmi_intf * intf, struct ipmi_rq * req);
|
||||
int (*sendrsp)(struct ipmi_intf * intf, struct ipmi_rs * rsp);
|
||||
struct ipmi_rs *(*recv_sol)(struct ipmi_intf * intf);
|
||||
struct ipmi_rs *(*send_sol)(struct ipmi_intf * intf, struct ipmi_v2_payload * payload);
|
||||
int (*keepalive)(struct ipmi_intf * intf);
|
||||
int (*set_my_addr)(struct ipmi_intf * intf, uint8_t addr);
|
||||
void (*set_max_request_data_size)(struct ipmi_intf * intf, uint16_t size);
|
||||
void (*set_max_response_data_size)(struct ipmi_intf * intf, uint16_t size);
|
||||
};
|
||||
|
||||
/* Interface method wrappers to perform any host-specific actions */
|
||||
struct ipmi_rs *ipmi_sendrecv(struct ipmi_intf * intf, struct ipmi_rq * req);
|
||||
struct ipmi_rs *ipmi_recv_sol(struct ipmi_intf * intf);
|
||||
struct ipmi_rs *ipmi_send_sol(struct ipmi_intf * intf, struct ipmi_v2_payload * payload);
|
||||
int ipmi_keepalive(struct ipmi_intf * intf);
|
||||
int ipmi_set_my_addr(struct ipmi_intf * intf, uint8_t addr);
|
||||
void ipmi_set_max_request_data_size(struct ipmi_intf * intf, uint16_t size);
|
||||
void ipmi_set_max_response_data_size(struct ipmi_intf * intf, uint16_t size);
|
||||
|
||||
struct ipmi_intf * ipmi_intf_load(char * name);
|
||||
void ipmi_intf_print(struct ipmi_intf_support * intflist);
|
||||
|
||||
@ -202,13 +258,20 @@ void ipmi_intf_session_set_username(struct ipmi_intf * intf, char * username);
|
||||
void ipmi_intf_session_set_password(struct ipmi_intf * intf, char * password);
|
||||
void ipmi_intf_session_set_privlvl(struct ipmi_intf * intf, uint8_t privlvl);
|
||||
void ipmi_intf_session_set_lookupbit(struct ipmi_intf * intf, uint8_t lookupbit);
|
||||
void ipmi_intf_session_set_cipher_suite_id(struct ipmi_intf * intf, uint8_t cipher_suite_id);
|
||||
#ifdef IPMI_INTF_LANPLUS
|
||||
void ipmi_intf_session_set_cipher_suite_id(struct ipmi_intf * intf,
|
||||
enum cipher_suite_ids cipher_suite_id);
|
||||
#endif /* IPMI_INTF_LANPLUS */
|
||||
void ipmi_intf_session_set_sol_escape_char(struct ipmi_intf * intf, char sol_escape_char);
|
||||
void ipmi_intf_session_set_kgkey(struct ipmi_intf * intf, char * kgkey);
|
||||
void ipmi_intf_session_set_kgkey(struct ipmi_intf *intf, const uint8_t *kgkey);
|
||||
void ipmi_intf_session_set_port(struct ipmi_intf * intf, int port);
|
||||
void ipmi_intf_session_set_authtype(struct ipmi_intf * intf, uint8_t authtype);
|
||||
void ipmi_intf_session_set_timeout(struct ipmi_intf * intf, uint32_t timeout);
|
||||
void ipmi_intf_session_set_retry(struct ipmi_intf * intf, int retry);
|
||||
void ipmi_intf_session_cleanup(struct ipmi_intf *intf);
|
||||
void ipmi_cleanup(struct ipmi_intf * intf);
|
||||
|
||||
#if defined(IPMI_INTF_LAN) || defined (IPMI_INTF_LANPLUS)
|
||||
int ipmi_intf_socket_connect(struct ipmi_intf * intf);
|
||||
#endif
|
||||
#endif /* IPMI_INTF_H */
|
175
include/ipmitool/ipmi_lanp.h
Normal file
175
include/ipmitool/ipmi_lanp.h
Normal file
@ -0,0 +1,175 @@
|
||||
/*
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Sun Microsystems, Inc. or the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
* SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
* SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
* OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
#ifndef IPMI_LANP_H
|
||||
#define IPMI_LANP_H
|
||||
|
||||
#include <ipmitool/ipmi.h>
|
||||
|
||||
#define IPMI_LAN_SET_CONFIG 0x01
|
||||
#define IPMI_LAN_GET_CONFIG 0x02
|
||||
#define IPMI_LAN_SUSPEND_ARP 0x03
|
||||
# define IPMI_LAN_SUSPEND_ARP_RESP (2)
|
||||
# define IPMI_LAN_SUSPEND_ARP_GRAT (1)
|
||||
#define IPMI_LAN_GET_STAT 0x04
|
||||
|
||||
#define IPMI_CHANNEL_NUMBER_MAX 0xe
|
||||
|
||||
#define IPMI_LANP_TIMEOUT 3
|
||||
#define IPMI_LANP_RETRIES 10
|
||||
#define IPMI_LANP_WRITE_UNLOCK 0
|
||||
#define IPMI_LANP_WRITE_LOCK 1
|
||||
#define IPMI_LANP_WRITE_COMMIT 2
|
||||
|
||||
#define IPMI_LANP_VLAN_ID_MAX 4094
|
||||
#define IPMI_LANP_VLAN_ID_MIN 1
|
||||
#define IPMI_LANP_VLAN_DISABLE 0 /* ID 0 = VLAN is disabled for the channel */
|
||||
|
||||
#define IPMI_LANP_IS_VLAN_VALID(x) \
|
||||
((x) >= IPMI_LANP_VLAN_ID_MIN && (x) <= IPMI_LANP_VLAN_ID_MAX)
|
||||
|
||||
enum {
|
||||
IPMI_LANP_SET_IN_PROGRESS,
|
||||
IPMI_LANP_AUTH_TYPE,
|
||||
IPMI_LANP_AUTH_TYPE_ENABLE,
|
||||
IPMI_LANP_IP_ADDR,
|
||||
IPMI_LANP_IP_ADDR_SRC,
|
||||
IPMI_LANP_MAC_ADDR, /* 5 */
|
||||
IPMI_LANP_SUBNET_MASK,
|
||||
IPMI_LANP_IP_HEADER,
|
||||
IPMI_LANP_PRI_RMCP_PORT,
|
||||
IPMI_LANP_SEC_RMCP_PORT,
|
||||
IPMI_LANP_BMC_ARP, /* 10 */
|
||||
IPMI_LANP_GRAT_ARP,
|
||||
IPMI_LANP_DEF_GATEWAY_IP,
|
||||
IPMI_LANP_DEF_GATEWAY_MAC,
|
||||
IPMI_LANP_BAK_GATEWAY_IP,
|
||||
IPMI_LANP_BAK_GATEWAY_MAC, /* 15 */
|
||||
IPMI_LANP_SNMP_STRING,
|
||||
IPMI_LANP_NUM_DEST,
|
||||
IPMI_LANP_DEST_TYPE,
|
||||
IPMI_LANP_DEST_ADDR,
|
||||
IPMI_LANP_VLAN_ID, /* 20 */
|
||||
IPMI_LANP_VLAN_PRIORITY,
|
||||
IPMI_LANP_RMCP_CIPHER_SUPPORT,
|
||||
IPMI_LANP_RMCP_CIPHERS,
|
||||
IPMI_LANP_RMCP_PRIV_LEVELS,
|
||||
IPMI_LANP_VLAN_TAGS,
|
||||
IPMI_LANP_BAD_PASS_THRESH,
|
||||
IPMI_LANP_IP6_SUPPORT=50,
|
||||
IPMI_LANP_IP6_ENABLES,
|
||||
IPMI_LANP_IP6_TRAFFIC_CLASS,
|
||||
IPMI_LANP_IP6_STATIC_HOPS,
|
||||
IPMI_LANP_IP6_FLOW_LABEL,
|
||||
IPMI_LANP_IP6_STATUS,
|
||||
IPMI_LANP_IP6_STATIC_ADDR,
|
||||
IPMI_LANP_IP6_STATIC_DUID_STG,
|
||||
IPMI_LANP_IP6_STATIC_DUID,
|
||||
IPMI_LANP_IP6_DYNAMIC_ADDR,
|
||||
IPMI_LANP_IP6_DYNAMIC_DUID_STG,
|
||||
IPMI_LANP_IP6_DYNAMIC_DUID,
|
||||
IPMI_LANP_IP6_DHCP6_CFG_SUP,
|
||||
IPMI_LANP_IP6_DHCP6_CFG,
|
||||
IPMI_LANP_IP6_ROUTER_CFG,
|
||||
IPMI_LANP_IP6_STATIC_RTR1_ADDR,
|
||||
IPMI_LANP_IP6_STATIC_RTR1_MAC,
|
||||
IPMI_LANP_IP6_STATIC_RTR1_PFX_LEN,
|
||||
IPMI_LANP_IP6_STATIC_RTR1_PFX,
|
||||
IPMI_LANP_IP6_STATIC_RTR2_ADDR,
|
||||
IPMI_LANP_IP6_STATIC_RTR2_MAC,
|
||||
IPMI_LANP_IP6_STATIC_RTR2_PFX_LEN,
|
||||
IPMI_LANP_IP6_STATIC_RTR2_PFX,
|
||||
IPMI_LANP_IP6_NUM_DYNAMIC_RTRS,
|
||||
IPMI_LANP_IP6_DYNAMIC_RTR_ADDR,
|
||||
IPMI_LANP_IP6_DYNAMIC_RTR_MAC,
|
||||
IPMI_LANP_IP6_DYNAMIC_RTR_PFX_LEN,
|
||||
IPMI_LANP_IP6_DYNAMIC_RTR_PFX,
|
||||
IPMI_LANP_IP6_DYNAMIC_HOPS,
|
||||
IPMI_LANP_IP6_NDSLAAC_CFG_SUP,
|
||||
IPMI_LANP_IP6_NDSLAAC_CFG,
|
||||
IPMI_LANP_OEM_ALERT_STRING=96,
|
||||
IPMI_LANP_ALERT_RETRY=97,
|
||||
IPMI_LANP_UTC_OFFSET=98,
|
||||
IPMI_LANP_DHCP_SERVER_IP=192,
|
||||
IPMI_LANP_DHCP_SERVER_MAC=193,
|
||||
IPMI_LANP_DHCP_ENABLE=194,
|
||||
IPMI_LANP_CHAN_ACCESS_MODE=201,
|
||||
};
|
||||
|
||||
static struct lan_param {
|
||||
int cmd;
|
||||
int size;
|
||||
char desc[24];
|
||||
uint8_t * data;
|
||||
int data_len;
|
||||
} ipmi_lan_params[] __attribute__((unused)) = {
|
||||
{ IPMI_LANP_SET_IN_PROGRESS, 1, "Set in Progress", NULL, 0 },
|
||||
{ IPMI_LANP_AUTH_TYPE, 1, "Auth Type Support", NULL, 0 },
|
||||
{ IPMI_LANP_AUTH_TYPE_ENABLE, 5, "Auth Type Enable", NULL, 0 },
|
||||
{ IPMI_LANP_IP_ADDR, 4, "IP Address", NULL, 0 },
|
||||
{ IPMI_LANP_IP_ADDR_SRC, 1, "IP Address Source", NULL, 0 },
|
||||
{ IPMI_LANP_MAC_ADDR, 6, "MAC Address", NULL, 0 }, /* 5 */
|
||||
{ IPMI_LANP_SUBNET_MASK, 4, "Subnet Mask", NULL, 0 },
|
||||
{ IPMI_LANP_IP_HEADER, 3, "IP Header", NULL, 0 },
|
||||
{ IPMI_LANP_PRI_RMCP_PORT, 2, "Primary RMCP Port", NULL, 0 },
|
||||
{ IPMI_LANP_SEC_RMCP_PORT, 2, "Secondary RMCP Port", NULL, 0 },
|
||||
{ IPMI_LANP_BMC_ARP, 1, "BMC ARP Control", NULL, 0}, /* 10 */
|
||||
{ IPMI_LANP_GRAT_ARP, 1, "Gratituous ARP Intrvl", NULL, 0 },
|
||||
{ IPMI_LANP_DEF_GATEWAY_IP, 4, "Default Gateway IP", NULL, 0 },
|
||||
{ IPMI_LANP_DEF_GATEWAY_MAC, 6, "Default Gateway MAC", NULL, 0 },
|
||||
{ IPMI_LANP_BAK_GATEWAY_IP, 4, "Backup Gateway IP", NULL, 0 },
|
||||
{ IPMI_LANP_BAK_GATEWAY_MAC, 6, "Backup Gateway MAC", NULL, 0 }, /* 15 */
|
||||
{ IPMI_LANP_SNMP_STRING, 18, "SNMP Community String", NULL, 0 },
|
||||
{ IPMI_LANP_NUM_DEST, 1, "Number of Destinations", NULL, 0 },
|
||||
{ IPMI_LANP_DEST_TYPE, 4, "Destination Type", NULL, 0 },
|
||||
{ IPMI_LANP_DEST_ADDR, 13, "Destination Addresses", NULL, 0 },
|
||||
{ IPMI_LANP_VLAN_ID, 2, "802.1q VLAN ID", NULL, 0 }, /* 20 */
|
||||
{ IPMI_LANP_VLAN_PRIORITY, 1, "802.1q VLAN Priority", NULL, 0 },
|
||||
{ IPMI_LANP_RMCP_CIPHER_SUPPORT,1, "RMCP+ Cipher Suite Count", NULL, 0 },
|
||||
{ IPMI_LANP_RMCP_CIPHERS, 16, "RMCP+ Cipher Suites", NULL, 0 },
|
||||
{ IPMI_LANP_RMCP_PRIV_LEVELS, 9, "Cipher Suite Priv Max", NULL, 0 },
|
||||
{ IPMI_LANP_BAD_PASS_THRESH, 6, "Bad Password Threshold", NULL, 0 },
|
||||
{ IPMI_LANP_OEM_ALERT_STRING, 28, "OEM Alert String", NULL, 0 }, /* 25 */
|
||||
{ IPMI_LANP_ALERT_RETRY, 1, "Alert Retry Algorithm", NULL, 0 },
|
||||
{ IPMI_LANP_UTC_OFFSET, 3, "UTC Offset", NULL, 0 },
|
||||
{ IPMI_LANP_DHCP_SERVER_IP, 4, "DHCP Server IP", NULL, 0 },
|
||||
{ IPMI_LANP_DHCP_SERVER_MAC, 6, "DHDP Server MAC", NULL, 0},
|
||||
{ IPMI_LANP_DHCP_ENABLE, 1, "DHCP Enable", NULL, 0 }, /* 30 */
|
||||
{ IPMI_LANP_CHAN_ACCESS_MODE, 2, "Channel Access Mode", NULL, 0 },
|
||||
{ -1, -1, "", NULL, -1 }
|
||||
};
|
||||
|
||||
int ipmi_lanp_main(struct ipmi_intf *, int, char **);
|
||||
|
||||
uint8_t find_lan_channel(struct ipmi_intf *intf, uint8_t start);
|
||||
|
||||
#endif /*IPMI_LANP_H*/
|
54
include/ipmitool/ipmi_lanp6.h
Normal file
54
include/ipmitool/ipmi_lanp6.h
Normal file
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Pentair Technical Products. All right reserved
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Pentair Technical Products or the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* PENTAIR TECHNICAL SOLUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef IPMI_LANP6_H
|
||||
#define IPMI_LANP6_H
|
||||
|
||||
#include <ipmitool/ipmi_intf.h>
|
||||
|
||||
/*
|
||||
* LAN configuration parameter.
|
||||
*/
|
||||
struct ipmi_lanp {
|
||||
int selector;
|
||||
const char *name;
|
||||
int size;
|
||||
};
|
||||
|
||||
/*
|
||||
* Private data for LAN configuration.
|
||||
*/
|
||||
struct ipmi_lanp_priv {
|
||||
struct ipmi_intf *intf;
|
||||
int channel;
|
||||
};
|
||||
|
||||
#endif /* IPMI_LANP6_H */
|
329
include/ipmitool/ipmi_mc.h
Normal file
329
include/ipmitool/ipmi_mc.h
Normal file
@ -0,0 +1,329 @@
|
||||
/*
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Sun Microsystems, Inc. or the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
* SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
* SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
* OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
#ifndef IPMI_MC_H
|
||||
#define IPMI_MC_H
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <ipmitool/ipmi.h>
|
||||
#include <ipmitool/helper.h>
|
||||
#include <ipmitool/ipmi_strings.h>
|
||||
|
||||
#define OEM_MFG_STRING(oem) val2str(IPM_DEV_MANUFACTURER_ID(oem),\
|
||||
ipmi_oem_info)
|
||||
#define OEM_PROD_STRING(oem, p) oemval2str(IPM_DEV_MANUFACTURER_ID(oem),\
|
||||
ipmi16toh(p),\
|
||||
ipmi_oem_product_info)
|
||||
|
||||
#define BMC_GET_DEVICE_ID 0x01
|
||||
#define BMC_COLD_RESET 0x02
|
||||
#define BMC_WARM_RESET 0x03
|
||||
#define BMC_GET_SELF_TEST 0x04
|
||||
#define BMC_RESET_WATCHDOG_TIMER 0x22
|
||||
#define BMC_SET_WATCHDOG_TIMER 0x24
|
||||
#define BMC_GET_WATCHDOG_TIMER 0x25
|
||||
#define BMC_SET_GLOBAL_ENABLES 0x2e
|
||||
#define BMC_GET_GLOBAL_ENABLES 0x2f
|
||||
#define BMC_GET_GUID 0x37
|
||||
|
||||
int ipmi_mc_main(struct ipmi_intf *, int, char **);
|
||||
|
||||
/*
|
||||
* Response data from IPM Get Device ID Command (IPMI rev 1.5, section 17.1)
|
||||
* The following really apply to any IPM device, not just BMCs...
|
||||
*/
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct ipm_devid_rsp {
|
||||
uint8_t device_id;
|
||||
uint8_t device_revision;
|
||||
uint8_t fw_rev1;
|
||||
uint8_t fw_rev2;
|
||||
uint8_t ipmi_version;
|
||||
uint8_t adtl_device_support;
|
||||
uint8_t manufacturer_id[3];
|
||||
uint8_t product_id[2];
|
||||
uint8_t aux_fw_rev[4];
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
|
||||
#define IPM_DEV_DEVICE_ID_SDR_MASK (0x80) /* 1 = provides SDRs */
|
||||
#define IPM_DEV_DEVICE_ID_REV_MASK (0x0F) /* BCD-enoded */
|
||||
|
||||
#define IPM_DEV_FWREV1_AVAIL_MASK (0x80) /* 0 = normal operation */
|
||||
#define IPM_DEV_FWREV1_MAJOR_MASK (0x3f) /* Major rev, BCD-encoded */
|
||||
|
||||
#define IPM_DEV_IPMI_VER_MAJOR_MASK (0x0F) /* Major rev, BCD-encoded */
|
||||
#define IPM_DEV_IPMI_VER_MINOR_MASK (0xF0) /* Minor rev, BCD-encoded */
|
||||
#define IPM_DEV_IPMI_VER_MINOR_SHIFT (4) /* Minor rev shift */
|
||||
#define IPM_DEV_IPMI_VERSION_MAJOR(x) \
|
||||
(x & IPM_DEV_IPMI_VER_MAJOR_MASK)
|
||||
#define IPM_DEV_IPMI_VERSION_MINOR(x) \
|
||||
((x & IPM_DEV_IPMI_VER_MINOR_MASK) >> IPM_DEV_IPMI_VER_MINOR_SHIFT)
|
||||
|
||||
#define IPM_DEV_MANUFACTURER_ID_RESERVED 0x0FFFFF
|
||||
#define IPM_DEV_MANUFACTURER_ID(x) ipmi24toh(x)
|
||||
|
||||
#define IPM_DEV_ADTL_SUPPORT_BITS (8)
|
||||
|
||||
/* There are lots of BMC implementations that don't follow the IPMI
|
||||
* specification for GUID encoding. Some send data encoded as in
|
||||
* RFC4122, some follow SMBIOS specification. We support all users
|
||||
* of those buggy implementations here.
|
||||
*
|
||||
* Most implementations like AMI MegaRAC do it the SMBIOS way.
|
||||
* This is the legacy behavior we don't want to break yet.
|
||||
* That's why the last real mode is GUID_SMBIOS. If automatic
|
||||
* detection finds more than one possible candidate, and
|
||||
* GUID_SMBIOS is one of them, then it will take precedence.
|
||||
*
|
||||
* For the same reason GUID_IPMI is right before GUID_SMBIOS.
|
||||
* If both RFC4122 and IPMI encodings have a valid version
|
||||
* field, then IPMI takes precedence.
|
||||
*/
|
||||
typedef enum {
|
||||
/* Real modes, in reverse precedence order */
|
||||
GUID_RFC4122,
|
||||
GUID_IPMI,
|
||||
GUID_SMBIOS,
|
||||
GUID_REAL_MODES, /* Real mode count*/
|
||||
/* Pseudo modes start here */
|
||||
GUID_AUTO = GUID_REAL_MODES, /* Automatically detect mode */
|
||||
GUID_DUMP, /* Just dump the data */
|
||||
GUID_TOTAL_MODES
|
||||
} ipmi_guid_mode_t;
|
||||
|
||||
#define GUID_NODE_SZ 6
|
||||
|
||||
#define GUID_VER_MASK 0x0F
|
||||
#define GUID_VER_SHIFT 12
|
||||
#define GUID_VERSION(t_hi) (((t_hi) >> GUID_VER_SHIFT) & GUID_VER_MASK)
|
||||
#define GUID_TIME_HI(t_hi) ((t_hi) & ~(GUID_VER_MASK << GUID_VER_SHIFT))
|
||||
|
||||
typedef enum {
|
||||
GUID_VERSION_UNKNOWN = 0, /* Not valid according to any specification */
|
||||
|
||||
/* The following are according to IPMI/SMBIOS/RFC4122 */
|
||||
GUID_VERSION_TIME, /* Time-based, recommended for IPMI */
|
||||
GUID_VERSION_DCE, /* DCE Security with POSIX UIDs, not for IPMI */
|
||||
GUID_VERSION_MD5, /* Name-based, using MD5 */
|
||||
GUID_VERSION_RND, /* Randomly generated */
|
||||
GUID_VERSION_SHA1, /* Name-based, using SHA-1 */
|
||||
|
||||
GUID_VERSION_MAX = GUID_VERSION_SHA1, /* The maximum supported version */
|
||||
GUID_VERSION_COUNT /* The number of supported versions */
|
||||
} guid_version_t;
|
||||
|
||||
static inline bool is_guid_version_valid(guid_version_t ver)
|
||||
{
|
||||
return (ver > GUID_VERSION_UNKNOWN) && (ver <= GUID_VERSION_MAX);
|
||||
}
|
||||
|
||||
/* The structure follows IPMI v2.0, rev 1.1
|
||||
* See section 20.8 */
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
typedef struct {
|
||||
uint8_t node[GUID_NODE_SZ]; /* Byte 0 is LSB */
|
||||
union {
|
||||
struct {
|
||||
uint8_t clock_seq_low; /* clock sequence low field */
|
||||
uint8_t clock_seq_hi_and_rsvd;/* clock sequence high field */
|
||||
};
|
||||
uint16_t clock_seq_and_rsvd;
|
||||
};
|
||||
uint16_t time_hi_and_version; /* timestamp high field and version number */
|
||||
uint16_t time_mid; /* timestamp middle field */
|
||||
uint32_t time_low; /* timestamp low field */
|
||||
} ATTRIBUTE_PACKING ipmi_guid_t;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* The structure follows RFC4122 (section 4.1.2)
|
||||
* and SMBIOS v3.0.0 (section 7.2.1) */
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
typedef struct {
|
||||
uint32_t time_low; /* timestamp low field */
|
||||
uint16_t time_mid; /* timestamp middle field */
|
||||
uint16_t time_hi_and_version; /* timestamp high field and version number */
|
||||
union {
|
||||
struct {
|
||||
uint8_t clock_seq_hi_and_rsvd;/* clock sequence high field */
|
||||
uint8_t clock_seq_low; /* clock sequence low field */
|
||||
};
|
||||
uint16_t clock_seq_and_rsvd;
|
||||
};
|
||||
uint8_t node[GUID_NODE_SZ]; /* Byte 0 is MSB */
|
||||
} ATTRIBUTE_PACKING rfc_guid_t;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
|
||||
/* Parsed GUID structure */
|
||||
typedef struct {
|
||||
uint8_t node[GUID_NODE_SZ]; /* MSB first */
|
||||
/* These are architecture-specific for easy output with printf() */
|
||||
uint16_t clock_seq_and_rsvd;
|
||||
uint64_t time_hi_and_version;
|
||||
uint64_t time_mid;
|
||||
uint64_t time_low;
|
||||
/* These are the parsed values */
|
||||
time_t time;
|
||||
ipmi_guid_mode_t mode;
|
||||
guid_version_t ver; /* Version from time_hi_and_version, if valid */
|
||||
} parsed_guid_t;
|
||||
|
||||
parsed_guid_t ipmi_parse_guid(void *guid, ipmi_guid_mode_t guid_mode);
|
||||
|
||||
int _ipmi_mc_get_guid(struct ipmi_intf *intf, ipmi_guid_t *guid);
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct ipm_selftest_rsp {
|
||||
unsigned char code;
|
||||
unsigned char test;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
|
||||
#define IPM_SFT_CODE_OK 0x55
|
||||
#define IPM_SFT_CODE_NOT_IMPLEMENTED 0x56
|
||||
#define IPM_SFT_CODE_DEV_CORRUPTED 0x57
|
||||
#define IPM_SFT_CODE_FATAL_ERROR 0x58
|
||||
#define IPM_SFT_CODE_RESERVED 0xff
|
||||
|
||||
#define IPM_SELFTEST_SEL_ERROR 0x80
|
||||
#define IPM_SELFTEST_SDR_ERROR 0x40
|
||||
#define IPM_SELFTEST_FRU_ERROR 0x20
|
||||
#define IPM_SELFTEST_IPMB_ERROR 0x10
|
||||
#define IPM_SELFTEST_SDRR_EMPTY 0x08
|
||||
#define IPM_SELFTEST_INTERNAL_USE 0x04
|
||||
#define IPM_SELFTEST_FW_BOOTBLOCK 0x02
|
||||
#define IPM_SELFTEST_FW_CORRUPTED 0x01
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct ipm_get_watchdog_rsp {
|
||||
unsigned char use;
|
||||
unsigned char intr_action;
|
||||
unsigned char pre_timeout;
|
||||
unsigned char exp_flags;
|
||||
union {
|
||||
struct {
|
||||
unsigned char initial_countdown_lsb;
|
||||
unsigned char initial_countdown_msb;
|
||||
};
|
||||
uint16_t init_cnt_le;
|
||||
};
|
||||
union {
|
||||
struct {
|
||||
unsigned char present_countdown_lsb;
|
||||
unsigned char present_countdown_msb;
|
||||
};
|
||||
uint16_t pres_cnt_le;
|
||||
};
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
|
||||
#define IPM_WATCHDOG_RESET_ERROR 0x80
|
||||
|
||||
#define IPM_WATCHDOG_BIOS_FRB2 0x01
|
||||
#define IPM_WATCHDOG_BIOS_POST 0x02
|
||||
#define IPM_WATCHDOG_OS_LOAD 0x03
|
||||
#define IPM_WATCHDOG_SMS_OS 0x04
|
||||
#define IPM_WATCHDOG_OEM 0x05
|
||||
|
||||
#define IPM_WATCHDOG_NO_ACTION 0x00
|
||||
#define IPM_WATCHDOG_HARD_RESET 0x01
|
||||
#define IPM_WATCHDOG_POWER_DOWN 0x02
|
||||
#define IPM_WATCHDOG_POWER_CYCLE 0x03
|
||||
|
||||
#define IPM_WATCHDOG_CLEAR_OEM 0x20
|
||||
#define IPM_WATCHDOG_CLEAR_SMS_OS 0x10
|
||||
#define IPM_WATCHDOG_CLEAR_OS_LOAD 0x08
|
||||
#define IPM_WATCHDOG_CLEAR_BIOS_POST 0x04
|
||||
#define IPM_WATCHDOG_CLEAR_BIOS_FRB2 0x02
|
||||
|
||||
/* Use */
|
||||
#define IPMI_WDT_USE_NOLOG_SHIFT 7
|
||||
#define IPMI_WDT_USE_DONTSTOP_SHIFT 6 /* For 'set' */
|
||||
#define IPMI_WDT_USE_RUNNING_SHIFT 6 /* For 'get' */
|
||||
#define IPMI_WDT_USE_SHIFT 0
|
||||
#define IPMI_WDT_USE_MASK 0x07
|
||||
|
||||
/* Pre-timeout interrupt type */
|
||||
#define IPMI_WDT_INTR_SHIFT 4
|
||||
#define IPMI_WDT_INTR_MASK 0x07 /* Apply to the intr value, not to the data byte */
|
||||
|
||||
/* Action */
|
||||
#define IPMI_WDT_ACTION_SHIFT 0
|
||||
#define IPMI_WDT_ACTION_MASK 0x07
|
||||
|
||||
#define IPMI_WDT_GET(b, s) (((b) >> (IPMI_WDT_##s##_SHIFT)) & (IPMI_WDT_##s##_MASK))
|
||||
|
||||
#define IS_WDT_BIT(b, s) IS_SET((b), IPMI_WDT_##s##_SHIFT)
|
||||
|
||||
/* IPMI 2.0 command for system information*/
|
||||
#define IPMI_SET_SYS_INFO 0x58
|
||||
#define IPMI_GET_SYS_INFO 0x59
|
||||
#define IPMI_SYSINFO_SET0_SIZE 14
|
||||
#define IPMI_SYSINFO_SETN_SIZE 16
|
||||
|
||||
/* System Information "Parameter selector" values: */
|
||||
#define IPMI_SYSINFO_SET_STATE 0x00
|
||||
#define IPMI_SYSINFO_SYSTEM_FW_VERSION 0x01
|
||||
#define IPMI_SYSINFO_HOSTNAME 0x02
|
||||
#define IPMI_SYSINFO_PRIMARY_OS_NAME 0x03
|
||||
#define IPMI_SYSINFO_OS_NAME 0x04
|
||||
#define IPMI_SYSINFO_DELL_OS_VERSION 0xe4
|
||||
#define IPMI_SYSINFO_DELL_URL 0xde
|
||||
#define IPMI_SYSINFO_DELL_IPV6_COUNT 0xe6
|
||||
#define IPMI_SYSINFO_DELL_IPV6_DESTADDR 0xf0
|
||||
|
||||
int ipmi_mc_getsysinfo(struct ipmi_intf * intf, int param, int block, int set,
|
||||
int len, void *buffer);
|
||||
int ipmi_mc_setsysinfo(struct ipmi_intf * intf, int len, void *buffer);
|
||||
|
||||
#endif /*IPMI_MC_H */
|
@ -40,7 +40,7 @@
|
||||
struct pef_capabilities { /* "get pef capabilities" response */
|
||||
uint8_t version;
|
||||
uint8_t actions; /* mapped by PEF_ACTION_xxx */
|
||||
uint8_t tblsize;
|
||||
uint8_t event_filter_count;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
@ -178,7 +178,7 @@ BIT_DESC_MAP_LIST,
|
||||
{"Entity presence", 37},
|
||||
{"Monitor ASIC/IC", 38},
|
||||
{"LAN", 39},
|
||||
{"Management subsytem health",40},
|
||||
{"Management subsystem health",40},
|
||||
{"Battery", 41},
|
||||
{NULL}
|
||||
} };
|
||||
@ -327,8 +327,7 @@ pef_b2s_generic_ER[] __attribute__((unused)) = {
|
||||
&pef_b2s_gentype_11,
|
||||
&pef_b2s_gentype_12,
|
||||
};
|
||||
#define PEF_B2S_GENERIC_ER_ENTRIES \
|
||||
(sizeof(pef_b2s_generic_ER) / sizeof(pef_b2s_generic_ER[0]))
|
||||
#define PEF_B2S_GENERIC_ER_ENTRIES ARRAY_SIZE(pef_b2s_generic_ER)
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
@ -336,6 +335,7 @@ pef_b2s_generic_ER[] __attribute__((unused)) = {
|
||||
struct pef_policy_entry {
|
||||
#define PEF_POLICY_ID_MASK 0xf0
|
||||
#define PEF_POLICY_ID_SHIFT 4
|
||||
#define PEF_POLICY_DISABLED 0xF7
|
||||
#define PEF_POLICY_ENABLED 0x08
|
||||
#define PEF_POLICY_FLAGS_MASK 0x07
|
||||
#define PEF_POLICY_FLAGS_MATCH_ALWAYS 0
|
||||
@ -510,7 +510,9 @@ struct pef_cfgparm_filter_table_size {
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct pef_cfgparm_filter_table_entry {
|
||||
#define PEF_FILTER_TABLE_ID_MASK 0x7f
|
||||
# define PEF_FILTER_DISABLED 0x7F
|
||||
# define PEF_FILTER_ENABLED 0x80
|
||||
# define PEF_FILTER_TABLE_ID_MASK 0x7F
|
||||
uint8_t data1;
|
||||
struct pef_table_entry entry;
|
||||
} ATTRIBUTE_PACKING;
|
||||
@ -522,8 +524,8 @@ struct pef_cfgparm_filter_table_entry {
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct pef_cfgparm_filter_table_data_1 {
|
||||
uint8_t data1;
|
||||
uint8_t data2;
|
||||
uint8_t id;
|
||||
uint8_t cfg;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
@ -936,6 +938,7 @@ BIT_DESC_MAP_LIST,
|
||||
#endif
|
||||
|
||||
#define IPMI_CMD_GET_PEF_CAPABILITIES 0x10
|
||||
#define IPMI_CMD_SET_PEF_CONFIG_PARMS 0x12
|
||||
#define IPMI_CMD_GET_PEF_CONFIG_PARMS 0x13
|
||||
#define IPMI_CMD_GET_LAST_PROCESSED_EVT_ID 0x15
|
||||
#define IPMI_CMD_GET_SYSTEM_GUID 0x37
|
||||
@ -943,6 +946,13 @@ BIT_DESC_MAP_LIST,
|
||||
#define IPMI_CMD_LAN_GET_CONFIG 0x02
|
||||
#define IPMI_CMD_SERIAL_GET_CONFIG 0x11
|
||||
|
||||
struct pef_cfgparm_set_policy_table_entry
|
||||
{
|
||||
uint8_t param_selector;
|
||||
uint8_t policy_id;
|
||||
struct pef_policy_entry entry;
|
||||
} ATTRIBUTE_PACKING;
|
||||
|
||||
const char * ipmi_pef_bit_desc(struct bit_desc_map * map, uint32_t val);
|
||||
void ipmi_pef_print_flags(struct bit_desc_map * map, flg_e type, uint32_t val);
|
||||
void ipmi_pef_print_dec(const char * text, uint32_t val);
|
@ -12,6 +12,7 @@
|
||||
#define PICMG_CPCI_MAJOR_VERSION 1
|
||||
#define PICMG_ATCA_MAJOR_VERSION 2
|
||||
#define PICMG_AMC_MAJOR_VERSION 4
|
||||
#define PICMG_UTCA_MAJOR_VERSION 5
|
||||
|
||||
/* PICMG commands */
|
||||
#define PICMG_GET_PICMG_PROPERTIES_CMD 0x00
|
@ -1,42 +1,55 @@
|
||||
/*
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Copyright (c) 2018 Quanta Computer Inc. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Sun Microsystems, Inc. or the names of
|
||||
*
|
||||
* Neither the name of Quanta Computer Inc. or the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
* SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* Quanta Computer Inc. AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
* SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
* Quanta Computer Inc. OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
* OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
#ifndef IPMI_KFWUM_H
|
||||
#define IPMI_KFWUM_H
|
||||
#ifndef IPMI_QUANTAOEM_H
|
||||
#define IPMI_QUANTAOEM_H
|
||||
|
||||
#include <inttypes.h>
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
#include <ipmitool/ipmi.h>
|
||||
#include <ipmitool/ipmi_sdr.h>
|
||||
|
||||
#define OEM_QCT_NETFN 0x36
|
||||
#define OEM_QCT_GET_INFO 0x65
|
||||
|
||||
int ipmi_fwum_main(struct ipmi_intf *, int, char **);
|
||||
typedef enum
|
||||
{
|
||||
OEM_QCT_PLATFORM_UNKNOWN = 0,
|
||||
OEM_QCT_PLATFORM_GRANTLEY,
|
||||
OEM_QCT_PLATFORM_PURLEY
|
||||
} qct_platform_t;
|
||||
|
||||
#endif /* IPMI_KFWUM_H */
|
||||
qct_platform_t oem_qct_get_platform_id(struct ipmi_intf *intf);
|
||||
char *oem_qct_get_evt_desc(struct ipmi_intf *intf, struct sel_event_record *rec);
|
||||
|
||||
#endif /*IPMI_QUANTAOEM_H*/
|
@ -102,8 +102,6 @@ enum {
|
||||
#define GET_SENSOR_EVENT_STATUS 0x2b
|
||||
#define GET_SENSOR_READING 0x2d
|
||||
#define GET_SENSOR_TYPE 0x2f
|
||||
#define GET_SENSOR_READING 0x2d
|
||||
#define GET_SENSOR_TYPE 0x2f
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
@ -866,11 +864,10 @@ struct sdr_get_rs *ipmi_sdr_get_next_header(struct ipmi_intf *intf,
|
||||
struct ipmi_sdr_iterator *i);
|
||||
uint8_t *ipmi_sdr_get_record(struct ipmi_intf *intf, struct sdr_get_rs *header,
|
||||
struct ipmi_sdr_iterator *i);
|
||||
void ipmi_sdr_end(struct ipmi_intf *intf, struct ipmi_sdr_iterator *i);
|
||||
void ipmi_sdr_end(struct ipmi_sdr_iterator *i);
|
||||
int ipmi_sdr_print_sdr(struct ipmi_intf *intf, uint8_t type);
|
||||
|
||||
int ipmi_sdr_print_name_from_rawentry(struct ipmi_intf *intf,uint16_t id,
|
||||
uint8_t type,uint8_t * raw);
|
||||
int ipmi_sdr_print_name_from_rawentry(uint16_t id, uint8_t type,uint8_t * raw);
|
||||
int ipmi_sdr_print_rawentry(struct ipmi_intf *intf, uint8_t type, uint8_t * raw,
|
||||
int len);
|
||||
int ipmi_sdr_print_listentry(struct ipmi_intf *intf,
|
||||
@ -909,21 +906,14 @@ struct ipmi_rs *ipmi_sdr_get_sensor_thresholds(struct ipmi_intf *intf,
|
||||
struct ipmi_rs *ipmi_sdr_get_sensor_hysteresis(struct ipmi_intf *intf,
|
||||
uint8_t sensor,
|
||||
uint8_t target, uint8_t lun, uint8_t channel);
|
||||
const char *ipmi_sdr_get_sensor_type_desc(const uint8_t type);
|
||||
int ipmi_sdr_get_reservation(struct ipmi_intf *intf, int use_builtin,
|
||||
uint16_t * reserve_id);
|
||||
|
||||
int ipmi_sdr_print_sensor_eventonly(struct ipmi_intf *intf,
|
||||
struct sdr_record_eventonly_sensor *sensor);
|
||||
int ipmi_sdr_print_sensor_generic_locator(struct ipmi_intf *intf,
|
||||
struct sdr_record_generic_locator
|
||||
*fru);
|
||||
int ipmi_sdr_print_sensor_fru_locator(struct ipmi_intf *intf,
|
||||
struct sdr_record_fru_locator *fru);
|
||||
int ipmi_sdr_print_sensor_mc_locator(struct ipmi_intf *intf,
|
||||
struct sdr_record_mc_locator *mc);
|
||||
int ipmi_sdr_print_sensor_entity_assoc(struct ipmi_intf *intf,
|
||||
struct sdr_record_entity_assoc *assoc);
|
||||
int ipmi_sdr_print_sensor_generic_locator(struct sdr_record_generic_locator *fru);
|
||||
int ipmi_sdr_print_sensor_fru_locator(struct sdr_record_fru_locator *fru);
|
||||
int ipmi_sdr_print_sensor_mc_locator(struct sdr_record_mc_locator *mc);
|
||||
|
||||
struct sdr_record_list *ipmi_sdr_find_sdr_byentity(struct ipmi_intf *intf,
|
||||
struct entity_id *entity);
|
||||
@ -936,13 +926,15 @@ struct sdr_record_list *ipmi_sdr_find_sdr_byid(struct ipmi_intf *intf,
|
||||
struct sdr_record_list *ipmi_sdr_find_sdr_bytype(struct ipmi_intf *intf,
|
||||
uint8_t type);
|
||||
int ipmi_sdr_list_cache(struct ipmi_intf *intf);
|
||||
int ipmi_sdr_list_cache_fromfile(struct ipmi_intf *intf, const char *ifile);
|
||||
void ipmi_sdr_list_empty(struct ipmi_intf *intf);
|
||||
int ipmi_sdr_list_cache_fromfile(const char *ifile);
|
||||
void ipmi_sdr_list_empty(void);
|
||||
int ipmi_sdr_print_info(struct ipmi_intf *intf);
|
||||
void ipmi_sdr_print_discrete_state(const char *desc, uint8_t sensor_type,
|
||||
uint8_t event_type, uint8_t state1,
|
||||
uint8_t state2);
|
||||
void ipmi_sdr_print_discrete_state_mini(const char *header, const char *separator,
|
||||
void ipmi_sdr_print_discrete_state(struct ipmi_intf *intf,
|
||||
const char *desc, uint8_t sensor_type,
|
||||
uint8_t event_type, uint8_t state1,
|
||||
uint8_t state2);
|
||||
void ipmi_sdr_print_discrete_state_mini(struct ipmi_intf *intf,
|
||||
const char *header, const char *separator,
|
||||
uint8_t sensor_type, uint8_t event_type,
|
||||
uint8_t state1, uint8_t state2);
|
||||
int ipmi_sdr_print_sensor_event_status(struct ipmi_intf *intf,
|
691
include/ipmitool/ipmi_sel.h
Normal file
691
include/ipmitool/ipmi_sel.h
Normal file
@ -0,0 +1,691 @@
|
||||
/*
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Sun Microsystems, Inc. or the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
* SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
* SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
* OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
#ifndef IPMI_SEL_H
|
||||
#define IPMI_SEL_H
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <ipmitool/ipmi.h>
|
||||
#include <ipmitool/ipmi_sdr.h>
|
||||
|
||||
#define IPMI_CMD_GET_SEL_INFO 0x40
|
||||
#define IPMI_CMD_GET_SEL_ALLOC_INFO 0x41
|
||||
#define IPMI_CMD_RESERVE_SEL 0x42
|
||||
#define IPMI_CMD_GET_SEL_ENTRY 0x43
|
||||
#define IPMI_CMD_ADD_SEL_ENTRY 0x44
|
||||
#define IPMI_CMD_PARTIAL_ADD_SEL_ENTRY 0x45
|
||||
#define IPMI_CMD_DELETE_SEL_ENTRY 0x46
|
||||
#define IPMI_CMD_CLEAR_SEL 0x47
|
||||
#define IPMI_CMD_GET_SEL_TIME 0x48
|
||||
#define IPMI_CMD_SET_SEL_TIME 0x49
|
||||
#define IPMI_CMD_GET_AUX_LOG_STATUS 0x5A
|
||||
#define IPMI_CMD_SET_AUX_LOG_STATUS 0x5B
|
||||
|
||||
enum {
|
||||
IPMI_EVENT_CLASS_DISCRETE,
|
||||
IPMI_EVENT_CLASS_DIGITAL,
|
||||
IPMI_EVENT_CLASS_THRESHOLD,
|
||||
IPMI_EVENT_CLASS_OEM,
|
||||
};
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct sel_get_rq {
|
||||
uint16_t reserve_id;
|
||||
uint16_t record_id;
|
||||
uint8_t offset;
|
||||
uint8_t length;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
|
||||
struct standard_spec_sel_rec{
|
||||
uint32_t timestamp;
|
||||
uint16_t gen_id;
|
||||
uint8_t evm_rev;
|
||||
uint8_t sensor_type;
|
||||
uint8_t sensor_num;
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t event_dir : 1;
|
||||
uint8_t event_type : 7;
|
||||
#else
|
||||
uint8_t event_type : 7;
|
||||
uint8_t event_dir : 1;
|
||||
#endif
|
||||
#define DATA_BYTE2_SPECIFIED_MASK 0xc0 /* event_data[0] bit mask */
|
||||
#define DATA_BYTE3_SPECIFIED_MASK 0x30 /* event_data[0] bit mask */
|
||||
#define EVENT_OFFSET_MASK 0x0f /* event_data[0] bit mask */
|
||||
uint8_t event_data[3];
|
||||
};
|
||||
/* Dell Specific MACRO's */
|
||||
#define OEM_CODE_IN_BYTE2 0x80 /* Dell specific OEM Byte in Byte 2 Mask */
|
||||
#define OEM_CODE_IN_BYTE3 0x20 /* Dell specific OEM Byte in Byte 3 Mask */
|
||||
/* MASK MACROS */
|
||||
#define MASK_LOWER_NIBBLE 0x0F
|
||||
#define MASK_HIGHER_NIBBLE 0xF0
|
||||
/*Senosr type Macro's */
|
||||
#define SENSOR_TYPE_MEMORY 0x0C
|
||||
#define SENSOR_TYPE_CRIT_INTR 0x13
|
||||
#define SENSOR_TYPE_EVT_LOG 0x10
|
||||
#define SENSOR_TYPE_SYS_EVENT 0x12
|
||||
#define SENSOR_TYPE_PROCESSOR 0x07
|
||||
#define SENSOR_TYPE_OEM_SEC_EVENT 0xC1
|
||||
#define SENSOR_TYPE_VER_CHANGE 0x2B
|
||||
#define SENSOR_TYPE_FRM_PROG 0x0F
|
||||
#define SENSOR_TYPE_WTDOG 0x23
|
||||
#define SENSOR_TYPE_OEM_NFATAL_ERROR 0xC2
|
||||
#define SENSOR_TYPE_OEM_FATAL_ERROR 0xC3
|
||||
#define SENSOR_TYPE_TXT_CMD_ERROR 0x20
|
||||
#define SENSOR_TYPE_SUPERMICRO_OEM 0xD0
|
||||
/* End of Macro for DELL Specific */
|
||||
#define SEL_OEM_TS_DATA_LEN 6
|
||||
#define SEL_OEM_NOTS_DATA_LEN 13
|
||||
struct oem_ts_spec_sel_rec{
|
||||
uint32_t timestamp;
|
||||
uint8_t manf_id[3];
|
||||
uint8_t oem_defined[SEL_OEM_TS_DATA_LEN];
|
||||
};
|
||||
|
||||
struct oem_nots_spec_sel_rec{
|
||||
uint8_t oem_defined[SEL_OEM_NOTS_DATA_LEN];
|
||||
};
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
struct sel_event_record {
|
||||
uint16_t record_id;
|
||||
uint8_t record_type;
|
||||
union{
|
||||
struct standard_spec_sel_rec standard_type;
|
||||
struct oem_ts_spec_sel_rec oem_ts_type;
|
||||
struct oem_nots_spec_sel_rec oem_nots_type;
|
||||
} sel_type;
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
|
||||
struct ipmi_event_sensor_types {
|
||||
uint8_t code;
|
||||
uint8_t offset;
|
||||
#define ALL_OFFSETS_SPECIFIED 0xff
|
||||
uint8_t data;
|
||||
const char * desc;
|
||||
};
|
||||
|
||||
static const struct ipmi_event_sensor_types generic_event_types[] = {
|
||||
/* Threshold Based States */
|
||||
{ 0x01, 0x00, 0xff, "Lower Non-critical going low " },
|
||||
{ 0x01, 0x01, 0xff, "Lower Non-critical going high" },
|
||||
{ 0x01, 0x02, 0xff, "Lower Critical going low " },
|
||||
{ 0x01, 0x03, 0xff, "Lower Critical going high" },
|
||||
{ 0x01, 0x04, 0xff, "Lower Non-recoverable going low " },
|
||||
{ 0x01, 0x05, 0xff, "Lower Non-recoverable going high" },
|
||||
{ 0x01, 0x06, 0xff, "Upper Non-critical going low " },
|
||||
{ 0x01, 0x07, 0xff, "Upper Non-critical going high" },
|
||||
{ 0x01, 0x08, 0xff, "Upper Critical going low " },
|
||||
{ 0x01, 0x09, 0xff, "Upper Critical going high" },
|
||||
{ 0x01, 0x0a, 0xff, "Upper Non-recoverable going low " },
|
||||
{ 0x01, 0x0b, 0xff, "Upper Non-recoverable going high" },
|
||||
/* DMI-based "usage state" States */
|
||||
{ 0x02, 0x00, 0xff, "Transition to Idle" },
|
||||
{ 0x02, 0x01, 0xff, "Transition to Active" },
|
||||
{ 0x02, 0x02, 0xff, "Transition to Busy" },
|
||||
/* Digital-Discrete Event States */
|
||||
{ 0x03, 0x00, 0xff, "State Deasserted" },
|
||||
{ 0x03, 0x01, 0xff, "State Asserted" },
|
||||
{ 0x04, 0x00, 0xff, "Predictive Failure Deasserted" },
|
||||
{ 0x04, 0x01, 0xff, "Predictive Failure Asserted" },
|
||||
{ 0x05, 0x00, 0xff, "Limit Not Exceeded" },
|
||||
{ 0x05, 0x01, 0xff, "Limit Exceeded" },
|
||||
{ 0x06, 0x00, 0xff, "Performance Met" },
|
||||
{ 0x06, 0x01, 0xff, "Performance Lags" },
|
||||
/* Severity Event States */
|
||||
{ 0x07, 0x00, 0xff, "Transition to OK" },
|
||||
{ 0x07, 0x01, 0xff, "Transition to Non-critical from OK" },
|
||||
{ 0x07, 0x02, 0xff, "Transition to Critical from less severe" },
|
||||
{ 0x07, 0x03, 0xff, "Transition to Non-recoverable from less severe" },
|
||||
{ 0x07, 0x04, 0xff, "Transition to Non-critical from more severe" },
|
||||
{ 0x07, 0x05, 0xff, "Transition to Critical from Non-recoverable" },
|
||||
{ 0x07, 0x06, 0xff, "Transition to Non-recoverable" },
|
||||
{ 0x07, 0x07, 0xff, "Monitor" },
|
||||
{ 0x07, 0x08, 0xff, "Informational" },
|
||||
/* Availability Status States */
|
||||
{ 0x08, 0x00, 0xff, "Device Absent" },
|
||||
{ 0x08, 0x01, 0xff, "Device Present" },
|
||||
{ 0x09, 0x00, 0xff, "Device Disabled" },
|
||||
{ 0x09, 0x01, 0xff, "Device Enabled" },
|
||||
{ 0x0a, 0x00, 0xff, "Transition to Running" },
|
||||
{ 0x0a, 0x01, 0xff, "Transition to In Test" },
|
||||
{ 0x0a, 0x02, 0xff, "Transition to Power Off" },
|
||||
{ 0x0a, 0x03, 0xff, "Transition to On Line" },
|
||||
{ 0x0a, 0x04, 0xff, "Transition to Off Line" },
|
||||
{ 0x0a, 0x05, 0xff, "Transition to Off Duty" },
|
||||
{ 0x0a, 0x06, 0xff, "Transition to Degraded" },
|
||||
{ 0x0a, 0x07, 0xff, "Transition to Power Save" },
|
||||
{ 0x0a, 0x08, 0xff, "Install Error" },
|
||||
/* Redundancy States */
|
||||
{ 0x0b, 0x00, 0xff, "Fully Redundant" },
|
||||
{ 0x0b, 0x01, 0xff, "Redundancy Lost" },
|
||||
{ 0x0b, 0x02, 0xff, "Redundancy Degraded" },
|
||||
{ 0x0b, 0x03, 0xff, "Non-Redundant: Sufficient from Redundant" },
|
||||
{ 0x0b, 0x04, 0xff, "Non-Redundant: Sufficient from Insufficient" },
|
||||
{ 0x0b, 0x05, 0xff, "Non-Redundant: Insufficient Resources" },
|
||||
{ 0x0b, 0x06, 0xff, "Redundancy Degraded from Fully Redundant" },
|
||||
{ 0x0b, 0x07, 0xff, "Redundancy Degraded from Non-Redundant" },
|
||||
/* ACPI Device Power States */
|
||||
{ 0x0c, 0x00, 0xff, "D0 Power State" },
|
||||
{ 0x0c, 0x01, 0xff, "D1 Power State" },
|
||||
{ 0x0c, 0x02, 0xff, "D2 Power State" },
|
||||
{ 0x0c, 0x03, 0xff, "D3 Power State" },
|
||||
/* END */
|
||||
{ 0x00, 0x00, 0xff, NULL },
|
||||
};
|
||||
|
||||
static const struct ipmi_event_sensor_types sensor_specific_event_types[] = {
|
||||
/* Physical Security */
|
||||
{ 0x05, 0x00, 0xff, "General Chassis intrusion" },
|
||||
{ 0x05, 0x01, 0xff, "Drive Bay intrusion" },
|
||||
{ 0x05, 0x02, 0xff, "I/O Card area intrusion" },
|
||||
{ 0x05, 0x03, 0xff, "Processor area intrusion" },
|
||||
{ 0x05, 0x04, 0xff, "System unplugged from LAN" },
|
||||
{ 0x05, 0x05, 0xff, "Unauthorized dock" },
|
||||
{ 0x05, 0x06, 0xff, "FAN area intrusion" },
|
||||
/* Platform Security */
|
||||
{ 0x06, 0x00, 0xff, "Front Panel Lockout violation attempted" },
|
||||
{ 0x06, 0x01, 0xff, "Pre-boot password violation - user password" },
|
||||
{ 0x06, 0x02, 0xff, "Pre-boot password violation - setup password" },
|
||||
{ 0x06, 0x03, 0xff, "Pre-boot password violation - network boot password" },
|
||||
{ 0x06, 0x04, 0xff, "Other pre-boot password violation" },
|
||||
{ 0x06, 0x05, 0xff, "Out-of-band access password violation" },
|
||||
/* Processor */
|
||||
{ 0x07, 0x00, 0xff, "IERR" },
|
||||
{ 0x07, 0x01, 0xff, "Thermal Trip" },
|
||||
{ 0x07, 0x02, 0xff, "FRB1/BIST failure" },
|
||||
{ 0x07, 0x03, 0xff, "FRB2/Hang in POST failure" },
|
||||
{ 0x07, 0x04, 0xff, "FRB3/Processor startup/init failure" },
|
||||
{ 0x07, 0x05, 0xff, "Configuration Error" },
|
||||
{ 0x07, 0x06, 0xff, "SM BIOS Uncorrectable CPU-complex Error" },
|
||||
{ 0x07, 0x07, 0xff, "Presence detected" },
|
||||
{ 0x07, 0x08, 0xff, "Disabled" },
|
||||
{ 0x07, 0x09, 0xff, "Terminator presence detected" },
|
||||
{ 0x07, 0x0a, 0xff, "Throttled" },
|
||||
{ 0x07, 0x0b, 0xff, "Uncorrectable machine check exception" },
|
||||
{ 0x07, 0x0c, 0xff, "Correctable machine check error" },
|
||||
/* Power Supply */
|
||||
{ 0x08, 0x00, 0xff, "Presence detected" },
|
||||
{ 0x08, 0x01, 0xff, "Failure detected" },
|
||||
{ 0x08, 0x02, 0xff, "Predictive failure" },
|
||||
{ 0x08, 0x03, 0xff, "Power Supply AC lost" },
|
||||
{ 0x08, 0x04, 0xff, "AC lost or out-of-range" },
|
||||
{ 0x08, 0x05, 0xff, "AC out-of-range, but present" },
|
||||
{ 0x08, 0x06, 0x00, "Config Error: Vendor Mismatch" },
|
||||
{ 0x08, 0x06, 0x01, "Config Error: Revision Mismatch" },
|
||||
{ 0x08, 0x06, 0x02, "Config Error: Processor Missing" },
|
||||
{ 0x08, 0x06, 0x03, "Config Error: Power Supply Rating Mismatch" },
|
||||
{ 0x08, 0x06, 0x04, "Config Error: Voltage Rating Mismatch" },
|
||||
{ 0x08, 0x06, 0xff, "Config Error" },
|
||||
{ 0x08, 0x06, 0xff, "Power Supply Inactive" },
|
||||
/* Power Unit */
|
||||
{ 0x09, 0x00, 0xff, "Power off/down" },
|
||||
{ 0x09, 0x01, 0xff, "Power cycle" },
|
||||
{ 0x09, 0x02, 0xff, "240VA power down" },
|
||||
{ 0x09, 0x03, 0xff, "Interlock power down" },
|
||||
{ 0x09, 0x04, 0xff, "AC lost" },
|
||||
{ 0x09, 0x05, 0xff, "Soft-power control failure" },
|
||||
{ 0x09, 0x06, 0xff, "Failure detected" },
|
||||
{ 0x09, 0x07, 0xff, "Predictive failure" },
|
||||
/* Memory */
|
||||
{ 0x0c, 0x00, 0xff, "Correctable ECC" },
|
||||
{ 0x0c, 0x01, 0xff, "Uncorrectable ECC" },
|
||||
{ 0x0c, 0x02, 0xff, "Parity" },
|
||||
{ 0x0c, 0x03, 0xff, "Memory Scrub Failed" },
|
||||
{ 0x0c, 0x04, 0xff, "Memory Device Disabled" },
|
||||
{ 0x0c, 0x05, 0xff, "Correctable ECC logging limit reached" },
|
||||
{ 0x0c, 0x06, 0xff, "Presence Detected" },
|
||||
{ 0x0c, 0x07, 0xff, "Configuration Error" },
|
||||
{ 0x0c, 0x08, 0xff, "Spare" },
|
||||
{ 0x0c, 0x09, 0xff, "Throttled" },
|
||||
{ 0x0c, 0x0a, 0xff, "Critical Overtemperature" },
|
||||
/* Drive Slot */
|
||||
{ 0x0d, 0x00, 0xff, "Drive Present" },
|
||||
{ 0x0d, 0x01, 0xff, "Drive Fault" },
|
||||
{ 0x0d, 0x02, 0xff, "Predictive Failure" },
|
||||
{ 0x0d, 0x03, 0xff, "Hot Spare" },
|
||||
{ 0x0d, 0x04, 0xff, "Parity Check In Progress" },
|
||||
{ 0x0d, 0x05, 0xff, "In Critical Array" },
|
||||
{ 0x0d, 0x06, 0xff, "In Failed Array" },
|
||||
{ 0x0d, 0x07, 0xff, "Rebuild In Progress" },
|
||||
{ 0x0d, 0x08, 0xff, "Rebuild Aborted" },
|
||||
/* System Firmware Error */
|
||||
{ 0x0f, 0x00, 0x00, "Unspecified" },
|
||||
{ 0x0f, 0x00, 0x01, "No system memory installed" },
|
||||
{ 0x0f, 0x00, 0x02, "No usable system memory" },
|
||||
{ 0x0f, 0x00, 0x03, "Unrecoverable IDE device failure" },
|
||||
{ 0x0f, 0x00, 0x04, "Unrecoverable system-board failure" },
|
||||
{ 0x0f, 0x00, 0x05, "Unrecoverable diskette failure" },
|
||||
{ 0x0f, 0x00, 0x06, "Unrecoverable hard-disk controller failure" },
|
||||
{ 0x0f, 0x00, 0x07, "Unrecoverable PS/2 or USB keyboard failure" },
|
||||
{ 0x0f, 0x00, 0x08, "Removable boot media not found" },
|
||||
{ 0x0f, 0x00, 0x09, "Unrecoverable video controller failure" },
|
||||
{ 0x0f, 0x00, 0x0a, "No video device selected" },
|
||||
{ 0x0f, 0x00, 0x0b, "BIOS corruption detected" },
|
||||
{ 0x0f, 0x00, 0x0c, "CPU voltage mismatch" },
|
||||
{ 0x0f, 0x00, 0x0d, "CPU speed mismatch failure" },
|
||||
{ 0x0f, 0x00, 0xff, "Unknown Error" },
|
||||
/* System Firmware Hang */
|
||||
{ 0x0f, 0x01, 0x00, "Unspecified" },
|
||||
{ 0x0f, 0x01, 0x01, "Memory initialization" },
|
||||
{ 0x0f, 0x01, 0x02, "Hard-disk initialization" },
|
||||
{ 0x0f, 0x01, 0x03, "Secondary CPU Initialization" },
|
||||
{ 0x0f, 0x01, 0x04, "User authentication" },
|
||||
{ 0x0f, 0x01, 0x05, "User-initiated system setup" },
|
||||
{ 0x0f, 0x01, 0x06, "USB resource configuration" },
|
||||
{ 0x0f, 0x01, 0x07, "PCI resource configuration" },
|
||||
{ 0x0f, 0x01, 0x08, "Option ROM initialization" },
|
||||
{ 0x0f, 0x01, 0x09, "Video initialization" },
|
||||
{ 0x0f, 0x01, 0x0a, "Cache initialization" },
|
||||
{ 0x0f, 0x01, 0x0b, "SMBus initialization" },
|
||||
{ 0x0f, 0x01, 0x0c, "Keyboard controller initialization" },
|
||||
{ 0x0f, 0x01, 0x0d, "Management controller initialization" },
|
||||
{ 0x0f, 0x01, 0x0e, "Docking station attachment" },
|
||||
{ 0x0f, 0x01, 0x0f, "Enabling docking station" },
|
||||
{ 0x0f, 0x01, 0x10, "Docking station ejection" },
|
||||
{ 0x0f, 0x01, 0x11, "Disabling docking station" },
|
||||
{ 0x0f, 0x01, 0x12, "Calling operating system wake-up vector" },
|
||||
{ 0x0f, 0x01, 0x13, "System boot initiated" },
|
||||
{ 0x0f, 0x01, 0x14, "Motherboard initialization" },
|
||||
{ 0x0f, 0x01, 0x15, "reserved" },
|
||||
{ 0x0f, 0x01, 0x16, "Floppy initialization" },
|
||||
{ 0x0f, 0x01, 0x17, "Keyboard test" },
|
||||
{ 0x0f, 0x01, 0x18, "Pointing device test" },
|
||||
{ 0x0f, 0x01, 0x19, "Primary CPU initialization" },
|
||||
{ 0x0f, 0x01, 0xff, "Unknown Hang" },
|
||||
/* System Firmware Progress */
|
||||
{ 0x0f, 0x02, 0x00, "Unspecified" },
|
||||
{ 0x0f, 0x02, 0x01, "Memory initialization" },
|
||||
{ 0x0f, 0x02, 0x02, "Hard-disk initialization" },
|
||||
{ 0x0f, 0x02, 0x03, "Secondary CPU Initialization" },
|
||||
{ 0x0f, 0x02, 0x04, "User authentication" },
|
||||
{ 0x0f, 0x02, 0x05, "User-initiated system setup" },
|
||||
{ 0x0f, 0x02, 0x06, "USB resource configuration" },
|
||||
{ 0x0f, 0x02, 0x07, "PCI resource configuration" },
|
||||
{ 0x0f, 0x02, 0x08, "Option ROM initialization" },
|
||||
{ 0x0f, 0x02, 0x09, "Video initialization" },
|
||||
{ 0x0f, 0x02, 0x0a, "Cache initialization" },
|
||||
{ 0x0f, 0x02, 0x0b, "SMBus initialization" },
|
||||
{ 0x0f, 0x02, 0x0c, "Keyboard controller initialization" },
|
||||
{ 0x0f, 0x02, 0x0d, "Management controller initialization" },
|
||||
{ 0x0f, 0x02, 0x0e, "Docking station attachment" },
|
||||
{ 0x0f, 0x02, 0x0f, "Enabling docking station" },
|
||||
{ 0x0f, 0x02, 0x10, "Docking station ejection" },
|
||||
{ 0x0f, 0x02, 0x11, "Disabling docking station" },
|
||||
{ 0x0f, 0x02, 0x12, "Calling operating system wake-up vector" },
|
||||
{ 0x0f, 0x02, 0x13, "System boot initiated" },
|
||||
{ 0x0f, 0x02, 0x14, "Motherboard initialization" },
|
||||
{ 0x0f, 0x02, 0x15, "reserved" },
|
||||
{ 0x0f, 0x02, 0x16, "Floppy initialization" },
|
||||
{ 0x0f, 0x02, 0x17, "Keyboard test" },
|
||||
{ 0x0f, 0x02, 0x18, "Pointing device test" },
|
||||
{ 0x0f, 0x02, 0x19, "Primary CPU initialization" },
|
||||
{ 0x0f, 0x02, 0xff, "Unknown Progress" },
|
||||
/* Event Logging Disabled */
|
||||
{ 0x10, 0x00, 0xff, "Correctable memory error logging disabled" },
|
||||
{ 0x10, 0x01, 0xff, "Event logging disabled" },
|
||||
{ 0x10, 0x02, 0xff, "Log area reset/cleared" },
|
||||
{ 0x10, 0x03, 0xff, "All event logging disabled" },
|
||||
{ 0x10, 0x04, 0xff, "Log full" },
|
||||
{ 0x10, 0x05, 0xff, "Log almost full" },
|
||||
/* Watchdog 1 */
|
||||
{ 0x11, 0x00, 0xff, "BIOS Reset" },
|
||||
{ 0x11, 0x01, 0xff, "OS Reset" },
|
||||
{ 0x11, 0x02, 0xff, "OS Shut Down" },
|
||||
{ 0x11, 0x03, 0xff, "OS Power Down" },
|
||||
{ 0x11, 0x04, 0xff, "OS Power Cycle" },
|
||||
{ 0x11, 0x05, 0xff, "OS NMI/Diag Interrupt" },
|
||||
{ 0x11, 0x06, 0xff, "OS Expired" },
|
||||
{ 0x11, 0x07, 0xff, "OS pre-timeout Interrupt" },
|
||||
/* System Event */
|
||||
{ 0x12, 0x00, 0xff, "System Reconfigured" },
|
||||
{ 0x12, 0x01, 0xff, "OEM System boot event" },
|
||||
{ 0x12, 0x02, 0xff, "Undetermined system hardware failure" },
|
||||
{ 0x12, 0x03, 0xff, "Entry added to auxiliary log" },
|
||||
{ 0x12, 0x04, 0xff, "PEF Action" },
|
||||
{ 0x12, 0x05, 0xff, "Timestamp Clock Sync" },
|
||||
/* Critical Interrupt */
|
||||
{ 0x13, 0x00, 0xff, "NMI/Diag Interrupt" },
|
||||
{ 0x13, 0x01, 0xff, "Bus Timeout" },
|
||||
{ 0x13, 0x02, 0xff, "I/O Channel check NMI" },
|
||||
{ 0x13, 0x03, 0xff, "Software NMI" },
|
||||
{ 0x13, 0x04, 0xff, "PCI PERR" },
|
||||
{ 0x13, 0x05, 0xff, "PCI SERR" },
|
||||
{ 0x13, 0x06, 0xff, "EISA failsafe timeout" },
|
||||
{ 0x13, 0x07, 0xff, "Bus Correctable error" },
|
||||
{ 0x13, 0x08, 0xff, "Bus Uncorrectable error" },
|
||||
{ 0x13, 0x09, 0xff, "Fatal NMI" },
|
||||
{ 0x13, 0x0a, 0xff, "Bus Fatal Error" },
|
||||
{ 0x13, 0x0b, 0xff, "Bus Degraded" },
|
||||
/* Button */
|
||||
{ 0x14, 0x00, 0xff, "Power Button pressed" },
|
||||
{ 0x14, 0x01, 0xff, "Sleep Button pressed" },
|
||||
{ 0x14, 0x02, 0xff, "Reset Button pressed" },
|
||||
{ 0x14, 0x03, 0xff, "FRU Latch" },
|
||||
{ 0x14, 0x04, 0xff, "FRU Service" },
|
||||
/* Chip Set */
|
||||
{ 0x19, 0x00, 0xff, "Soft Power Control Failure" },
|
||||
{ 0x19, 0x01, 0xff, "Thermal Trip" },
|
||||
/* Cable/Interconnect */
|
||||
{ 0x1b, 0x00, 0xff, "Connected" },
|
||||
{ 0x1b, 0x01, 0xff, "Config Error" },
|
||||
/* System Boot Initiated */
|
||||
{ 0x1d, 0x00, 0xff, "Initiated by power up" },
|
||||
{ 0x1d, 0x01, 0xff, "Initiated by hard reset" },
|
||||
{ 0x1d, 0x02, 0xff, "Initiated by warm reset" },
|
||||
{ 0x1d, 0x03, 0xff, "User requested PXE boot" },
|
||||
{ 0x1d, 0x04, 0xff, "Automatic boot to diagnostic" },
|
||||
{ 0x1d, 0x05, 0xff, "OS initiated hard reset" },
|
||||
{ 0x1d, 0x06, 0xff, "OS initiated warm reset" },
|
||||
{ 0x1d, 0x07, 0xff, "System Restart" },
|
||||
/* Boot Error */
|
||||
{ 0x1e, 0x00, 0xff, "No bootable media" },
|
||||
{ 0x1e, 0x01, 0xff, "Non-bootable disk in drive" },
|
||||
{ 0x1e, 0x02, 0xff, "PXE server not found" },
|
||||
{ 0x1e, 0x03, 0xff, "Invalid boot sector" },
|
||||
{ 0x1e, 0x04, 0xff, "Timeout waiting for selection" },
|
||||
/* OS Boot */
|
||||
{ 0x1f, 0x00, 0xff, "A: boot completed" },
|
||||
{ 0x1f, 0x01, 0xff, "C: boot completed" },
|
||||
{ 0x1f, 0x02, 0xff, "PXE boot completed" },
|
||||
{ 0x1f, 0x03, 0xff, "Diagnostic boot completed" },
|
||||
{ 0x1f, 0x04, 0xff, "CD-ROM boot completed" },
|
||||
{ 0x1f, 0x05, 0xff, "ROM boot completed" },
|
||||
{ 0x1f, 0x06, 0xff, "boot completed - device not specified" },
|
||||
{ 0x1f, 0x07, 0xff, "Installation started" },
|
||||
{ 0x1f, 0x08, 0xff, "Installation completed" },
|
||||
{ 0x1f, 0x09, 0xff, "Installation aborted" },
|
||||
{ 0x1f, 0x0a, 0xff, "Installation failed" },
|
||||
/* OS Stop/Shutdown */
|
||||
{ 0x20, 0x00, 0xff, "Error during system startup" },
|
||||
{ 0x20, 0x01, 0xff, "Run-time critical stop" },
|
||||
{ 0x20, 0x02, 0xff, "OS graceful stop" },
|
||||
{ 0x20, 0x03, 0xff, "OS graceful shutdown" },
|
||||
{ 0x20, 0x04, 0xff, "PEF initiated soft shutdown" },
|
||||
{ 0x20, 0x05, 0xff, "Agent not responding" },
|
||||
/* Slot/Connector */
|
||||
{ 0x21, 0x00, 0xff, "Fault Status" },
|
||||
{ 0x21, 0x01, 0xff, "Identify Status" },
|
||||
{ 0x21, 0x02, 0xff, "Device Installed" },
|
||||
{ 0x21, 0x03, 0xff, "Ready for Device Installation" },
|
||||
{ 0x21, 0x04, 0xff, "Ready for Device Removal" },
|
||||
{ 0x21, 0x05, 0xff, "Slot Power is Off" },
|
||||
{ 0x21, 0x06, 0xff, "Device Removal Request" },
|
||||
{ 0x21, 0x07, 0xff, "Interlock" },
|
||||
{ 0x21, 0x08, 0xff, "Slot is Disabled" },
|
||||
{ 0x21, 0x09, 0xff, "Spare Device" },
|
||||
/* System ACPI Power State */
|
||||
{ 0x22, 0x00, 0xff, "S0/G0: working" },
|
||||
{ 0x22, 0x01, 0xff, "S1: sleeping with system hw & processor context maintained" },
|
||||
{ 0x22, 0x02, 0xff, "S2: sleeping, processor context lost" },
|
||||
{ 0x22, 0x03, 0xff, "S3: sleeping, processor & hw context lost, memory retained" },
|
||||
{ 0x22, 0x04, 0xff, "S4: non-volatile sleep/suspend-to-disk" },
|
||||
{ 0x22, 0x05, 0xff, "S5/G2: soft-off" },
|
||||
{ 0x22, 0x06, 0xff, "S4/S5: soft-off" },
|
||||
{ 0x22, 0x07, 0xff, "G3: mechanical off" },
|
||||
{ 0x22, 0x08, 0xff, "Sleeping in S1/S2/S3 state" },
|
||||
{ 0x22, 0x09, 0xff, "G1: sleeping" },
|
||||
{ 0x22, 0x0a, 0xff, "S5: entered by override" },
|
||||
{ 0x22, 0x0b, 0xff, "Legacy ON state" },
|
||||
{ 0x22, 0x0c, 0xff, "Legacy OFF state" },
|
||||
{ 0x22, 0x0e, 0xff, "Unknown" },
|
||||
/* Watchdog 2 */
|
||||
{ 0x23, 0x00, 0xff, "Timer expired" },
|
||||
{ 0x23, 0x01, 0xff, "Hard reset" },
|
||||
{ 0x23, 0x02, 0xff, "Power down" },
|
||||
{ 0x23, 0x03, 0xff, "Power cycle" },
|
||||
{ 0x23, 0x04, 0xff, "reserved" },
|
||||
{ 0x23, 0x05, 0xff, "reserved" },
|
||||
{ 0x23, 0x06, 0xff, "reserved" },
|
||||
{ 0x23, 0x07, 0xff, "reserved" },
|
||||
{ 0x23, 0x08, 0xff, "Timer interrupt" },
|
||||
/* Platform Alert */
|
||||
{ 0x24, 0x00, 0xff, "Platform generated page" },
|
||||
{ 0x24, 0x01, 0xff, "Platform generated LAN alert" },
|
||||
{ 0x24, 0x02, 0xff, "Platform Event Trap generated" },
|
||||
{ 0x24, 0x03, 0xff, "Platform generated SNMP trap, OEM format" },
|
||||
/* Entity Presence */
|
||||
{ 0x25, 0x00, 0xff, "Present" },
|
||||
{ 0x25, 0x01, 0xff, "Absent" },
|
||||
{ 0x25, 0x02, 0xff, "Disabled" },
|
||||
/* LAN */
|
||||
{ 0x27, 0x00, 0xff, "Heartbeat Lost" },
|
||||
{ 0x27, 0x01, 0xff, "Heartbeat" },
|
||||
/* Management Subsystem Health */
|
||||
{ 0x28, 0x00, 0xff, "Sensor access degraded or unavailable" },
|
||||
{ 0x28, 0x01, 0xff, "Controller access degraded or unavailable" },
|
||||
{ 0x28, 0x02, 0xff, "Management controller off-line" },
|
||||
{ 0x28, 0x03, 0xff, "Management controller unavailable" },
|
||||
{ 0x28, 0x04, 0xff, "Sensor failure" },
|
||||
{ 0x28, 0x05, 0xff, "FRU failure" },
|
||||
/* Battery */
|
||||
{ 0x29, 0x00, 0xff, "Low" },
|
||||
{ 0x29, 0x01, 0xff, "Failed" },
|
||||
{ 0x29, 0x02, 0xff, "Presence Detected" },
|
||||
/* Version Change */
|
||||
{ 0x2b, 0x00, 0xff, "Hardware change detected" },
|
||||
{ 0x2b, 0x01, 0x00, "Firmware or software change detected" },
|
||||
{ 0x2b, 0x01, 0x01, "Firmware or software change detected, Mngmt Ctrl Dev Id" },
|
||||
{ 0x2b, 0x01, 0x02, "Firmware or software change detected, Mngmt Ctrl Firm Rev" },
|
||||
{ 0x2b, 0x01, 0x03, "Firmware or software change detected, Mngmt Ctrl Dev Rev" },
|
||||
{ 0x2b, 0x01, 0x04, "Firmware or software change detected, Mngmt Ctrl Manuf Id" },
|
||||
{ 0x2b, 0x01, 0x05, "Firmware or software change detected, Mngmt Ctrl IPMI Vers" },
|
||||
{ 0x2b, 0x01, 0x06, "Firmware or software change detected, Mngmt Ctrl Aux Firm Id" },
|
||||
{ 0x2b, 0x01, 0x07, "Firmware or software change detected, Mngmt Ctrl Firm Boot Block" },
|
||||
{ 0x2b, 0x01, 0x08, "Firmware or software change detected, Mngmt Ctrl Other" },
|
||||
{ 0x2b, 0x01, 0x09, "Firmware or software change detected, BIOS/EFI change" },
|
||||
{ 0x2b, 0x01, 0x0A, "Firmware or software change detected, SMBIOS change" },
|
||||
{ 0x2b, 0x01, 0x0B, "Firmware or software change detected, O/S change" },
|
||||
{ 0x2b, 0x01, 0x0C, "Firmware or software change detected, O/S loader change" },
|
||||
{ 0x2b, 0x01, 0x0D, "Firmware or software change detected, Service Diag change" },
|
||||
{ 0x2b, 0x01, 0x0E, "Firmware or software change detected, Mngmt SW agent change" },
|
||||
{ 0x2b, 0x01, 0x0F, "Firmware or software change detected, Mngmt SW App change" },
|
||||
{ 0x2b, 0x01, 0x10, "Firmware or software change detected, Mngmt SW Middle" },
|
||||
{ 0x2b, 0x01, 0x11, "Firmware or software change detected, Prog HW Change (FPGA)" },
|
||||
{ 0x2b, 0x01, 0x12, "Firmware or software change detected, board/FRU module change" },
|
||||
{ 0x2b, 0x01, 0x13, "Firmware or software change detected, board/FRU component change" },
|
||||
{ 0x2b, 0x01, 0x14, "Firmware or software change detected, board/FRU replace equ ver" },
|
||||
{ 0x2b, 0x01, 0x15, "Firmware or software change detected, board/FRU replace new ver" },
|
||||
{ 0x2b, 0x01, 0x16, "Firmware or software change detected, board/FRU replace old ver" },
|
||||
{ 0x2b, 0x01, 0x17, "Firmware or software change detected, board/FRU HW conf change" },
|
||||
{ 0x2b, 0x02, 0xff, "Hardware incompatibility detected" },
|
||||
{ 0x2b, 0x03, 0xff, "Firmware or software incompatibility detected" },
|
||||
{ 0x2b, 0x04, 0xff, "Invalid or unsupported hardware version" },
|
||||
{ 0x2b, 0x05, 0xff, "Invalid or unsupported firmware or software version" },
|
||||
{ 0x2b, 0x06, 0xff, "Hardware change success" },
|
||||
{ 0x2b, 0x07, 0x00, "Firmware or software change success" },
|
||||
{ 0x2b, 0x07, 0x01, "Firmware or software change success, Mngmt Ctrl Dev Id" },
|
||||
{ 0x2b, 0x07, 0x02, "Firmware or software change success, Mngmt Ctrl Firm Rev" },
|
||||
{ 0x2b, 0x07, 0x03, "Firmware or software change success, Mngmt Ctrl Dev Rev" },
|
||||
{ 0x2b, 0x07, 0x04, "Firmware or software change success, Mngmt Ctrl Manuf Id" },
|
||||
{ 0x2b, 0x07, 0x05, "Firmware or software change success, Mngmt Ctrl IPMI Vers" },
|
||||
{ 0x2b, 0x07, 0x06, "Firmware or software change success, Mngmt Ctrl Aux Firm Id" },
|
||||
{ 0x2b, 0x07, 0x07, "Firmware or software change success, Mngmt Ctrl Firm Boot Block" },
|
||||
{ 0x2b, 0x07, 0x08, "Firmware or software change success, Mngmt Ctrl Other" },
|
||||
{ 0x2b, 0x07, 0x09, "Firmware or software change success, BIOS/EFI change" },
|
||||
{ 0x2b, 0x07, 0x0A, "Firmware or software change success, SMBIOS change" },
|
||||
{ 0x2b, 0x07, 0x0B, "Firmware or software change success, O/S change" },
|
||||
{ 0x2b, 0x07, 0x0C, "Firmware or software change success, O/S loader change" },
|
||||
{ 0x2b, 0x07, 0x0D, "Firmware or software change success, Service Diag change" },
|
||||
{ 0x2b, 0x07, 0x0E, "Firmware or software change success, Mngmt SW agent change" },
|
||||
{ 0x2b, 0x07, 0x0F, "Firmware or software change success, Mngmt SW App change" },
|
||||
{ 0x2b, 0x07, 0x10, "Firmware or software change success, Mngmt SW Middle" },
|
||||
{ 0x2b, 0x07, 0x11, "Firmware or software change success, Prog HW Change (FPGA)" },
|
||||
{ 0x2b, 0x07, 0x12, "Firmware or software change success, board/FRU module change" },
|
||||
{ 0x2b, 0x07, 0x13, "Firmware or software change success, board/FRU component change" },
|
||||
{ 0x2b, 0x07, 0x14, "Firmware or software change success, board/FRU replace equ ver" },
|
||||
{ 0x2b, 0x07, 0x15, "Firmware or software change success, board/FRU replace new ver" },
|
||||
{ 0x2b, 0x07, 0x16, "Firmware or software change success, board/FRU replace old ver" },
|
||||
{ 0x2b, 0x07, 0x17, "Firmware or software change success, board/FRU HW conf change" },
|
||||
/* FRU State */
|
||||
{ 0x2c, 0x00, 0xff, "Not Installed" },
|
||||
{ 0x2c, 0x01, 0xff, "Inactive" },
|
||||
{ 0x2c, 0x02, 0xff, "Activation Requested" },
|
||||
{ 0x2c, 0x03, 0xff, "Activation in Progress" },
|
||||
{ 0x2c, 0x04, 0xff, "Active" },
|
||||
{ 0x2c, 0x05, 0xff, "Deactivation Requested" },
|
||||
{ 0x2c, 0x06, 0xff, "Deactivation in Progress" },
|
||||
{ 0x2c, 0x07, 0xff, "Communication lost" },
|
||||
/* PICMG FRU Hot Swap */
|
||||
{ 0xF0, 0x00, 0xFF, "Transition to M0" },
|
||||
{ 0xF0, 0x01, 0xFF, "Transition to M1" },
|
||||
{ 0xF0, 0x02, 0xFF, "Transition to M2" },
|
||||
{ 0xF0, 0x03, 0xFF, "Transition to M3" },
|
||||
{ 0xF0, 0x04, 0xFF, "Transition to M4" },
|
||||
{ 0xF0, 0x05, 0xFF, "Transition to M5" },
|
||||
{ 0xF0, 0x06, 0xFF, "Transition to M6" },
|
||||
{ 0xF0, 0x07, 0xFF, "Transition to M7" },
|
||||
/* PICMG IPMB Physical Link */
|
||||
{ 0xF1, 0x00, 0xff, "IPMB-A disabled, IPMB-B disabled" },
|
||||
{ 0xF1, 0x01, 0xff, "IPMB-A enabled, IPMB-B disabled" },
|
||||
{ 0xF1, 0x02, 0xff, "IPMB-A disabled, IPMB-B enabled" },
|
||||
{ 0xF1, 0x03, 0xff, "IPMB-A enabled, IPMB-B enabled" },
|
||||
/* PICMG Module Hot Swap */
|
||||
{ 0xF2, 0x00, 0xff, "Module Handle Closed" },
|
||||
{ 0xF2, 0x01, 0xff, "Module Handle Opened" },
|
||||
{ 0xF2, 0x02, 0xff, "Quiesced" },
|
||||
{ 0x00, 0x00, 0xff, NULL },
|
||||
};
|
||||
|
||||
static const struct ipmi_event_sensor_types vita_sensor_event_types[] = {
|
||||
/* VITA FRU State */
|
||||
{ 0xF0, 0x00, 0xFF, "Transition to M0" },
|
||||
{ 0xF0, 0x01, 0xFF, "Transition to M1" },
|
||||
{ 0xF0, 0x04, 0xFF, "Transition to M4" },
|
||||
{ 0xF0, 0x05, 0xFF, "Transition to M5" },
|
||||
{ 0xF0, 0x06, 0xFF, "Transition to M6" },
|
||||
{ 0xF0, 0x07, 0xFF, "Transition to M7" },
|
||||
/* VITA System IPMB Link */
|
||||
{ 0xF1, 0x00, 0xFF, "IPMB-A disabled, IPMB-B disabled" },
|
||||
{ 0xF1, 0x01, 0xFF, "IPMB-A enabled, IPMB-B disabled" },
|
||||
{ 0xF1, 0x02, 0xFF, "IPMB-A disabled, IPMB-B enabled" },
|
||||
{ 0xF1, 0x03, 0xFF, "IPMB-A enabled, IPMB-B enabled" },
|
||||
/* VITA FRU Temperature */
|
||||
{ 0xF3, 0x00, 0xff, "At or below Lower Non-critical" },
|
||||
{ 0xF3, 0x01, 0xff, "At or below Lower Critical" },
|
||||
{ 0xF3, 0x02, 0xff, "At or below Lower Non-recoverable" },
|
||||
{ 0xF3, 0x03, 0xff, "At or above Upper Non-critical" },
|
||||
{ 0xF3, 0x04, 0xff, "At or above Upper Critical" },
|
||||
{ 0xF3, 0x05, 0xff, "At or above Upper Non-recoverable" },
|
||||
{ 0x00, 0x00, 0xff, NULL }
|
||||
};
|
||||
|
||||
static const struct ipmi_event_sensor_types oem_kontron_event_types[] = {
|
||||
/* Board Reset(cPCI) */
|
||||
{ 0xC1, 0x00, 0xff, "Push Button" },
|
||||
{ 0xC1, 0x01, 0xff, "Bridge Reset" },
|
||||
{ 0xC1, 0x02, 0xff, "Backplane" },
|
||||
{ 0xC1, 0x03, 0xff, "Hotswap Fault" },
|
||||
{ 0xC1, 0x04, 0xff, "Hotswap Healty" },
|
||||
{ 0xC1, 0x05, 0xff, "Unknown" },
|
||||
{ 0xC1, 0x06, 0xff, "ITP" },
|
||||
{ 0xC1, 0x07, 0xff, "Hardware Watchdog" },
|
||||
{ 0xC1, 0x08, 0xff, "Software Reset" },
|
||||
/* IPMB-L Link State, based on PICMG IPMB-0 Link state sensor */
|
||||
{ 0xC3, 0x02, 0xff, "IPMB L Disabled" },
|
||||
{ 0xC3, 0x03, 0xff, "IPMB L Enabled" },
|
||||
/* Board Reset */
|
||||
{ 0xC4, 0x00, 0xff, "Push Button" },
|
||||
{ 0xC4, 0x01, 0xff, "Hardware Power Failure" },
|
||||
{ 0xC4, 0x02, 0xff, "Unknown" },
|
||||
{ 0xC4, 0x03, 0xff, "Hardware Watchdog" },
|
||||
{ 0xC4, 0x04, 0xff, "Soft Reset" },
|
||||
{ 0xC4, 0x05, 0xff, "Warm Reset" },
|
||||
{ 0xC4, 0x06, 0xff, "Cold Reset" },
|
||||
{ 0xC4, 0x07, 0xff, "IPMI Command" },
|
||||
{ 0xC4, 0x08, 0xff, "Setup Reset (Save CMOS)" },
|
||||
{ 0xC4, 0x09, 0xff, "Power Up Reset" },
|
||||
/* POST Value */
|
||||
{ 0xC6, 0x0E, 0xff, "Post Error (see data2)" },
|
||||
/* FWUM Status */
|
||||
{ 0xC7, 0x00, 0xff, "First Boot After Upgrade" },
|
||||
{ 0xC7, 0x01, 0xff, "First Boot After Rollback(error)" },
|
||||
{ 0xC7, 0x02, 0xff, "First Boot After Errors (watchdog)" },
|
||||
{ 0xC7, 0x03, 0xff, "First Boot After Manual Rollback" },
|
||||
{ 0xC7, 0x08, 0xff, "Firmware Watchdog Bite, reset occurred" },
|
||||
/* Switch Mngt Software Status */
|
||||
{ 0xC8, 0x00, 0xff, "Not Loaded" },
|
||||
{ 0xC8, 0x01, 0xff, "Initializing" },
|
||||
{ 0xC8, 0x02, 0xff, "Ready" },
|
||||
{ 0xC8, 0x03, 0xff, "Failure (see data2)" },
|
||||
/* Diagnostic Status */
|
||||
{ 0xC9, 0x00, 0xff, "Started" },
|
||||
{ 0xC9, 0x01, 0xff, "Pass" },
|
||||
{ 0xC9, 0x02, 0xff, "Fail" },
|
||||
{ 0xCA, 0x00, 0xff, "In progress"},
|
||||
{ 0xCA, 0x01, 0xff, "Success"},
|
||||
{ 0xCA, 0x02, 0xff, "Failure"},
|
||||
/* FRU Over Current */
|
||||
{ 0xCB, 0x00, 0xff, "Asserted"},
|
||||
{ 0xCB, 0x01, 0xff, "Deasserted"},
|
||||
/* FRU Sensor Error */
|
||||
{ 0xCC, 0x00, 0xff, "Asserted"},
|
||||
{ 0xCC, 0x01, 0xff, "Deasserted"},
|
||||
/* FRU Power Denied */
|
||||
{ 0xCD, 0x00, 0xff, "Asserted"},
|
||||
{ 0xCD, 0x01, 0xff, "Deasserted"},
|
||||
/* Reset */
|
||||
{ 0xCF, 0x00, 0xff, "Asserted"},
|
||||
{ 0xCF, 0x01, 0xff, "Deasserted"},
|
||||
/* END */
|
||||
{ 0x00, 0x00, 0xff, NULL },
|
||||
};
|
||||
|
||||
int ipmi_sel_main(struct ipmi_intf *, int, char **);
|
||||
void ipmi_sel_print_std_entry(struct ipmi_intf * intf, struct sel_event_record * evt);
|
||||
void ipmi_sel_print_std_entry_verbose(struct ipmi_intf * intf, struct sel_event_record * evt);
|
||||
void ipmi_sel_print_extended_entry(struct ipmi_intf * intf, struct sel_event_record * evt);
|
||||
void ipmi_sel_print_extended_entry_verbose(struct ipmi_intf * intf, struct sel_event_record * evt);
|
||||
void ipmi_get_event_desc(struct ipmi_intf * intf, struct sel_event_record * rec, char ** desc);
|
||||
const char * ipmi_get_sensor_type(struct ipmi_intf *intf, uint8_t code);
|
||||
uint16_t ipmi_sel_get_std_entry(struct ipmi_intf * intf, uint16_t id, struct sel_event_record * evt);
|
||||
char * get_newisys_evt_desc(struct ipmi_intf * intf, struct sel_event_record * rec);
|
||||
IPMI_OEM ipmi_get_oem(struct ipmi_intf * intf);
|
||||
char * ipmi_get_oem_desc(struct ipmi_intf * intf, struct sel_event_record * rec);
|
||||
int ipmi_sel_oem_init(const char * filename);
|
||||
const struct ipmi_event_sensor_types *
|
||||
ipmi_get_first_event_sensor_type(struct ipmi_intf *intf, uint8_t sensor_type, uint8_t event_type);
|
||||
const struct ipmi_event_sensor_types *
|
||||
ipmi_get_next_event_sensor_type(const struct ipmi_event_sensor_types *evt);
|
||||
|
||||
#endif /* IPMI_SEL_H */
|
155
include/ipmitool/ipmi_sel_supermicro.h
Normal file
155
include/ipmitool/ipmi_sel_supermicro.h
Normal file
@ -0,0 +1,155 @@
|
||||
/*
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Sun Microsystems, Inc. or the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
* SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
* SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
* OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef IPMI_SEL_SUPERMICRO_H
|
||||
# define IPMI_SEL_SUPERMICRO_H
|
||||
|
||||
static uint16_t supermicro_x11[] = {
|
||||
0x0958, 0x0955, 0x0953, 0x0952, 0x0941, 0x093A, 0x0939, 0x0938, 0x0937, 0x0930, 0x0927, 0x091D,
|
||||
0x091C, 0x0917, 0x090D, 0x0909, 0x0907, 0x0901, 0x089F, 0x089C, 0x089B, 0x089A, 0x0898, 0x0896,
|
||||
0x0895, 0x0894, 0x0891, 0x0890, 0x0888, 0x0886, 0x0885, 0x0884, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_b11[] = {
|
||||
0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_b2[] = {
|
||||
0x0951, 0x094E, 0x0931, 0x092E, 0x092A, 0x0928, 0x0908, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_x10OBi[] = {
|
||||
0x0923, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_x10QRH[] = {
|
||||
0x0872, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_x10QBL[] = {
|
||||
0x0853, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_brickland[] = {
|
||||
0x0726, 0x083A, 0xFFFF
|
||||
};
|
||||
|
||||
|
||||
static uint16_t supermicro_x9dal[] = {
|
||||
0x0635, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_x9db[] = {
|
||||
0x0733, 0x0722, 0x0703, 0x0721, 0x0716, 0x0637, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_x9sb[] = {
|
||||
0x0651, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_x9[] = {
|
||||
0x0635, 0x0733, 0x0722, 0x0703, 0x0721, 0x0716, 0x0637, 0x0651, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_romely[] = {
|
||||
0x0841, 0x0732, 0x0731, 0x0730, 0x0727, 0x0725, 0x0724, 0x0723, 0x0720, 0x0718, 0x0717, 0x0715,
|
||||
0x0713, 0x0711, 0x070E, 0x070A, 0x0709, 0x0708, 0x0706, 0x0705, 0x0704, 0x0702, 0x0701, 0x0700,
|
||||
0x066F, 0x066E, 0x066D, 0x0669, 0x0667, 0x0666, 0x0665, 0x0664, 0x0662, 0x0660, 0x0636, 0x0630,
|
||||
0x062F, 0x062C, 0x0628, 0x0626, 0x0827, 0x070F, 0x0707, 0x0840, 0x0729, 0x0719, 0x0712, 0x070D,
|
||||
0x066C, 0x066A, 0x0625, 0x0714, 0x0710, 0x070C, 0x070B, 0x0668, 0x0663, 0x0661, 0x062B, 0x062A,
|
||||
0x0629, 0x093E, 0x0932, 0x092D, 0x092B, 0x0924, 0x0922, 0x0921, 0x091E, 0x0919, 0x0916, 0x089D,
|
||||
0x0899, 0x0893, 0x0892, 0x0882, 0x0881, 0x0880, 0x087F, 0x087D, 0x0879, 0x0877, 0x086F, 0x086E,
|
||||
0x086D, 0x086C, 0x086B, 0x085C, 0x085B, 0x084B, 0x0865, 0x0864, 0x0860, 0x0859, 0x0858, 0x0857,
|
||||
0x0854, 0x0852, 0x0845, 0x0844, 0x0843, 0x0842, 0x083B, 0x0838, 0x0837, 0x0836, 0x0835, 0x0834,
|
||||
0x0833, 0x0832, 0x0831, 0x0830, 0x0826, 0x0825, 0x0824, 0x0822, 0x0821, 0x0819, 0x0818, 0x0817,
|
||||
0x0816, 0x0815, 0x0814, 0x0728, 0x0813, 0x0812, 0x0810, 0x0807, 0x0806, 0x0805, 0x0804, 0x0803,
|
||||
0x0802, 0x0801, 0x0889, 0x0861, 0x083E, 0x0846, 0x0946, 0x0950, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_b8[] = {
|
||||
0x000A, 0x061c, 0x0620, 0x0101, 0x061f, 0x0612, 0x061e, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_h8[] = {
|
||||
0xa111, 0x0408, 0x0811, 0x1411, 0x0911, 0x1211, 0x1011, 0xcd11, 0x1111, 0xbe11, 0xce11, 0xbd11,
|
||||
0xbc11, 0xa911, 0xaa11, 0xcb11, 0xad11, 0xa811, 0xac11, 0xaf11, 0xa511, 0xa011, 0x1611, 0x2511,
|
||||
0xbf11, 0x1511, 0x2211, 0x2411, 0x1911, 0xab11, 0xd011, 0xae11, 0xca11, 0x0409, 0xa211, 0xa311,
|
||||
0x1311, 0xba11, 0xa711, 0xd111, 0x1711, 0xcf11, 0x2011, 0x1811, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_p8[] = {
|
||||
0x5980, 0x6280, 0x6480, 0x7380, 0x7480, 0x0933, 0x094F, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_x8[] = {
|
||||
0xa880, 0x0403, 0x0100, 0x0601, 0x0001, 0x0404, 0x0606, 0x0608, 0x0632, 0x0400, 0x0401, 0x0006,
|
||||
0x040a, 0xf280, 0x060f, 0x0609, 0x0008, 0x0613, 0x061b, 0x0007, 0x0600, 0x060c, 0x060d, 0x0614,
|
||||
0x0003, 0x040b, 0x0621, 0x0610, 0x0638, 0xf380, 0x060b, 0x040d, 0x0605, 0x062d, 0x060e, 0x061a,
|
||||
0xf580, 0x062e, 0x0009, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_X8[] = {
|
||||
0x000A, 0x061c, 0x0620, 0x0101, 0x061f, 0x0612, 0x061e, 0xa111, 0x0408, 0x0811, 0x1411, 0x0911,
|
||||
0x1211, 0x1011, 0xcd11, 0x1111, 0xbe11, 0xce11, 0xbd11, 0xbc11, 0xa911, 0xaa11, 0xcb11, 0xad11,
|
||||
0xa811, 0xac11, 0xaf11, 0xa511, 0xa011, 0x1611, 0x2511, 0xbf11, 0x1511, 0x2211, 0x2411, 0x1911,
|
||||
0xab11, 0xd011, 0xae11, 0xca11, 0x0409, 0xa211, 0xa311, 0x1311, 0xba11, 0xa711, 0xd111, 0x1711,
|
||||
0xcf11, 0x2011, 0x1811, 0x5980, 0x6280, 0x6480, 0x7380, 0x7480, 0x0933, 0x094F, 0xa880, 0x0403,
|
||||
0x0100, 0x0601, 0x0001, 0x0404, 0x0606, 0x0608, 0x0632, 0x0400, 0x0401, 0x0006, 0x040a, 0xf280,
|
||||
0x060f, 0x0609, 0x0008, 0x0613, 0x061b, 0x0007, 0x0600, 0x060c, 0x060d, 0x0614, 0x0003, 0x040b,
|
||||
0x0621, 0x0610, 0x0638, 0xf380, 0x060b, 0x040d, 0x0605, 0x062d, 0x060e, 0x061a, 0xf580, 0x062e,
|
||||
0x0009, 0xFFFF
|
||||
};
|
||||
|
||||
static uint16_t supermicro_older[] = {
|
||||
0x8080, 0x8180, 0x8280, 0x8480, 0x8580, 0x8680, 0x8780, 0x8880, 0x8980, 0x9080, 0x9180, 0x9280,
|
||||
0x9380, 0x9480, 0x9580, 0x9680, 0x9780, 0xA080, 0x9880, 0x9980, 0xB080, 0xB180, 0xB280, 0xB380,
|
||||
0xB480, 0xA280, 0xB580, 0xB680, 0xA580, 0xB780, 0xD180, 0xA380, 0xA480, 0xD680, 0xBA80, 0xD280,
|
||||
0x2111, 0xD380, 0xBC80, 0xBD80, 0xBE80, 0xC080, 0xC180, 0xAA80, 0xBE80, 0xBF80, 0xAB80, 0xD480,
|
||||
0xD580, 0xAF80, 0xAE80, 0xC280, 0xAC80, 0xD080, 0xDA80, 0xDB80, 0xDC80, 0xDD80, 0xA680, 0xDE80,
|
||||
0xAA80, 0xDF80, 0xBB80, 0xA780, 0xF080, 0xF180, 0xB880, 0xC380, 0xB780, 0x2311, 0xA980, 0xF480,
|
||||
0xB980, 0x0002, 0xba80, 0x0602, 0x0603, 0x0604, 0x0607, 0x0410, 0xA611, 0x060A, 0x0611, 0xBB11,
|
||||
0x061D, 0x0622, 0x0623, 0x0624, 0x0627, 0x0631, 0x0633, 0x0634, 0x0690, 0x0691, 0x0640, 0x0641,
|
||||
0x0642, 0x066B, 0x0743, 0x0644, 0x0645, 0x0645, 0x0646, 0x0647, 0x0648, 0x0647, 0x0650, 0x0652,
|
||||
0x0653, 0x0654, 0x0655, 0x0808, 0x0809, 0x0656, 0x0657, 0x0658, 0x0659, 0x0820, 0x0820, 0x0734,
|
||||
0x0823, 0x0828, 0x0829, 0x0839, 0x083C, 0x083D, 0x083F, 0x0847, 0x0848, 0x0849, 0x0850, 0x0851,
|
||||
0x0855, 0x0856, 0x0862, 0x0863, 0x0866, 0x0867, 0x0868, 0x0869, 0x084A, 0x084C, 0x084D, 0x084F,
|
||||
0x085A, 0x085D, 0x085E, 0x085F, 0x086A, 0x0870, 0x0873, 0x0874, 0x0875, 0x0876, 0x0878, 0x087A,
|
||||
0x087B, 0x087C, 0x087E, 0x0883, 0x0887, 0x088A, 0x088B, 0x088C, 0x088D, 0x088E, 0x088F, 0x0897,
|
||||
0x089E, 0x0902, 0x0903, 0x0904, 0x0905, 0x0906, 0x090A, 0x090B, 0x090C, 0x090E, 0x090F, 0x0910,
|
||||
0x0912, 0x0913, 0x0914, 0x0915, 0x0918, 0x091A, 0x091B, 0x091F, 0x0920, 0x0925, 0x0926, 0x0929,
|
||||
0x092C, 0x092F, 0x0934, 0x0935, 0x0936, 0x093B, 0x093C, 0x093D, 0x093F, 0x0940, 0x0942, 0x0943,
|
||||
0x0944, 0x0945, 0x0947, 0x0948, 0x0949, 0x094A, 0x094B, 0x094C, 0x094D, 0x094E, 0x0954, 0x0956,
|
||||
0x0957, 0x0959, 0xFFFF
|
||||
};
|
||||
|
||||
#endif /* IPMI_SEL_SUPERMICRO_H */
|
@ -64,7 +64,7 @@ struct sol_config_parameters {
|
||||
|
||||
|
||||
/*
|
||||
* The ACTIVATE PAYLOAD command reponse structure
|
||||
* The ACTIVATE PAYLOAD command response structure
|
||||
* From table 24-2 of the IPMI v2.0 spec
|
||||
*/
|
||||
#ifdef PRAGMA_PACK
|
@ -35,6 +35,8 @@
|
||||
|
||||
#include <ipmitool/helper.h>
|
||||
|
||||
#define CC_STRING(cc) val2str(cc, completion_code_vals)
|
||||
|
||||
extern const struct valstr completion_code_vals[];
|
||||
extern const struct valstr entity_id_vals[];
|
||||
extern const struct valstr entity_device_type_vals[];
|
||||
@ -52,6 +54,7 @@ extern const struct valstr ipmi_auth_algorithms[];
|
||||
extern const struct valstr ipmi_integrity_algorithms[];
|
||||
extern const struct valstr ipmi_encryption_algorithms[];
|
||||
extern const struct valstr ipmi_oem_info[];
|
||||
extern const struct valstr ipmi_user_enable_status_vals[];
|
||||
|
||||
extern const struct valstr picmg_frucontrol_vals[];
|
||||
extern const struct valstr picmg_clk_family_vals[];
|
||||
@ -68,8 +71,7 @@ extern const struct oemvalstr picmg_busres_shmc_status_vals[];
|
||||
/* these are similar, expect that the lookup takes the IANA number
|
||||
as first parameter */
|
||||
extern const struct oemvalstr ipmi_oem_product_info[];
|
||||
extern const struct oemvalstr ipmi_oem_sdr_type_vals[];
|
||||
|
||||
|
||||
extern const char *ipmi_generic_sensor_type_vals[];
|
||||
extern const struct oemvalstr ipmi_oem_sensor_type_vals[];
|
||||
|
||||
#endif /*IPMI_STRINGS_H*/
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@ -39,19 +39,35 @@
|
||||
#include <ipmitool/ipmi.h>
|
||||
#include <ipmitool/ipmi_sdr.h>
|
||||
|
||||
#define IPMI_NETFN_SUNOEM 0x2e
|
||||
#define IPMI_NETFN_SUNOEM 0x2e
|
||||
|
||||
#define IPMI_SUNOEM_SET_SSH_KEY 0x01
|
||||
#define IPMI_SUNOEM_DEL_SSH_KEY 0x02
|
||||
#define IPMI_SUNOEM_GET_HEALTH_STATUS 0x10
|
||||
#define IPMI_SUNOEM_SET_FAN_SPEED 0x20
|
||||
#define IPMI_SUNOEM_LED_GET 0x21
|
||||
#define IPMI_SUNOEM_LED_SET 0x22
|
||||
#define IPMI_SUNOEM_SET_SSH_KEY 0x01
|
||||
#define IPMI_SUNOEM_DEL_SSH_KEY 0x02
|
||||
#define IPMI_SUNOEM_GET_HEALTH_STATUS 0x10
|
||||
#define IPMI_SUNOEM_CLI 0x19
|
||||
#define IPMI_SUNOEM_SET_FAN_SPEED 0x20
|
||||
#define IPMI_SUNOEM_LED_GET 0x21
|
||||
#define IPMI_SUNOEM_LED_SET 0x22
|
||||
#define IPMI_SUNOEM_ECHO 0x23
|
||||
#define IPMI_SUNOEM_VERSION 0x24
|
||||
#define IPMI_SUNOEM_NACNAME 0x29
|
||||
#define IPMI_SUNOEM_GETVAL 0x2A
|
||||
#define IPMI_SUNOEM_SETVAL 0x2C
|
||||
#define IPMI_SUNOEM_SENSOR_SET 0x3A
|
||||
#define IPMI_SUNOEM_SET_FAN_MODE 0x41
|
||||
#define IPMI_SUNOEM_CORE_TUNNEL 0x44
|
||||
|
||||
/*
|
||||
* Error codes of sunoem functions
|
||||
*/
|
||||
typedef enum {
|
||||
SUNOEM_EC_SUCCESS = 0,
|
||||
SUNOEM_EC_INVALID_ARG = 1,
|
||||
SUNOEM_EC_BMC_NOT_RESPONDING = 2,
|
||||
SUNOEM_EC_BMC_CCODE_NONZERO = 3
|
||||
} sunoem_ec_t;
|
||||
|
||||
int ipmi_sunoem_main(struct ipmi_intf *, int, char **);
|
||||
|
||||
struct ipmi_rs * sunoem_led_get(struct ipmi_intf * intf, struct sdr_record_generic_locator * dev, int ledtype);
|
||||
struct ipmi_rs * sunoem_led_set(struct ipmi_intf * intf, struct sdr_record_generic_locator * dev, int ledtype, int ledmode);
|
||||
|
||||
#endif /*IPMI_SUNOEM_H*/
|
||||
|
93
include/ipmitool/ipmi_time.h
Normal file
93
include/ipmitool/ipmi_time.h
Normal file
@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Copyright (c) 2018 Alexander Amelkin. All Rights Reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of the copyright holder, nor the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
* THE COPYRIGHT HOLDER AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
* THE COPYRIGHT HOLDER OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE,
|
||||
* PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
|
||||
* INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE
|
||||
* THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS
|
||||
* SOFTWARE, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGES.
|
||||
*/
|
||||
#ifndef IPMI_TIME_H
|
||||
#define IPMI_TIME_H
|
||||
|
||||
#include <time.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
extern bool time_in_utc;
|
||||
|
||||
/* Special values according to IPMI v2.0, rev. 1.1, section 37.1 */
|
||||
#define IPMI_TIME_UNSPECIFIED 0xFFFFFFFFu
|
||||
#define IPMI_TIME_INIT_DONE 0x20000000u
|
||||
|
||||
#define SECONDS_A_DAY (24 * 60 * 60)
|
||||
|
||||
/*
|
||||
* Check whether the timestamp is in seconds since Epoch or since
|
||||
* the system startup.
|
||||
*/
|
||||
static inline bool ipmi_timestamp_is_special(time_t ts)
|
||||
{
|
||||
return (ts < IPMI_TIME_INIT_DONE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Check whether the timestamp is valid at all
|
||||
*/
|
||||
static inline bool ipmi_timestamp_is_valid(time_t ts)
|
||||
{
|
||||
return (ts != IPMI_TIME_UNSPECIFIED);
|
||||
}
|
||||
|
||||
/*
|
||||
* Just 26 characters are required for asctime_r(), plus timezone info.
|
||||
* However just to be safe locale-wise and assuming that in no locale
|
||||
* the date/time string exceeds the 'standard' legacy terminal width,
|
||||
* the buffer size is set here to 80.
|
||||
*/
|
||||
#define IPMI_ASCTIME_SZ 80
|
||||
typedef char ipmi_datebuf_t[IPMI_ASCTIME_SZ];
|
||||
|
||||
/*
|
||||
* These are ipmitool-specific versions that take
|
||||
* in account the command line options
|
||||
*/
|
||||
char *ipmi_asctime_r(time_t stamp, ipmi_datebuf_t outbuf);
|
||||
size_t ipmi_strftime(char *s, size_t max, const char *format, time_t stamp)
|
||||
__attribute__((format(strftime, 3, 0)));
|
||||
|
||||
/* These return pointers to static arrays and aren't thread safe */
|
||||
char *ipmi_timestamp_fmt(uint32_t stamp, const char *fmt)
|
||||
__attribute__((format(strftime, 2, 0)));
|
||||
char *ipmi_timestamp_string(uint32_t stamp); /* Day Mon DD HH:MM:SS YYYY ZZZ */
|
||||
char *ipmi_timestamp_numeric(uint32_t stamp); /* MM/DD/YYYY HH:MM:SS ZZZ */
|
||||
char *ipmi_timestamp_date(uint32_t stamp); /* MM/DD/YYYY ZZZ */
|
||||
char *ipmi_timestamp_time(uint32_t stamp); /* HH:MM:SS ZZZ */
|
||||
|
||||
/* Subtract the UTC offset from local time_t */
|
||||
time_t ipmi_localtime2utc(time_t local);
|
||||
|
||||
#endif
|
||||
|
@ -38,58 +38,49 @@
|
||||
#endif
|
||||
#include <ipmitool/ipmi.h>
|
||||
|
||||
#define IPMI_PASSWORD_DISABLE_USER 0x00
|
||||
#define IPMI_PASSWORD_ENABLE_USER 0x01
|
||||
#define IPMI_PASSWORD_SET_PASSWORD 0x02
|
||||
#define IPMI_PASSWORD_TEST_PASSWORD 0x03
|
||||
|
||||
/*
|
||||
* The GET USER ACCESS response from table 22-32 of the IPMI v2.0 spec
|
||||
*/
|
||||
struct user_access_rsp {
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t __reserved1 : 2;
|
||||
uint8_t maximum_ids : 6;
|
||||
#else
|
||||
uint8_t maximum_ids : 6;
|
||||
uint8_t __reserved1 : 2;
|
||||
#endif
|
||||
#define IPMI_USER_ENABLE_UNSPECIFIED 0x00
|
||||
#define IPMI_USER_ENABLE_ENABLED 0x40
|
||||
#define IPMI_USER_ENABLE_DISABLED 0x80
|
||||
#define IPMI_USER_ENABLE_RESERVED 0xC0
|
||||
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t __reserved2 : 2;
|
||||
uint8_t enabled_user_count : 6;
|
||||
#else
|
||||
uint8_t enabled_user_count : 6;
|
||||
uint8_t __reserved2 : 2;
|
||||
#endif
|
||||
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t __reserved3 : 2;
|
||||
uint8_t fixed_name_count : 6;
|
||||
#else
|
||||
uint8_t fixed_name_count : 6;
|
||||
uint8_t __reserved3 : 2;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
#if WORDS_BIGENDIAN
|
||||
uint8_t __reserved4 : 1;
|
||||
uint8_t no_callin_access : 1;
|
||||
uint8_t link_auth_access : 1;
|
||||
uint8_t ipmi_messaging_access : 1;
|
||||
uint8_t channel_privilege_limit : 4;
|
||||
#else
|
||||
uint8_t channel_privilege_limit : 4;
|
||||
uint8_t ipmi_messaging_access : 1;
|
||||
uint8_t link_auth_access : 1;
|
||||
uint8_t no_callin_access : 1;
|
||||
uint8_t __reserved4 : 1;
|
||||
#endif
|
||||
} ATTRIBUTE_PACKING;
|
||||
#ifdef HAVE_PRAGMA_PACK
|
||||
#pragma pack(0)
|
||||
#endif
|
||||
#define IPMI_UID_MASK 0x3F /* The user_id is 6-bit and is usually in bits [5:0] */
|
||||
#define IPMI_UID(id) ((id) & IPMI_UID_MASK)
|
||||
|
||||
/* (22.27) Get and (22.26) Set User Access */
|
||||
struct user_access_t {
|
||||
uint8_t callin_callback;
|
||||
uint8_t channel;
|
||||
uint8_t enabled_user_ids;
|
||||
uint8_t enable_status;
|
||||
uint8_t fixed_user_ids;
|
||||
uint8_t ipmi_messaging;
|
||||
uint8_t link_auth;
|
||||
uint8_t max_user_ids;
|
||||
uint8_t privilege_limit;
|
||||
uint8_t session_limit;
|
||||
uint8_t user_id;
|
||||
};
|
||||
|
||||
/* (22.29) Get User Name */
|
||||
struct user_name_t {
|
||||
uint8_t user_id;
|
||||
uint8_t user_name[17];
|
||||
};
|
||||
|
||||
int ipmi_user_main(struct ipmi_intf *, int, char **);
|
||||
int _ipmi_get_user_access(struct ipmi_intf *intf,
|
||||
struct user_access_t *user_access_rsp);
|
||||
int _ipmi_get_user_name(struct ipmi_intf *intf, struct user_name_t *user_name);
|
||||
int _ipmi_set_user_access(struct ipmi_intf *intf,
|
||||
struct user_access_t *user_access_req,
|
||||
uint8_t change_priv_limit_only);
|
||||
int _ipmi_set_user_password(struct ipmi_intf *intf,
|
||||
uint8_t user_id, uint8_t operation,
|
||||
const char *password, uint8_t is_twenty_byte);
|
||||
|
||||
#endif /* IPMI_USER_H */
|
49
include/ipmitool/ipmi_vita.h
Normal file
49
include/ipmitool/ipmi_vita.h
Normal file
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (c) Pigeon Point Systems. All right reserved
|
||||
*/
|
||||
|
||||
#ifndef _IPMI_VITA_H_
|
||||
#define _IPMI_VITA_H_
|
||||
|
||||
/* VITA 46.11 commands */
|
||||
#define VITA_GET_VSO_CAPABILITIES_CMD 0x00
|
||||
#define VITA_FRU_CONTROL_CMD 0x04
|
||||
#define VITA_GET_FRU_LED_PROPERTIES_CMD 0x05
|
||||
#define VITA_GET_LED_COLOR_CAPABILITIES_CMD 0x06
|
||||
#define VITA_SET_FRU_LED_STATE_CMD 0x07
|
||||
#define VITA_GET_FRU_LED_STATE_CMD 0x08
|
||||
#define VITA_SET_FRU_STATE_POLICY_BITS_CMD 0x0A
|
||||
#define VITA_GET_FRU_STATE_POLICY_BITS_CMD 0x0B
|
||||
#define VITA_SET_FRU_ACTIVATION_CMD 0x0C
|
||||
#define VITA_GET_FRU_ADDRESS_INFO_CMD 0x40
|
||||
|
||||
/* VITA 46.11 site types */
|
||||
#define VITA_FRONT_VPX_MODULE 0x00
|
||||
#define VITA_POWER_ENTRY 0x01
|
||||
#define VITA_CHASSIS_FRU 0x02
|
||||
#define VITA_DEDICATED_CHMC 0x03
|
||||
#define VITA_FAN_TRAY 0x04
|
||||
#define VITA_FAN_TRAY_FILTER 0x05
|
||||
#define VITA_ALARM_PANEL 0x06
|
||||
#define VITA_XMC 0x07
|
||||
#define VITA_VPX_RTM 0x09
|
||||
#define VITA_FRONT_VME_MODULE 0x0A
|
||||
#define VITA_FRONT_VXS_MODULE 0x0B
|
||||
#define VITA_POWER_SUPPLY 0x0C
|
||||
#define VITA_FRONT_VITA62_MODULE 0x0D
|
||||
#define VITA_71_MODULE 0x0E
|
||||
#define VITA_FMC 0x0F
|
||||
|
||||
|
||||
#define GROUP_EXT_VITA 0x03
|
||||
|
||||
extern uint8_t
|
||||
vita_discover(struct ipmi_intf *intf);
|
||||
|
||||
extern uint8_t
|
||||
ipmi_vita_ipmb_address(struct ipmi_intf *intf);
|
||||
|
||||
extern int
|
||||
ipmi_vita_main(struct ipmi_intf * intf, int argc, char ** argv);
|
||||
|
||||
#endif /* _IPMI_VITA_H_ */
|
@ -1,5 +0,0 @@
|
||||
For more information about setting up your Debian system with IPMI
|
||||
please see the excellent howto by Tim Small:
|
||||
|
||||
http://buttersideup.com/docs/howto/IPMI_on_Debian.html
|
||||
|
@ -1,324 +0,0 @@
|
||||
version (1.8.11) unstable; urgency=low
|
||||
* Fix new GCC compilation issues in regards to Packing
|
||||
* Fix Tracker bug #1642710 - ipmi_kcs_drv being loaded/unloaded
|
||||
for 2.4 kernel instead of ipmi_si_drv driver module
|
||||
* New -y option added to allow specification of kg keys with
|
||||
non-printable characters
|
||||
* New -K option added to allow kgkey settings via environmental
|
||||
variable IPMI_KGKEY
|
||||
* Generic device support added for EEPROM with SDR Type 10h (gendev)
|
||||
* Fix to lan-bridging for a double-bridging crash and to fix
|
||||
an issue with bridging multiple concurrent requests and
|
||||
erroneous handling of raw Send Message
|
||||
* Lanplus fix for commands like 'sensor list' without the -t option
|
||||
causing wrong double bridged requests of a sensor is located
|
||||
on another satellite controller
|
||||
* Fix lan and lanplus request list entry removal bugs
|
||||
* Fix non-working issue when trying to send a bridge message with
|
||||
Cipher 3
|
||||
* Change bridge message handling to reuse command ipmi_lan_poll_recv
|
||||
* Added PICMG 2.0 and 2.3 support
|
||||
* Fix PICMG (ATCA) extension verification and reversal of BCD encoded
|
||||
values for "major" and "minor" fields
|
||||
* Add IANA support for Pigeon Point
|
||||
* Add OEM SW/FW Record identification
|
||||
* Fix to include I2C and LUN addresses so sensors are correctly managed
|
||||
* Patch ID 1990560 to get readings from non-linear analog sensors
|
||||
* Add support for SOL payload status command
|
||||
* SOL set parameter range checking added
|
||||
* Fixed SOL activate options usage
|
||||
* Fixed crashes when parsing 'sol payload' and 'tsol' cmds (#216967)
|
||||
* Added retries to SOL keepalive
|
||||
* Fixed wrong mask values for Front Panel disable/enable status
|
||||
* Add support to access fru internal use area
|
||||
* Add support for new PICMG 3.0 R3.0 (March 24, 2008) to allow
|
||||
blocks of data within the FRU storage area to be write
|
||||
protected.
|
||||
* Fix node reporting in GUID; Tracker bug #2339675
|
||||
* Fix watchdog use/action print strings
|
||||
* Fix endian bug in SDR add from file; Tracker bug #2075258
|
||||
* Fix crash when dumping SDRs in a file and there's an error
|
||||
getting an SDR; improve algorithm for optimal packet size
|
||||
* Fix occasional SDR dump segfault; #1793076
|
||||
* Allow ipmitool sel delete to accept hex list entry numbers
|
||||
* Fix SEL total space reporting.
|
||||
* Fix for garbage sensor threshold values reported when none
|
||||
returned. Tracker Bug #863748
|
||||
* ipmievd change to Monitor %used in SEL buffer and log warnings when
|
||||
the buffer is 80% and 100% full
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Wed, 25 Feb 2009 09:44:31 +0200
|
||||
|
||||
ipmitool (1.8.10) unstable; urgency=low
|
||||
|
||||
* New upstream version.
|
||||
* Patch to allow Debian package builds from cvs.
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Fri, 8 Aug 2008 09:44:31 +0200
|
||||
|
||||
ipmitool (1.8.7-2) unstable; urgency=low
|
||||
|
||||
* Fix typo in init.d/ipmievd. (Closes: #361309)
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Sat, 8 Apr 2006 06:44:31 +0200
|
||||
|
||||
ipmitool (1.8.7-1) unstable; urgency=low
|
||||
|
||||
* New upstream version.
|
||||
- Dropped nuclear clause from the copyright. Updated debian/copyright
|
||||
to reflect this.
|
||||
- ipmievd now store pid in /var/run/ipmievd.pid. Adjust init.d
|
||||
script to use it.
|
||||
* Rename /etc/default/ipmievd variable IPMIEVD_OPTS is renamed to
|
||||
IPMIEVD_OPTIONS to stay compatible with upstream and other
|
||||
distributions. Add backwards compatibility code with a warning to
|
||||
the users of the old variable.
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Sun, 26 Mar 2006 21:11:08 +0200
|
||||
|
||||
ipmitool (1.8.6-2) unstable; urgency=low
|
||||
|
||||
* Add ia64 as an supported arch. (Closes: #355930)
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Fri, 10 Mar 2006 23:34:50 +0100
|
||||
|
||||
ipmitool (1.8.6-1) unstable; urgency=low
|
||||
|
||||
* New upstream version.
|
||||
- Avoid crashing when setting lan IP address. (Closes: #351205)
|
||||
* Avoid changing history by reverding upstream change
|
||||
to email addresses in debian/changelog.
|
||||
* Correct typo in control file: Suggest -> Suggests. Thanks
|
||||
to Philipp Matthias Hahn for the report.
|
||||
* Add init.d/ipmievd script. Based on script from Elmar Hoffmann,
|
||||
slightly modified to use lsb-base functions. Added dependency on
|
||||
lsb-base. (Closes: #345994)
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Sun, 26 Feb 2006 10:31:14 +0100
|
||||
|
||||
ipmitool (1.8.2-2) unstable; urgency=low
|
||||
|
||||
* Add build-dependency on 'libreadline5-dev | libreadline-dev' to make
|
||||
sure all archs get readline support. (Closes: #326341)
|
||||
* Add build-dependency on libssl-dev to enable SSL support on
|
||||
all archs.
|
||||
* Updated Standards-Version to 3.6.2.1. (No updates required)
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Sat, 3 Sep 2005 19:18:51 +0200
|
||||
|
||||
ipmitool (1.8.2-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
- Fix FRU reading for large (>255 bytes) areas.
|
||||
- Overhaul to ipmievd to support SEL polling in addition to OpenIPMI.
|
||||
- Fix LAN parameter segfault when no Ciphers supported by
|
||||
BMC. (Closes: #306806)
|
||||
- Fix IPMIv2 support on Intel v2 BMCs (use -o intelplus).
|
||||
- Separate option parsing code from main ipmitool source file.
|
||||
- Add raw I2C support with IPMI Master Read-Write command.
|
||||
- Add support for new 'sdr elist' extended output format.
|
||||
- Add support for listing sensors by type with 'sdr type' command.
|
||||
- Add support for new 'sel elist' extended output format that
|
||||
cross-references events with sensors.
|
||||
- Add support for sending dynamically generated platform events
|
||||
based on existing sensor information.
|
||||
- New '-S' argument to read local SDR cache created with 'sdr dump'.
|
||||
- Updated manpage for ipmitool and ipmievd. (Closes: #306894)
|
||||
* Correct the upstream URL in debian/changelog to the current one.
|
||||
* Suggest package openipmi. (Closes: #305629)
|
||||
* Add debian/watch file to detect new source versions.
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Sun, 5 Jun 2005 10:29:18 +0200
|
||||
|
||||
ipmitool (1.8.1-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
* Install ipmievd into /usr/sbin/.
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Thu, 7 Apr 2005 01:18:44 +0200
|
||||
|
||||
ipmitool (1.8.0-1) unstable; urgency=low
|
||||
|
||||
* Initial upload into Debian, based on the upstream build
|
||||
rules. (Closes: #299924)
|
||||
* Convert debian/changelog to UTF-8.
|
||||
* Change section from 'contrib' to 'utils'.
|
||||
* Build-depend on debhelper (>> 4.0.0) to match the rules file.
|
||||
* Set Standards-version to 3.6.1.
|
||||
* Make sure binary dependency is properly generated.
|
||||
* Add long description, copied from the project README.
|
||||
* Drop useless provides 'ipmitool', as the package is called 'ipmitool'.
|
||||
* Don't install the COPYING file, as the license text already is
|
||||
included in debian/copyright.
|
||||
* Remove unused parts of the rules file.
|
||||
* Correct clean target in rules file, to use 'distclean' and remove
|
||||
configure-stamp not bogus config-stamp.
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Sun, 3 Apr 2005 20:52:02 +0200
|
||||
|
||||
ipmitool (1.8.0) unstable; urgency=low
|
||||
|
||||
* Fix IPMIv2.0 issues
|
||||
* Fix chassis boot parameter support
|
||||
* Add support for linear sensors
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Wed, Mar 16 2005 17:08:12 -0700
|
||||
|
||||
ipmitool (1.7.1) unstable; urgency=low
|
||||
|
||||
* Update bmc plugin to work with new Solaris bmc driver (new ioctl
|
||||
for interface detection and new STREAMS message-based interface).
|
||||
|
||||
-- Seth Goldberg <sethmeisterg@hotmail.com> Mon, Mar 7 2005 18:03:00 -0800
|
||||
|
||||
ipmitool (1.7.0) unstable; urgency=low
|
||||
|
||||
* Propogate errors correctly so exit status will be useful
|
||||
* More consistent display of errors including completion code text
|
||||
* Errors and debug is send to stderr now
|
||||
* New "sel get" command that will print details about SEL entry
|
||||
and corresponding SDR records as well as FRUs via entity association
|
||||
* Improved event generator, now supports reading events from text file
|
||||
* New "-o oemtype" option for specifying OEM boards
|
||||
exsting types are "supermicro" and "intelwv2"
|
||||
* New PEF subsystem
|
||||
* New "bmc" plugin for Solaris 10 x86
|
||||
* Many bugfixes and contributed patches
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Fri, Jan 7 2005 19:58:22 -0700
|
||||
|
||||
ipmitool (1.6.2) unstable; urgency=low
|
||||
|
||||
* Support for Supermicro BMC OEM authentication method
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Mon, 16 Nov 2004 08:20:01 -0700
|
||||
|
||||
ipmitool (1.6.1) unstable; urgency=low
|
||||
|
||||
* Fix minor problem with LAN parameter setting
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Wed, 29 Sep 2004 11:19:17 -0700
|
||||
|
||||
ipmitool (1.6.0) unstable; urgency=low
|
||||
|
||||
* Add a README
|
||||
* Add support for IPMIv2 and Serial-over-LAN from Newisys
|
||||
* Add Solaris x86 lipmi interface
|
||||
* Add support for building Solaris packages
|
||||
* Add support for building RPMs as non-root user
|
||||
* Fix segfault when doing "sel list" (from Matthew Braithwaite)
|
||||
* Fix "chassis identify" on some BMCs (from ebrower@sourceforge)
|
||||
* Add "bmc info" and related output (from ebrower@sourceforge)
|
||||
* new "shell" and "exec" commands
|
||||
* lots of other contributed patches
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Thu, 9 Sep 2004 21:39:37 -0700
|
||||
|
||||
ipmitool (1.5.9) unstable; urgency=low
|
||||
|
||||
* Add ability to get a particular sensor by name
|
||||
* Add ability to set a particular sensor threshold
|
||||
* Add support for displaying V2 channel authentication levels
|
||||
* Add README for rrdtool scripts in contrib directory
|
||||
* Improve lan interface retry handling
|
||||
* Support prompting for password or reading from environment
|
||||
* Move chaninfo command into channel subcommand
|
||||
* Fix reservation ID handling when two sessions open to BMC
|
||||
* Fix reading of large FRU data
|
||||
* Add configure option for changing binary to ipmiadm for Solaris
|
||||
* Fix compile problem on Solaris 8
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Sat, 27 Mar 2004 00:11:37 -0700
|
||||
|
||||
ipmitool (1.5.8) unstable; urgency=low
|
||||
|
||||
* Enable static compilation of interfaces
|
||||
* Fix types to be 64-bit safe
|
||||
* Fix compilation problems on Solaris
|
||||
* Fix multiple big-endian problems for Solaris/SPARC
|
||||
* Fix channel access to save settings to NVRAM
|
||||
* Set channel privilege limit to ADMIN during "access on"
|
||||
* Enable gratuitous ARP in bmcautoconf.sh
|
||||
* Add support for Linux kernel panic messages in SEL output
|
||||
* Add support for type 3 SDR records
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Tue, 27 Jan 2004 16:23:25 -0700
|
||||
|
||||
ipmitool (1.5.7) unstable; urgency=low
|
||||
|
||||
* add IPMIv1.5 eratta fixes
|
||||
* additions to FRU printing and FRU multirecords
|
||||
* better handling of SDR printing
|
||||
* contrib scripts for creating rrdtool graphs
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Mon, 5 Jan 2004 17:29:50 -0700
|
||||
|
||||
ipmitool (1.5.6) unstable; urgency=low
|
||||
|
||||
* Fix SEL event decoding for generic events
|
||||
* Handle empty SEL gracefully when doing "sel list"
|
||||
* Fix sdr handling of sensors that do not return a reading
|
||||
* Fix for CSV display of sensor readings/units from Fredrik Öhrn
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Thu, 4 Dec 2003 14:47:19 -0700
|
||||
|
||||
ipmitool (1.5.5) unstable; urgency=low
|
||||
|
||||
* Add -U option for setting LAN username
|
||||
* Fix -v usage for plugin interfaces
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Tue, 25 Nov 2003 15:10:48 -0700
|
||||
|
||||
ipmitool (1.5.4) unstable; urgency=low
|
||||
|
||||
* Put interface plugin API into library
|
||||
* Fix ipmievd
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Fri, 14 Nov 2003 15:16:34 -0700
|
||||
|
||||
ipmitool (1.5.3) unstable; urgency=low
|
||||
|
||||
* Add -g option to work with grizzly bmc
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Mon, 3 Nov 2003 18:04:07 -0700
|
||||
|
||||
ipmitool (1.5.2) unstable; urgency=low
|
||||
|
||||
* add support for setting gratuitous arp interval
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Fri, 24 Oct 2003 11:00:00 -0700
|
||||
|
||||
ipmitool (1.5.1) unstable; urgency=low
|
||||
|
||||
* better SEL support
|
||||
* fix display bug in SDR list
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Wed, 8 Oct 2003 17:28:51 -0700
|
||||
|
||||
ipmitool (1.5.0) unstable; urgency=low
|
||||
|
||||
* more robust UDP packet handling
|
||||
* add Intel IMB driver support
|
||||
* use autoconf/automake/libtool
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Fri, 5 Sep 2003 11:57:32 -0700
|
||||
|
||||
ipmitool (1.2-1) unstable; urgency=low
|
||||
|
||||
* New command line option parsing
|
||||
* More chassis commands supported
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Wed, 2 Apr 2003 17:44:17 -0700
|
||||
|
||||
ipmitool (1.1-1) unstable; urgency=low
|
||||
|
||||
* Minor fixes.
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Tue, 1 Apr 2003 14:31:10 -0700
|
||||
|
||||
ipmitool (1.0-1) unstable; urgency=low
|
||||
|
||||
* Initial Release.
|
||||
|
||||
-- Duncan Laurie <duncan@iceblink.org> Sun, 30 Mar 2003 21:30:46 -0700
|
||||
|
@ -1,28 +0,0 @@
|
||||
Source: ipmitool
|
||||
Section: utils
|
||||
Priority: optional
|
||||
Maintainer: Petter Reinholdtsen <pere@debian.org>
|
||||
Uploaders: Duncan Laurie <duncan@iceblink.org>
|
||||
Build-Depends: debhelper (>> 4.0.0), libreadline5-dev | libreadline-dev, libssl-dev, autoconf, automake1.9 | automake, autotools-dev, libtool
|
||||
Standards-Version: 3.6.2.1
|
||||
|
||||
Package: ipmitool
|
||||
Architecture: i386 amd64 ia64
|
||||
Depends: ${shlibs:Depends}, lsb-base
|
||||
Suggests: openipmi
|
||||
Description: utility for IPMI control with kernel driver or LAN interface
|
||||
A utility for managing and configuring devices that support the
|
||||
Intelligent Platform Management Interface. IPMI is an open standard
|
||||
for monitoring, logging, recovery, inventory, and control of hardware
|
||||
that is implemented independent of the main CPU, BIOS, and OS. The
|
||||
service processor (or Baseboard Management Controller, BMC) is the
|
||||
brain behind platform management and its primary purpose is to handle
|
||||
the autonomous sensor monitoring and event logging features.
|
||||
.
|
||||
The ipmitool program provides a simple command-line interface to this
|
||||
BMC. It features the ability to read the sensor data repository
|
||||
(SDR) and print sensor values, display the contents of the System
|
||||
Event Log (SEL), print Field Replaceable Unit (FRU) inventory
|
||||
information, read and set LAN configuration parameters, and perform
|
||||
remote chassis power control.
|
||||
|
@ -1,36 +0,0 @@
|
||||
This package was debianized by Duncan Laurie before
|
||||
2003-11-18 17:55:21 +0100.
|
||||
|
||||
It was downloaded from <URL:http://ipmitool.sourceforge.net/>
|
||||
|
||||
Upstream Author: Duncan Laurie <duncan@iceblink.org>
|
||||
|
||||
Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
Redistribution of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
Redistribution in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
Neither the name of Sun Microsystems, Inc. or the names of
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
This software is provided "AS IS," without a warranty of any kind.
|
||||
ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
@ -1,4 +0,0 @@
|
||||
usr/bin
|
||||
usr/sbin
|
||||
usr/share/ipmitool
|
||||
usr/share/doc/ipmitool
|
@ -1,2 +0,0 @@
|
||||
README
|
||||
AUTHORS
|
@ -1,99 +0,0 @@
|
||||
#! /bin/sh
|
||||
### BEGIN INIT INFO
|
||||
# Provides: ipmievd
|
||||
# Required-Start: $local_fs $remote_fs $syslog
|
||||
# Required-Stop: $local_fs $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: S 0 1 6
|
||||
# Short-Description: IPMI event daemon
|
||||
# Description: ipmievd is a daemon which will listen for events
|
||||
# from the BMC that are being sent to the SEL and
|
||||
# also log those messages to syslog.
|
||||
### END INIT INFO
|
||||
#
|
||||
# Author: Elmar Hoffmann <elho@elho.net>
|
||||
# Licence: This script is public domain using the same
|
||||
# licence as ipmitool itself.
|
||||
# Modified by: Petter Reinholdtsen
|
||||
|
||||
set -e
|
||||
|
||||
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||
DESC="IPMI event daemon"
|
||||
NAME=ipmievd
|
||||
DAEMON=/usr/sbin/$NAME
|
||||
PIDFILE=/var/run/$NAME.pid
|
||||
SCRIPTNAME=/etc/init.d/$NAME
|
||||
|
||||
# Gracefully exit if the package has been removed.
|
||||
test -x $DAEMON || exit 0
|
||||
|
||||
. /lib/lsb/init-functions
|
||||
. /etc/default/rcS
|
||||
|
||||
# Options used by ipmievd.
|
||||
#
|
||||
# "open" uses the asynchronous event notification from the OpenIPMI
|
||||
# kernel driver, "sel" uses active polling of the contents of the SEL
|
||||
# for new events.
|
||||
#
|
||||
# Need to force 'daemon' mode, to make sure messages are sent to
|
||||
# syslog and the program forks into the background.
|
||||
#
|
||||
# Se ipmievd(8) for more info.
|
||||
IPMIEVD_OPTIONS="open daemon"
|
||||
|
||||
# Read config file if it is present.
|
||||
[ -f /etc/default/$NAME ] && . /etc/default/$NAME
|
||||
|
||||
# Backwards compatibility with version 1.8.6-2 and 1.8.6-1. The
|
||||
# variable was renamed to be compatible with upstream, SuSe and RedHat.
|
||||
if [ -n "$IPMIEVD_OPTS" ]; then
|
||||
echo "warning: /etc/default/$NAME variable IPMIEVD_OPTS should be renamed to IPMIEVD_OPTIONS"
|
||||
IPMIEVD_OPTIONS="$IPMIEVD_OPTS"
|
||||
fi
|
||||
|
||||
#
|
||||
# Function that starts the daemon/service.
|
||||
#
|
||||
d_start() {
|
||||
start-stop-daemon --start --quiet --exec $DAEMON -- $IPMIEVD_OPTIONS
|
||||
}
|
||||
|
||||
#
|
||||
# Function that stops the daemon/service.
|
||||
#
|
||||
d_stop() {
|
||||
start-stop-daemon --stop --quiet --name $NAME --exec $DAEMON
|
||||
}
|
||||
|
||||
CODE=0
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
[ "$VERBOSE" != no ] && log_begin_msg "Starting $DESC" "$NAME"
|
||||
d_start || CODE=$?
|
||||
[ "$VERBOSE" != no ] && log_end_msg $CODE
|
||||
exit $CODE
|
||||
;;
|
||||
stop)
|
||||
log_begin_msg "Stopping $DESC" "$NAME"
|
||||
d_stop || CODE=$?
|
||||
log_end_msg $CODE
|
||||
exit $CODE
|
||||
;;
|
||||
restart|force-reload)
|
||||
log_begin_msg "Restarting $DESC" "$NAME"
|
||||
d_stop || true
|
||||
sleep 1
|
||||
d_start || CODE=$?
|
||||
log_end_msg $CODE
|
||||
exit $CODE
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
@ -1,118 +0,0 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
#export DH_VERBOSE=1
|
||||
export DH_COMPAT=4
|
||||
export DH_OPTIONS
|
||||
|
||||
CFLAGS = -Wall -g
|
||||
|
||||
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
||||
CFLAGS += -O0
|
||||
else
|
||||
CFLAGS += -O2
|
||||
endif
|
||||
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
|
||||
INSTALL_PROGRAM += -s
|
||||
endif
|
||||
|
||||
configure: configure-stamp
|
||||
configure-stamp:
|
||||
dh_testdir
|
||||
|
||||
./bootstrap
|
||||
|
||||
./configure --prefix=/usr \
|
||||
--with-kerneldir \
|
||||
--mandir=/usr/share/man
|
||||
touch configure-stamp
|
||||
|
||||
#Architecture
|
||||
build: build-arch build-indep
|
||||
|
||||
build-arch: build-arch-stamp
|
||||
build-arch-stamp: configure-stamp
|
||||
|
||||
# Add here commands to compile the arch part of the package.
|
||||
$(MAKE)
|
||||
|
||||
build-indep: build-indep-stamp
|
||||
build-indep-stamp: configure-stamp
|
||||
|
||||
# Add here commands to compile the indep part of the package.
|
||||
#$(MAKE) doc
|
||||
|
||||
clean:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
rm -f build-arch-stamp build-indep-stamp configure-stamp
|
||||
|
||||
# Add here commands to clean up after the build process.
|
||||
-$(MAKE) distclean
|
||||
|
||||
dh_clean
|
||||
|
||||
install: install-arch #install-indep
|
||||
install-indep:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_clean -k -i
|
||||
dh_installdirs -i
|
||||
|
||||
# Add here commands to install the indep part of the package into
|
||||
# debian/<package>-doc.
|
||||
#INSTALLDOC#
|
||||
# $(MAKE) install-doc DESTDIR=$(CURDIR)/debian/tmp/ipmitool-doc
|
||||
# dh_movefiles -i
|
||||
|
||||
install-arch:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_clean -k -a
|
||||
dh_installdirs -a
|
||||
|
||||
# Add here commands to install the arch part of the package into
|
||||
# debian/tmp.
|
||||
$(MAKE) install DESTDIR=$(CURDIR)/debian/ipmitool
|
||||
|
||||
# No need to have two copies of the license text in the package.
|
||||
$(RM) $(CURDIR)/debian/ipmitool/usr/share/doc/ipmitool/COPYING
|
||||
|
||||
# Move upstream changelog to correct filename.
|
||||
mv $(CURDIR)/debian/ipmitool/usr/share/doc/ipmitool/ChangeLog \
|
||||
$(CURDIR)/debian/ipmitool/usr/share/doc/ipmitool/changelog
|
||||
|
||||
# Compress to avoid lintian warning. Not sure why dh_compress
|
||||
# isn't fixing this.
|
||||
gzip -9 $(CURDIR)/debian/ipmitool/usr/share/doc/ipmitool/changelog
|
||||
|
||||
# dh_movefiles -a
|
||||
# Must not depend on anything. This is to be called by
|
||||
# binary-arch/binary-multi
|
||||
# in another 'make' thread.
|
||||
binary-common:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_installdocs
|
||||
dh_installchangelogs
|
||||
dh_installinit --name ipmievd
|
||||
dh_link
|
||||
dh_strip
|
||||
dh_compress
|
||||
dh_fixperms
|
||||
dh_makeshlibs
|
||||
dh_shlibdeps
|
||||
dh_installdeb
|
||||
dh_gencontrol
|
||||
dh_md5sums
|
||||
dh_builddeb
|
||||
# Build architecture independant packages using the common target.
|
||||
binary-indep: build-indep install-indep
|
||||
$(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
|
||||
|
||||
# Build architecture dependant packages using the common target.
|
||||
binary-arch: build-arch install-arch
|
||||
$(MAKE) -f debian/rules DH_OPTIONS=-a binary-common
|
||||
|
||||
binary: binary-arch #binary-indep
|
||||
.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch configure
|
||||
|
@ -1,6 +0,0 @@
|
||||
# Rename this file to "watch" and then you can run the "uscan" command
|
||||
# to check for upstream updates and more.
|
||||
# Site Directory Pattern Version Script
|
||||
version=2
|
||||
http://heanet.dl.sourceforge.net/sourceforge/ipmitool/ipmitool-(.*).tar.bz2
|
||||
# debian uupdate
|
@ -1,41 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Sun Microsystems, Inc. or the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
* SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
* SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
* OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
#ifndef IPMI_HPMFWUPG_H
|
||||
#define IPMI_HPMFWUPG_H
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <ipmitool/ipmi.h>
|
||||
|
||||
int ipmi_hpmfwupg_main(struct ipmi_intf *, int, char **);
|
||||
|
||||
#endif /* IPMI_KFWUM_H */
|
@ -1,132 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistribution of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistribution in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of Sun Microsystems, Inc. or the names of
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
||||
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
||||
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
||||
* SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
||||
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
||||
* SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
||||
* OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
||||
* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
||||
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
#ifndef IPMI_LANP_H
|
||||
#define IPMI_LANP_H
|
||||
|
||||
#include <ipmitool/ipmi.h>
|
||||
|
||||
#define IPMI_LAN_SET_CONFIG 0x01
|
||||
#define IPMI_LAN_GET_CONFIG 0x02
|
||||
#define IPMI_LAN_SUSPEND_ARP 0x03
|
||||
# define IPMI_LAN_SUSPEND_ARP_RESP (2)
|
||||
# define IPMI_LAN_SUSPEND_ARP_GRAT (1)
|
||||
#define IPMI_LAN_GET_STAT 0x04
|
||||
|
||||
#define IPMI_CHANNEL_NUMBER_MAX 0xe
|
||||
|
||||
#define IPMI_LANP_TIMEOUT 3
|
||||
#define IPMI_LANP_RETRIES 10
|
||||
#define IPMI_LANP_WRITE_UNLOCK 0
|
||||
#define IPMI_LANP_WRITE_LOCK 1
|
||||
#define IPMI_LANP_WRITE_COMMIT 2
|
||||
|
||||
enum {
|
||||
IPMI_LANP_SET_IN_PROGRESS,
|
||||
IPMI_LANP_AUTH_TYPE,
|
||||
IPMI_LANP_AUTH_TYPE_ENABLE,
|
||||
IPMI_LANP_IP_ADDR,
|
||||
IPMI_LANP_IP_ADDR_SRC,
|
||||
IPMI_LANP_MAC_ADDR, /* 5 */
|
||||
IPMI_LANP_SUBNET_MASK,
|
||||
IPMI_LANP_IP_HEADER,
|
||||
IPMI_LANP_PRI_RMCP_PORT,
|
||||
IPMI_LANP_SEC_RMCP_PORT,
|
||||
IPMI_LANP_BMC_ARP, /* 10 */
|
||||
IPMI_LANP_GRAT_ARP,
|
||||
IPMI_LANP_DEF_GATEWAY_IP,
|
||||
IPMI_LANP_DEF_GATEWAY_MAC,
|
||||
IPMI_LANP_BAK_GATEWAY_IP,
|
||||
IPMI_LANP_BAK_GATEWAY_MAC, /* 15 */
|
||||
IPMI_LANP_SNMP_STRING,
|
||||
IPMI_LANP_NUM_DEST,
|
||||
IPMI_LANP_DEST_TYPE,
|
||||
IPMI_LANP_DEST_ADDR,
|
||||
IPMI_LANP_VLAN_ID, /* 20 */
|
||||
IPMI_LANP_VLAN_PRIORITY,
|
||||
IPMI_LANP_RMCP_CIPHER_SUPPORT,
|
||||
IPMI_LANP_RMCP_CIPHERS,
|
||||
IPMI_LANP_RMCP_PRIV_LEVELS,
|
||||
IPMI_LANP_OEM_ALERT_STRING=96,
|
||||
IPMI_LANP_ALERT_RETRY=97,
|
||||
IPMI_LANP_UTC_OFFSET=98,
|
||||
IPMI_LANP_DHCP_SERVER_IP=192,
|
||||
IPMI_LANP_DHCP_SERVER_MAC=193,
|
||||
IPMI_LANP_DHCP_ENABLE=194,
|
||||
IPMI_LANP_CHAN_ACCESS_MODE=201,
|
||||
};
|
||||
|
||||
static struct lan_param {
|
||||
int cmd;
|
||||
int size;
|
||||
char desc[24];
|
||||
uint8_t * data;
|
||||
int data_len;
|
||||
} ipmi_lan_params[] __attribute__((unused)) = {
|
||||
{ IPMI_LANP_SET_IN_PROGRESS, 1, "Set in Progress" },
|
||||
{ IPMI_LANP_AUTH_TYPE, 1, "Auth Type Support" },
|
||||
{ IPMI_LANP_AUTH_TYPE_ENABLE, 5, "Auth Type Enable" },
|
||||
{ IPMI_LANP_IP_ADDR, 4, "IP Address" },
|
||||
{ IPMI_LANP_IP_ADDR_SRC, 1, "IP Address Source" },
|
||||
{ IPMI_LANP_MAC_ADDR, 6, "MAC Address" }, /* 5 */
|
||||
{ IPMI_LANP_SUBNET_MASK, 4, "Subnet Mask" },
|
||||
{ IPMI_LANP_IP_HEADER, 3, "IP Header" },
|
||||
{ IPMI_LANP_PRI_RMCP_PORT, 2, "Primary RMCP Port" },
|
||||
{ IPMI_LANP_SEC_RMCP_PORT, 2, "Secondary RMCP Port" },
|
||||
{ IPMI_LANP_BMC_ARP, 1, "BMC ARP Control" }, /* 10 */
|
||||
{ IPMI_LANP_GRAT_ARP, 1, "Gratituous ARP Intrvl" },
|
||||
{ IPMI_LANP_DEF_GATEWAY_IP, 4, "Default Gateway IP" },
|
||||
{ IPMI_LANP_DEF_GATEWAY_MAC, 6, "Default Gateway MAC" },
|
||||
{ IPMI_LANP_BAK_GATEWAY_IP, 4, "Backup Gateway IP" },
|
||||
{ IPMI_LANP_BAK_GATEWAY_MAC, 6, "Backup Gateway MAC" }, /* 15 */
|
||||
{ IPMI_LANP_SNMP_STRING, 18, "SNMP Community String" },
|
||||
{ IPMI_LANP_NUM_DEST, 1, "Number of Destinations"},
|
||||
{ IPMI_LANP_DEST_TYPE, 4, "Destination Type" },
|
||||
{ IPMI_LANP_DEST_ADDR, 13, "Destination Addresses" },
|
||||
{ IPMI_LANP_VLAN_ID, 2, "802.1q VLAN ID" }, /* 20 */
|
||||
{ IPMI_LANP_VLAN_PRIORITY, 1, "802.1q VLAN Priority" },
|
||||
{ IPMI_LANP_RMCP_CIPHER_SUPPORT,1, "RMCP+ Cipher Suite Count" },
|
||||
{ IPMI_LANP_RMCP_CIPHERS, 16, "RMCP+ Cipher Suites" },
|
||||
{ IPMI_LANP_RMCP_PRIV_LEVELS, 9, "Cipher Suite Priv Max" },
|
||||
{ IPMI_LANP_OEM_ALERT_STRING, 28, "OEM Alert String" }, /* 25 */
|
||||
{ IPMI_LANP_ALERT_RETRY, 1, "Alert Retry Algorithm" },
|
||||
{ IPMI_LANP_UTC_OFFSET, 3, "UTC Offset" },
|
||||
{ IPMI_LANP_DHCP_SERVER_IP, 4, "DHCP Server IP" },
|
||||
{ IPMI_LANP_DHCP_SERVER_MAC, 6, "DHDP Server MAC" },
|
||||
{ IPMI_LANP_DHCP_ENABLE, 1, "DHCP Enable" }, /* 30 */
|
||||
{ IPMI_LANP_CHAN_ACCESS_MODE, 2, "Channel Access Mode" },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
int ipmi_lanp_main(struct ipmi_intf *, int, char **);
|
||||
|
||||
#endif /*IPMI_LANP_H*/
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user