1 /** @file
2   IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
3 
4   This file contains all NetFn App commands, including:
5     IPM Device "Global" Commands (Chapter 20)
6     Firmware Firewall & Command Discovery Commands (Chapter 21)
7     BMC Watchdog Timer Commands (Chapter 27)
8     IPMI Messaging Support Commands (Chapter 22)
9     RMCP+ Support and Payload Commands (Chapter 24)
10 
11   See IPMI specification, Appendix G, Command Assignments
12   and Appendix H, Sub-function Assignments.
13 
14   Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR>
15   This program and the accompanying materials
16   are licensed and made available under the terms and conditions of the BSD License
17   which accompanies this distribution.  The full text of the license may be found at
18   http://opensource.org/licenses/bsd-license.php
19 
20   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
21   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
22 **/
23 
24 #ifndef _IPMI_NET_FN_APP_H_
25 #define _IPMI_NET_FN_APP_H_
26 
27 #pragma pack(1)
28 //
29 // Net function definition for App command
30 //
31 #define IPMI_NETFN_APP  0x06
32 
33 //
34 //  Below is Definitions for IPM Device "Global" Commands  (Chapter 20)
35 //
36 
37 //
38 //  Definitions for Get Device ID command
39 //
40 #define IPMI_APP_GET_DEVICE_ID 0x1
41 
42 //
43 //  Constants and Structure definitions for "Get Device ID" command to follow here
44 //
45 typedef struct {
46   UINT8   CompletionCode;
47   UINT8   DeviceId;
48   UINT8   DeviceRevision : 4;
49   UINT8   Reserved : 3;
50   UINT8   DeviceSdr : 1;
51   UINT8   MajorFirmwareRev : 7;
52   UINT8   UpdateMode : 1;
53   UINT8   MinorFirmwareRev;
54   UINT8   SpecificationVersion;
55   UINT8   SensorDeviceSupport : 1;
56   UINT8   SdrRepositorySupport : 1;
57   UINT8   SelDeviceSupport : 1;
58   UINT8   FruInventorySupport : 1;
59   UINT8   IpmbMessageReceiver : 1;
60   UINT8   IpmbMessageGenerator : 1;
61   UINT8   BridgeSupport : 1;
62   UINT8   ChassisSupport : 1;
63   UINT8   ManufacturerId[3];
64   UINT16  ProductId;
65   UINT32  AuxFirmwareRevInfo;
66 } IPMI_GET_DEVICE_ID_RESPONSE;
67 
68 
69 //
70 //  Definitions for Cold Reset command
71 //
72 #define IPMI_APP_COLD_RESET  0x2
73 
74 //
75 //  Constants and Structure definitions for "Cold Reset" command to follow here
76 //
77 
78 //
79 //  Definitions for Warm Reset command
80 //
81 #define IPMI_APP_WARM_RESET  0x3
82 
83 //
84 //  Constants and Structure definitions for "Warm Reset" command to follow here
85 //
86 
87 //
88 //  Definitions for Get Self Results command
89 //
90 #define IPMI_APP_GET_SELFTEST_RESULTS  0x4
91 
92 //
93 //  Constants and Structure definitions for "Get Self Test Results" command to follow here
94 //
95 typedef struct {
96   UINT8  CompletionCode;
97   UINT8  Result;
98   UINT8  Param;
99 } IPMI_SELF_TEST_RESULT_RESPONSE;
100 
101 #define IPMI_APP_SELFTEST_NO_ERROR             0x55
102 #define IPMI_APP_SELFTEST_NOT_IMPLEMENTED      0x56
103 #define IPMI_APP_SELFTEST_ERROR                0x57
104 #define IPMI_APP_SELFTEST_FATAL_HW_ERROR       0x58
105 #define IPMI_APP_SELFTEST_INACCESSIBLE_SEL     0x80
106 #define IPMI_APP_SELFTEST_INACCESSIBLE_SDR     0x40
107 #define IPMI_APP_SELFTEST_INACCESSIBLE_FRU     0x20
108 #define IPMI_APP_SELFTEST_IPMB_SIGNAL_FAIL     0x10
109 #define IPMI_APP_SELFTEST_SDR_REPOSITORY_EMPTY 0x08
110 #define IPMI_APP_SELFTEST_FRU_CORRUPT          0x04
111 #define IPMI_APP_SELFTEST_FW_BOOTBLOCK_CORRUPT 0x02
112 #define IPMI_APP_SELFTEST_FW_CORRUPT           0x01
113 
114 //
115 //  Definitions for Manufacturing Test ON command
116 //
117 #define IPMI_APP_MANUFACTURING_TEST_ON 0x5
118 
119 //
120 //  Constants and Structure definitions for "Manufacturing Test ON" command to follow here
121 //
122 
123 //
124 //  Definitions for Set ACPI Power State command
125 //
126 #define IPMI_APP_SET_ACPI_POWERSTATE 0x6
127 
128 //
129 //  Constants and Structure definitions for "Set ACPI Power State" command to follow here
130 //
131 typedef struct {
132   UINT8  AcpiSystemPowerState  : 7;
133   UINT8  AcpiSystemStateChange : 1;
134   UINT8  AcpiDevicePowerState  : 7;
135   UINT8  AcpiDeviceStateChange : 1;
136 } IPMI_SET_ACPI_POWER_STATE_REQUEST;
137 
138 //
139 //  Definitions for Get ACPI Power State command
140 //
141 #define IPMI_APP_GET_ACPI_POWERSTATE 0x7
142 
143 //
144 //  Constants and Structure definitions for "Get ACPI Power State" command to follow here
145 //
146 
147 //
148 //  Definitions for Get Device GUID command
149 //
150 #define IPMI_APP_GET_DEVICE_GUID 0x8
151 
152 //
153 //  Constants and Structure definitions for "Get Device GUID" command to follow here
154 //
155 //
156 //  Message structure definition for "Get Device Guid" IPMI command
157 //
158 typedef struct {
159   UINT8  CompletionCode;
160   UINT8  Guid[16];
161 } IPMI_GET_DEVICE_GUID_RESPONSE;
162 
163 //
164 //  Below is Definitions for BMC Watchdog Timer Commands (Chapter 27)
165 //
166 
167 //
168 //  Definitions for Reset WatchDog Timer command
169 //
170 #define IPMI_APP_RESET_WATCHDOG_TIMER  0x22
171 
172 //
173 //  Constants and Structure definitions for "Reset WatchDog Timer" command to follow here
174 //
175 typedef struct {
176   UINT8 TimerUse : 3;
177   UINT8 Reserved : 3;
178   UINT8 TimerRunning : 1;
179   UINT8 TimerUseExpirationFlagLog : 1;
180 } IPMI_WATCHDOG_TIMER_USE;
181 
182 //
183 //  Definitions for Set WatchDog Timer command
184 //
185 #define IPMI_APP_SET_WATCHDOG_TIMER  0x24
186 
187 //
188 //  Constants and Structure definitions for "Set WatchDog Timer" command to follow here
189 //
190 typedef struct {
191   IPMI_WATCHDOG_TIMER_USE         TimerUse;
192   UINT8                           TimerActions;
193   UINT8                           PretimeoutInterval;
194   UINT8                           TimerUseExpirationFlagsClear;
195   UINT16                          InitialCountdownValue;
196 } IPMI_SET_WATCHDOG_TIMER_REQUEST;
197 
198 //
199 //  Definitions for Get WatchDog Timer command
200 //
201 #define IPMI_APP_GET_WATCHDOG_TIMER  0x25
202 
203 //
204 //  Constants and Structure definitions for "Get WatchDog Timer" command to follow here
205 //
206 typedef struct {
207   UINT8                           CompletionCode;
208   IPMI_WATCHDOG_TIMER_USE         TimerUse;
209   UINT8                           TimerActions;
210   UINT8                           PretimeoutInterval;
211   UINT8                           TimerUseExpirationFlagsClear;
212   UINT16                          InitialCountdownValue;
213   UINT16                          PresentCountdownValue;
214 } IPMI_GET_WATCHDOG_TIMER_RESPONSE;
215 
216 //
217 //  Below is Definitions for IPMI Messaging Support Commands (Chapter 22)
218 //
219 
220 //
221 //  Definitions for Set BMC Global Enables command
222 //
223 #define IPMI_APP_SET_BMC_GLOBAL_ENABLES  0x2E
224 
225 //
226 //  Constants and Structure definitions for "Set BMC Global Enables " command to follow here
227 //
228 
229 //
230 //  Definitions for Get BMC Global Enables command
231 //
232 #define IPMI_APP_GET_BMC_GLOBAL_ENABLES  0x2F
233 
234 //
235 //  Constants and Structure definitions for "Get BMC Global Enables " command to follow here
236 //
237 
238 //
239 //  Definitions for Clear Message Flags command
240 //
241 #define IPMI_APP_CLEAR_MESSAGE_FLAGS 0x30
242 
243 //
244 //  Constants and Structure definitions for "Clear Message Flags" command to follow here
245 //
246 
247 //
248 //  Definitions for Get Message Flags command
249 //
250 #define IPMI_APP_GET_MESSAGE_FLAGS 0x31
251 
252 //
253 //  Constants and Structure definitions for "Get Message Flags" command to follow here
254 //
255 
256 //
257 //  Definitions for Enable Message Channel Receive command
258 //
259 #define IPMI_APP_ENABLE_MESSAGE_CHANNEL_RECEIVE  0x32
260 
261 //
262 //  Constants and Structure definitions for "Enable Message Channel Receive" command to follow here
263 //
264 
265 //
266 //  Definitions for Get Message command
267 //
268 #define IPMI_APP_GET_MESSAGE 0x33
269 
270 //
271 //  Constants and Structure definitions for "Get Message" command to follow here
272 //
273 
274 //
275 //  Definitions for Send Message command
276 //
277 #define IPMI_APP_SEND_MESSAGE  0x34
278 
279 //
280 //  Constants and Structure definitions for "Send Message" command to follow here
281 //
282 
283 //
284 //  Definitions for Read Event Message Buffer command
285 //
286 #define IPMI_APP_READ_EVENT_MSG_BUFFER 0x35
287 
288 //
289 //  Constants and Structure definitions for "Read Event Message Buffer" command to follow here
290 //
291 
292 //
293 //  Definitions for Get BT Interface Capabilities command
294 //
295 #define IPMI_APP_GET_BT_INTERFACE_CAPABILITY 0x36
296 
297 //
298 //  Constants and Structure definitions for "Get BT Interface Capabilities" command to follow here
299 //
300 
301 //
302 //  Definitions for Get System GUID command
303 //
304 #define IPMI_APP_GET_SYSTEM_GUID 0x37
305 
306 //
307 //  Constants and Structure definitions for "Get System GUID" command to follow here
308 //
309 
310 //
311 //  Definitions for Get Channel Authentication Capabilities command
312 //
313 #define IPMI_APP_GET_CHANNEL_AUTHENTICATION_CAPABILITIES 0x38
314 
315 //
316 //  Constants and Structure definitions for "Get Channel Authentication Capabilities" command to follow here
317 //
318 
319 //
320 //  Definitions for Get Session Challenge command
321 //
322 #define IPMI_APP_GET_SESSION_CHALLENGE 0x39
323 
324 //
325 //  Constants and Structure definitions for "Get Session Challenge" command to follow here
326 //
327 
328 //
329 //  Definitions for Activate Session command
330 //
331 #define IPMI_APP_ACTIVATE_SESSION  0x3A
332 
333 //
334 //  Constants and Structure definitions for "Activate Session" command to follow here
335 //
336 
337 //
338 //  Definitions for Set Session Privelege Level command
339 //
340 #define IPMI_APP_SET_SESSION_PRIVELEGE_LEVEL 0x3B
341 
342 //
343 //  Constants and Structure definitions for "Set Session Privelege Level" command to follow here
344 //
345 
346 //
347 //  Definitions for Close Session command
348 //
349 #define IPMI_APP_CLOSE_SESSION 0x3C
350 
351 //
352 //  Constants and Structure definitions for "Close Session" command to follow here
353 //
354 
355 //
356 //  Definitions for Get Session Info command
357 //
358 #define IPMI_APP_GET_SESSION_INFO  0x3D
359 
360 //
361 //  Constants and Structure definitions for "Get Session Info" command to follow here
362 //
363 
364 //
365 //  Definitions for Get Auth Code command
366 //
367 #define IPMI_APP_GET_AUTHCODE  0x3F
368 
369 //
370 //  Constants and Structure definitions for "Get AuthCode" command to follow here
371 //
372 
373 //
374 //  Definitions for Set Channel Access command
375 //
376 #define IPMI_APP_SET_CHANNEL_ACCESS  0x40
377 
378 //
379 //  Constants and Structure definitions for "Set Channel Access" command to follow here
380 //
381 
382 //
383 //  Definitions for Get Channel Access command
384 //
385 #define IPMI_APP_GET_CHANNEL_ACCESS  0x41
386 
387 //
388 //  Constants and Structure definitions for "Get Channel Access" command to follow here
389 //
390 typedef struct {
391   UINT8  ChannelNo : 4;
392   UINT8  Reserve1 : 4;
393   UINT8  Reserve2 : 6;
394   UINT8  MemoryType : 2;
395 } IPMI_GET_CHANNEL_ACCESS_REQUEST;
396 
397 typedef struct {
398   UINT8  CompletionCode;
399   UINT8  AccessMode : 3;
400   UINT8  UserLevelAuthEnabled : 1;
401   UINT8  MessageAuthEnable : 1;
402   UINT8  Alert : 1;
403   UINT8  Reserve1 : 2;
404   UINT8  ChannelPriviledgeLimit : 4;
405   UINT8  Reserve2 : 4;
406 } IPMI_GET_CHANNEL_ACCESS_RESPONSE;
407 
408 //
409 //  Definitions for Get Channel Info command
410 //
411 #define IPMI_APP_GET_CHANNEL_INFO  0x42
412 
413 //
414 //  Constants and Structure definitions for "Get Channel Info" command to follow here
415 //
416 typedef struct {
417   UINT8   CompletionCode;
418   UINT8   ChannelNo : 4;
419   UINT8   Reserve1 : 4;
420   UINT8   ChannelMediumType : 7;
421   UINT8   Reserve2 : 1;
422   UINT8   ChannelProtocolType : 5;
423   UINT8   Reserve3 : 3;
424   UINT8   ActiveSessionCount : 6;
425   UINT8   SessionSupport : 2;
426   UINT8   VendorId[3];
427   UINT16  AuxChannelInfo;
428 } IPMI_GET_CHANNEL_INFO_RESPONSE;
429 
430 //
431 //  Definitions for Get Channel Info command
432 //
433 #define IPMI_APP_GET_CHANNEL_INFO  0x42
434 
435 //
436 //  Constants and Structure definitions for "Get Channel Info" command to follow here
437 //
438 
439 //
440 //  Definitions for Set User Access command
441 //
442 #define IPMI_APP_SET_USER_ACCESS 0x43
443 
444 //
445 //  Constants and Structure definitions for "Set User Access" command to follow here
446 //
447 
448 //
449 //  Definitions for Get User Access command
450 //
451 #define IPMI_APP_GET_USER_ACCESS 0x44
452 
453 //
454 //  Constants and Structure definitions for "Get User Access" command to follow here
455 //
456 
457 //
458 //  Definitions for Set User Name command
459 //
460 #define IPMI_APP_SET_USER_NAME 0x45
461 
462 //
463 //  Constants and Structure definitions for "Set User Name" command to follow here
464 //
465 
466 //
467 //  Definitions for Get User Name command
468 //
469 #define IPMI_APP_GET_USER_NAME 0x46
470 
471 //
472 //  Constants and Structure definitions for "Get User Name" command to follow here
473 //
474 
475 //
476 //  Definitions for Set User Password command
477 //
478 #define IPMI_APP_SET_USER_PASSWORD 0x47
479 
480 //
481 //  Constants and Structure definitions for "Set User Password" command to follow here
482 //
483 
484 //
485 //  Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24)
486 //
487 
488 //
489 //  Definitions for Activate Payload command
490 //
491 #define IPMI_APP_ACTIVATE_PAYLOAD  0x48
492 
493 //
494 //  Constants and Structure definitions for "Activate Payload" command to follow here
495 //
496 
497 //
498 //  Definitions for De-Activate Payload command
499 //
500 #define IPMI_APP_DEACTIVATE_PAYLOAD  0x49
501 
502 //
503 //  Constants and Structure definitions for "DeActivate Payload" command to follow here
504 //
505 
506 //
507 //  Definitions for Get Payload activation Status command
508 //
509 #define IPMI_APP_GET_PAYLOAD_ACTIVATION_STATUS 0x4a
510 
511 //
512 //  Constants and Structure definitions for "Get Payload activation Status" command to follow here
513 //
514 
515 //
516 //  Definitions for Get Payload Instance Info command
517 //
518 #define IPMI_APP_GET_PAYLOAD_INSTANCE_INFO 0x4b
519 
520 //
521 //  Constants and Structure definitions for "Get Payload Instance Info" command to follow here
522 //
523 
524 //
525 //  Definitions for Set User Payload Access command
526 //
527 #define IPMI_APP_SET_USER_PAYLOAD_ACCESS 0x4C
528 
529 //
530 //  Constants and Structure definitions for "Set User Payload Access" command to follow here
531 //
532 
533 //
534 //  Definitions for Get User Payload Access command
535 //
536 #define IPMI_APP_GET_USER_PAYLOAD_ACCESS 0x4D
537 
538 //
539 //  Constants and Structure definitions for "Get User Payload Access" command to follow here
540 //
541 
542 //
543 //  Definitions for Get Channel Payload Support command
544 //
545 #define IPMI_APP_GET_CHANNEL_PAYLOAD_SUPPORT 0x4E
546 
547 //
548 //  Constants and Structure definitions for "Get Channel Payload Support" command to follow here
549 //
550 
551 //
552 //  Definitions for Get Channel Payload Version command
553 //
554 #define IPMI_APP_GET_CHANNEL_PAYLOAD_VERSION 0x4F
555 
556 //
557 //  Constants and Structure definitions for "Get Channel Payload Version" command to follow here
558 //
559 
560 //
561 //  Definitions for Get Channel OEM Payload Info command
562 //
563 #define IPMI_APP_GET_CHANNEL_OEM_PAYLOAD_INFO  0x50
564 
565 //
566 //  Constants and Structure definitions for "Get Channel OEM Payload Info" command to follow here
567 //
568 
569 //
570 //  Definitions for  Master Write-Read command
571 //
572 #define IPMI_APP_MASTER_WRITE_READ 0x52
573 
574 //
575 //  Constants and Structure definitions for "Master Write Read" command to follow here
576 //
577 
578 //
579 //  Definitions for  Get Channel Cipher Suites command
580 //
581 #define IPMI_APP_GET_CHANNEL_CIPHER_SUITES 0x54
582 
583 //
584 //  Constants and Structure definitions for "Get Channel Cipher Suites" command to follow here
585 //
586 
587 //
588 //  Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24, Section 3)
589 //
590 
591 //
592 //  Definitions for  Suspend-Resume Payload Encryption command
593 //
594 #define IPMI_APP_SUSPEND_RESUME_PAYLOAD_ENCRYPTION 0x55
595 
596 //
597 //  Constants and Structure definitions for "Suspend-Resume Payload Encryption" command to follow here
598 //
599 
600 //
601 //  Below is Definitions for IPMI Messaging Support Commands (Chapter 22, Section 25 and 9)
602 //
603 
604 //
605 //  Definitions for  Set Channel Security Keys command
606 //
607 #define IPMI_APP_SET_CHANNEL_SECURITY_KEYS 0x56
608 
609 //
610 //  Constants and Structure definitions for "Set Channel Security Keys" command to follow here
611 //
612 
613 //
614 //  Definitions for  Get System Interface Capabilities command
615 //
616 #define IPMI_APP_GET_SYSTEM_INTERFACE_CAPABILITIES 0x57
617 
618 //
619 //  Constants and Structure definitions for "Get System Interface Capabilities" command to follow here
620 //
621 
622 #pragma pack()
623 #endif
624