VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/MdePkg/Include/IndustryStandard/IpmiNetFnApp.h@ 81604

Last change on this file since 81604 was 80721, checked in by vboxsync, 6 years ago

Devices/EFI/FirmwareNew: Start upgrade process to edk2-stable201908 (compiles on Windows and works to some extent), bugref:4643

  • Property svn:eol-style set to native
File size: 25.6 KB
Line 
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 - 2018, Intel Corporation. All rights reserved.<BR>
15 SPDX-License-Identifier: BSD-2-Clause-Patent
16**/
17
18#ifndef _IPMI_NET_FN_APP_H_
19#define _IPMI_NET_FN_APP_H_
20
21#pragma pack(1)
22//
23// Net function definition for App command
24//
25#define IPMI_NETFN_APP 0x06
26
27//
28// Below is Definitions for IPM Device "Global" Commands (Chapter 20)
29//
30
31//
32// Definitions for Get Device ID command
33//
34#define IPMI_APP_GET_DEVICE_ID 0x1
35
36//
37// Constants and Structure definitions for "Get Device ID" command to follow here
38//
39typedef union {
40 struct {
41 UINT8 DeviceRevision : 4;
42 UINT8 Reserved : 3;
43 UINT8 DeviceSdr : 1;
44 } Bits;
45 UINT8 Uint8;
46} IPMI_GET_DEVICE_ID_DEVICE_REV;
47
48typedef union {
49 struct {
50 UINT8 MajorFirmwareRev : 7;
51 UINT8 UpdateMode : 1;
52 } Bits;
53 UINT8 Uint8;
54} IPMI_GET_DEVICE_ID_FIRMWARE_REV_1;
55
56typedef union {
57 struct {
58 UINT8 SensorDeviceSupport : 1;
59 UINT8 SdrRepositorySupport : 1;
60 UINT8 SelDeviceSupport : 1;
61 UINT8 FruInventorySupport : 1;
62 UINT8 IpmbMessageReceiver : 1;
63 UINT8 IpmbMessageGenerator : 1;
64 UINT8 BridgeSupport : 1;
65 UINT8 ChassisSupport : 1;
66 } Bits;
67 UINT8 Uint8;
68} IPMI_GET_DEVICE_ID_DEVICE_SUPPORT;
69
70typedef struct {
71 UINT8 CompletionCode;
72 UINT8 DeviceId;
73 IPMI_GET_DEVICE_ID_DEVICE_REV DeviceRevision;
74 IPMI_GET_DEVICE_ID_FIRMWARE_REV_1 FirmwareRev1;
75 UINT8 MinorFirmwareRev;
76 UINT8 SpecificationVersion;
77 IPMI_GET_DEVICE_ID_DEVICE_SUPPORT DeviceSupport;
78 UINT8 ManufacturerId[3];
79 UINT16 ProductId;
80 UINT32 AuxFirmwareRevInfo;
81} IPMI_GET_DEVICE_ID_RESPONSE;
82
83
84//
85// Definitions for Cold Reset command
86//
87#define IPMI_APP_COLD_RESET 0x2
88
89//
90// Constants and Structure definitions for "Cold Reset" command to follow here
91//
92
93//
94// Definitions for Warm Reset command
95//
96#define IPMI_APP_WARM_RESET 0x3
97
98//
99// Constants and Structure definitions for "Warm Reset" command to follow here
100//
101
102//
103// Definitions for Get Self Results command
104//
105#define IPMI_APP_GET_SELFTEST_RESULTS 0x4
106
107//
108// Constants and Structure definitions for "Get Self Test Results" command to follow here
109//
110typedef struct {
111 UINT8 CompletionCode;
112 UINT8 Result;
113 UINT8 Param;
114} IPMI_SELF_TEST_RESULT_RESPONSE;
115
116#define IPMI_APP_SELFTEST_NO_ERROR 0x55
117#define IPMI_APP_SELFTEST_NOT_IMPLEMENTED 0x56
118#define IPMI_APP_SELFTEST_ERROR 0x57
119#define IPMI_APP_SELFTEST_FATAL_HW_ERROR 0x58
120#define IPMI_APP_SELFTEST_INACCESSIBLE_SEL 0x80
121#define IPMI_APP_SELFTEST_INACCESSIBLE_SDR 0x40
122#define IPMI_APP_SELFTEST_INACCESSIBLE_FRU 0x20
123#define IPMI_APP_SELFTEST_IPMB_SIGNAL_FAIL 0x10
124#define IPMI_APP_SELFTEST_SDR_REPOSITORY_EMPTY 0x08
125#define IPMI_APP_SELFTEST_FRU_CORRUPT 0x04
126#define IPMI_APP_SELFTEST_FW_BOOTBLOCK_CORRUPT 0x02
127#define IPMI_APP_SELFTEST_FW_CORRUPT 0x01
128
129//
130// Definitions for Manufacturing Test ON command
131//
132#define IPMI_APP_MANUFACTURING_TEST_ON 0x5
133
134//
135// Constants and Structure definitions for "Manufacturing Test ON" command to follow here
136//
137
138//
139// Definitions for Set ACPI Power State command
140//
141#define IPMI_APP_SET_ACPI_POWERSTATE 0x6
142
143//
144// Constants and Structure definitions for "Set ACPI Power State" command to follow here
145//
146
147//
148// Definitions for System Power State
149//
150// Working
151#define IPMI_SYSTEM_POWER_STATE_S0_G0 0x0
152#define IPMI_SYSTEM_POWER_STATE_S1 0x1
153#define IPMI_SYSTEM_POWER_STATE_S2 0x2
154#define IPMI_SYSTEM_POWER_STATE_S3 0x3
155#define IPMI_SYSTEM_POWER_STATE_S4 0x4
156// Soft off
157#define IPMI_SYSTEM_POWER_STATE_S5_G2 0x5
158// Sent when message source cannot differentiate between S4 and S5
159#define IPMI_SYSTEM_POWER_STATE_S4_S5 0x6
160// Mechanical off
161#define IPMI_SYSTEM_POWER_STATE_G3 0x7
162// Sleeping - cannot differentiate between S1-S3
163#define IPMI_SYSTEM_POWER_STATE_SLEEPING 0x8
164// Sleeping - cannot differentiate between S1-S4
165#define IPMI_SYSTEM_POWER_STATE_G1_SLEEPING 0x9
166// S5 entered by override
167#define IPMI_SYSTEM_POWER_STATE_OVERRIDE 0xA
168#define IPMI_SYSTEM_POWER_STATE_LEGACY_ON 0x20
169#define IPMI_SYSTEM_POWER_STATE_LEGACY_OFF 0x21
170#define IPMI_SYSTEM_POWER_STATE_UNKNOWN 0x2A
171#define IPMI_SYSTEM_POWER_STATE_NO_CHANGE 0x7F
172
173//
174// Definitions for Device Power State
175//
176#define IPMI_DEVICE_POWER_STATE_D0 0x0
177#define IPMI_DEVICE_POWER_STATE_D1 0x1
178#define IPMI_DEVICE_POWER_STATE_D2 0x2
179#define IPMI_DEVICE_POWER_STATE_D3 0x3
180#define IPMI_DEVICE_POWER_STATE_UNKNOWN 0x2A
181#define IPMI_DEVICE_POWER_STATE_NO_CHANGE 0x7F
182
183typedef union {
184 struct {
185 UINT8 PowerState : 7;
186 UINT8 StateChange : 1;
187 } Bits;
188 UINT8 Uint8;
189} IPMI_ACPI_POWER_STATE;
190
191typedef struct {
192 IPMI_ACPI_POWER_STATE SystemPowerState;
193 IPMI_ACPI_POWER_STATE DevicePowerState;
194} IPMI_SET_ACPI_POWER_STATE_REQUEST;
195
196//
197// Definitions for Get ACPI Power State command
198//
199#define IPMI_APP_GET_ACPI_POWERSTATE 0x7
200
201//
202// Constants and Structure definitions for "Get ACPI Power State" command to follow here
203//
204
205//
206// Definitions for Get Device GUID command
207//
208#define IPMI_APP_GET_DEVICE_GUID 0x8
209
210//
211// Constants and Structure definitions for "Get Device GUID" command to follow here
212//
213//
214// Message structure definition for "Get Device Guid" IPMI command
215//
216typedef struct {
217 UINT8 CompletionCode;
218 UINT8 Guid[16];
219} IPMI_GET_DEVICE_GUID_RESPONSE;
220
221//
222// Below is Definitions for BMC Watchdog Timer Commands (Chapter 27)
223//
224
225//
226// Definitions for Reset WatchDog Timer command
227//
228#define IPMI_APP_RESET_WATCHDOG_TIMER 0x22
229
230//
231// Definitions for Set WatchDog Timer command
232//
233#define IPMI_APP_SET_WATCHDOG_TIMER 0x24
234
235//
236// Constants and Structure definitions for "Set WatchDog Timer" command to follow here
237//
238
239//
240// Definitions for watchdog timer use
241//
242#define IPMI_WATCHDOG_TIMER_BIOS_FRB2 0x1
243#define IPMI_WATCHDOG_TIMER_BIOS_POST 0x2
244#define IPMI_WATCHDOG_TIMER_OS_LOADER 0x3
245#define IPMI_WATCHDOG_TIMER_SMS 0x4
246#define IPMI_WATCHDOG_TIMER_OEM 0x5
247
248//
249// Structure definition for timer Use
250//
251typedef union {
252 struct {
253 UINT8 TimerUse : 3;
254 UINT8 Reserved : 3;
255 UINT8 TimerRunning : 1;
256 UINT8 TimerUseExpirationFlagLog : 1;
257 } Bits;
258 UINT8 Uint8;
259} IPMI_WATCHDOG_TIMER_USE;
260
261//
262// Definitions for watchdog timeout action
263//
264#define IPMI_WATCHDOG_TIMER_ACTION_NO_ACTION 0x0
265#define IPMI_WATCHDOG_TIMER_ACTION_HARD_RESET 0x1
266#define IPMI_WATCHDOG_TIMER_ACTION_POWER_DONW 0x2
267#define IPMI_WATCHDOG_TIMER_ACTION_POWER_CYCLE 0x3
268
269//
270// Definitions for watchdog pre-timeout interrupt
271//
272#define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_NONE 0x0
273#define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_SMI 0x1
274#define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_NMI 0x2
275#define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_MESSAGING 0x3
276
277//
278// Structure definitions for Timer Actions
279//
280typedef union {
281 struct {
282 UINT8 TimeoutAction : 3;
283 UINT8 Reserved1 : 1;
284 UINT8 PreTimeoutInterrupt : 3;
285 UINT8 Reserved2 : 1;
286 } Bits;
287 UINT8 Uint8;
288} IPMI_WATCHDOG_TIMER_ACTIONS;
289
290//
291// Bit definitions for Timer use expiration flags
292//
293#define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_BIOS_FRB2 BIT1
294#define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_BIOS_POST BIT2
295#define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_OS_LOAD BIT3
296#define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_SMS_OS BIT4
297#define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_OEM BIT5
298
299typedef struct {
300 IPMI_WATCHDOG_TIMER_USE TimerUse;
301 IPMI_WATCHDOG_TIMER_ACTIONS TimerActions;
302 UINT8 PretimeoutInterval;
303 UINT8 TimerUseExpirationFlagsClear;
304 UINT16 InitialCountdownValue;
305} IPMI_SET_WATCHDOG_TIMER_REQUEST;
306
307//
308// Definitions for Get WatchDog Timer command
309//
310#define IPMI_APP_GET_WATCHDOG_TIMER 0x25
311
312//
313// Constants and Structure definitions for "Get WatchDog Timer" command to follow here
314//
315typedef struct {
316 UINT8 CompletionCode;
317 IPMI_WATCHDOG_TIMER_USE TimerUse;
318 IPMI_WATCHDOG_TIMER_ACTIONS TimerActions;
319 UINT8 PretimeoutInterval;
320 UINT8 TimerUseExpirationFlagsClear;
321 UINT16 InitialCountdownValue;
322 UINT16 PresentCountdownValue;
323} IPMI_GET_WATCHDOG_TIMER_RESPONSE;
324
325//
326// Below is Definitions for IPMI Messaging Support Commands (Chapter 22)
327//
328
329//
330// Definitions for Set BMC Global Enables command
331//
332#define IPMI_APP_SET_BMC_GLOBAL_ENABLES 0x2E
333
334//
335// Constants and Structure definitions for "Set BMC Global Enables " command to follow here
336//
337typedef union {
338 struct {
339 UINT8 ReceiveMessageQueueInterrupt : 1;
340 UINT8 EventMessageBufferFullInterrupt : 1;
341 UINT8 EventMessageBuffer : 1;
342 UINT8 SystemEventLogging : 1;
343 UINT8 Reserved : 1;
344 UINT8 Oem0Enable : 1;
345 UINT8 Oem1Enable : 1;
346 UINT8 Oem2Enable : 1;
347 } Bits;
348 UINT8 Uint8;
349} IPMI_BMC_GLOBAL_ENABLES;
350
351typedef struct {
352 IPMI_BMC_GLOBAL_ENABLES SetEnables;
353} IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST;
354
355//
356// Definitions for Get BMC Global Enables command
357//
358#define IPMI_APP_GET_BMC_GLOBAL_ENABLES 0x2F
359
360//
361// Constants and Structure definitions for "Get BMC Global Enables " command to follow here
362//
363typedef struct {
364 UINT8 CompletionCode;
365 IPMI_BMC_GLOBAL_ENABLES GetEnables;
366} IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE;
367
368//
369// Definitions for Clear Message Flags command
370//
371#define IPMI_APP_CLEAR_MESSAGE_FLAGS 0x30
372
373//
374// Constants and Structure definitions for "Clear Message Flags" command to follow here
375//
376typedef union {
377 struct {
378 UINT8 ReceiveMessageQueue : 1;
379 UINT8 EventMessageBuffer : 1;
380 UINT8 Reserved1 : 1;
381 UINT8 WatchdogPerTimeoutInterrupt : 1;
382 UINT8 Reserved2 : 1;
383 UINT8 Oem0 : 1;
384 UINT8 Oem1 : 1;
385 UINT8 Oem2 : 1;
386 } Bits;
387 UINT8 Uint8;
388} IPMI_MESSAGE_FLAGS;
389
390typedef struct {
391 IPMI_MESSAGE_FLAGS ClearFlags;
392} IPMI_CLEAR_MESSAGE_FLAGS_REQUEST;
393
394//
395// Definitions for Get Message Flags command
396//
397#define IPMI_APP_GET_MESSAGE_FLAGS 0x31
398
399//
400// Constants and Structure definitions for "Get Message Flags" command to follow here
401//
402typedef struct {
403 UINT8 CompletionCode;
404 IPMI_MESSAGE_FLAGS GetFlags;
405} IPMI_GET_MESSAGE_FLAGS_RESPONSE;
406
407//
408// Definitions for Enable Message Channel Receive command
409//
410#define IPMI_APP_ENABLE_MESSAGE_CHANNEL_RECEIVE 0x32
411
412//
413// Constants and Structure definitions for "Enable Message Channel Receive" command to follow here
414//
415
416//
417// Definitions for Get Message command
418//
419#define IPMI_APP_GET_MESSAGE 0x33
420
421//
422// Constants and Structure definitions for "Get Message" command to follow here
423//
424typedef union {
425 struct {
426 UINT8 ChannelNumber : 4;
427 UINT8 InferredPrivilegeLevel : 4;
428 } Bits;
429 UINT8 Uint8;
430} IPMI_GET_MESSAGE_CHANNEL_NUMBER;
431
432typedef struct {
433 UINT8 CompletionCode;
434 IPMI_GET_MESSAGE_CHANNEL_NUMBER ChannelNumber;
435 UINT8 MessageData[0];
436} IPMI_GET_MESSAGE_RESPONSE;
437
438//
439// Definitions for Send Message command
440//
441#define IPMI_APP_SEND_MESSAGE 0x34
442
443//
444// Constants and Structure definitions for "Send Message" command to follow here
445//
446typedef union {
447 struct {
448 UINT8 ChannelNumber : 4;
449 UINT8 Authentication : 1;
450 UINT8 Encryption : 1;
451 UINT8 Tracking : 2;
452 } Bits;
453 UINT8 Uint8;
454} IPMI_SEND_MESSAGE_CHANNEL_NUMBER;
455
456typedef struct {
457 UINT8 CompletionCode;
458 IPMI_SEND_MESSAGE_CHANNEL_NUMBER ChannelNumber;
459 UINT8 MessageData[0];
460} IPMI_SEND_MESSAGE_REQUEST;
461
462typedef struct {
463 UINT8 CompletionCode;
464 UINT8 ResponseData[0];
465} IPMI_SEND_MESSAGE_RESPONSE;
466
467//
468// Definitions for Read Event Message Buffer command
469//
470#define IPMI_APP_READ_EVENT_MSG_BUFFER 0x35
471
472//
473// Constants and Structure definitions for "Read Event Message Buffer" command to follow here
474//
475
476//
477// Definitions for Get BT Interface Capabilities command
478//
479#define IPMI_APP_GET_BT_INTERFACE_CAPABILITY 0x36
480
481//
482// Constants and Structure definitions for "Get BT Interface Capabilities" command to follow here
483//
484
485//
486// Definitions for Get System GUID command
487//
488#define IPMI_APP_GET_SYSTEM_GUID 0x37
489
490//
491// Constants and Structure definitions for "Get System GUID" command to follow here
492//
493
494//
495// Definitions for Get Channel Authentication Capabilities command
496//
497#define IPMI_APP_GET_CHANNEL_AUTHENTICATION_CAPABILITIES 0x38
498
499//
500// Constants and Structure definitions for "Get Channel Authentication Capabilities" command to follow here
501//
502
503//
504// Definitions for Get Session Challenge command
505//
506#define IPMI_APP_GET_SESSION_CHALLENGE 0x39
507
508//
509// Constants and Structure definitions for "Get Session Challenge" command to follow here
510//
511
512//
513// Definitions for Activate Session command
514//
515#define IPMI_APP_ACTIVATE_SESSION 0x3A
516
517//
518// Constants and Structure definitions for "Activate Session" command to follow here
519//
520
521//
522// Definitions for Set Session Privelege Level command
523//
524#define IPMI_APP_SET_SESSION_PRIVELEGE_LEVEL 0x3B
525
526//
527// Constants and Structure definitions for "Set Session Privelege Level" command to follow here
528//
529
530//
531// Definitions for Close Session command
532//
533#define IPMI_APP_CLOSE_SESSION 0x3C
534
535//
536// Constants and Structure definitions for "Close Session" command to follow here
537//
538
539//
540// Definitions for Get Session Info command
541//
542#define IPMI_APP_GET_SESSION_INFO 0x3D
543
544//
545// Constants and Structure definitions for "Get Session Info" command to follow here
546//
547
548//
549// Definitions for Get Auth Code command
550//
551#define IPMI_APP_GET_AUTHCODE 0x3F
552
553//
554// Constants and Structure definitions for "Get AuthCode" command to follow here
555//
556
557//
558// Definitions for Set Channel Access command
559//
560#define IPMI_APP_SET_CHANNEL_ACCESS 0x40
561
562//
563// Constants and Structure definitions for "Set Channel Access" command to follow here
564//
565
566//
567// Definitions for Get Channel Access command
568//
569#define IPMI_APP_GET_CHANNEL_ACCESS 0x41
570
571//
572// Constants and Structure definitions for "Get Channel Access" command to follow here
573//
574
575//
576// Definitions for channel access memory type in Get Channel Access command request
577//
578#define IPMI_CHANNEL_ACCESS_MEMORY_TYPE_NON_VOLATILE 0x1
579#define IPMI_CHANNEL_ACCESS_MEMORY_TYPE_PRESENT_VOLATILE_SETTING 0x2
580
581//
582// Definitions for channel access modes in Get Channel Access command response
583//
584#define IPMI_CHANNEL_ACCESS_MODES_DISABLED 0x0
585#define IPMI_CHANNEL_ACCESS_MODES_PRE_BOOT_ONLY 0x1
586#define IPMI_CHANNEL_ACCESS_MODES_ALWAYS_AVAILABLE 0x2
587#define IPMI_CHANNEL_ACCESS_MODES_SHARED 0x3
588
589typedef union {
590 struct {
591 UINT8 ChannelNo : 4;
592 UINT8 Reserved : 4;
593 } Bits;
594 UINT8 Uint8;
595} IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER;
596
597typedef union {
598 struct {
599 UINT8 Reserved : 6;
600 UINT8 MemoryType : 2;
601 } Bits;
602 UINT8 Uint8;
603} IPMI_GET_CHANNEL_ACCESS_TYPE;
604
605typedef struct {
606 IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER ChannelNumber;
607 IPMI_GET_CHANNEL_ACCESS_TYPE AccessType;
608} IPMI_GET_CHANNEL_ACCESS_REQUEST;
609
610typedef union {
611 struct {
612 UINT8 AccessMode : 3;
613 UINT8 UserLevelAuthEnabled : 1;
614 UINT8 MessageAuthEnable : 1;
615 UINT8 Alert : 1;
616 UINT8 Reserved : 2;
617 } Bits;
618 UINT8 Uint8;
619} IPMI_GET_CHANNEL_ACCESS_CHANNEL_ACCESS;
620
621typedef union {
622 struct {
623 UINT8 ChannelPriviledgeLimit : 4;
624 UINT8 Reserved : 4;
625 } Bits;
626 UINT8 Uint8;
627} IPMI_GET_CHANNEL_ACCESS_PRIVILEGE_LIMIT;
628
629typedef struct {
630 UINT8 CompletionCode;
631 IPMI_GET_CHANNEL_ACCESS_CHANNEL_ACCESS ChannelAccess;
632 IPMI_GET_CHANNEL_ACCESS_PRIVILEGE_LIMIT PrivilegeLimit;
633} IPMI_GET_CHANNEL_ACCESS_RESPONSE;
634
635//
636// Definitions for Get Channel Info command
637//
638#define IPMI_APP_GET_CHANNEL_INFO 0x42
639
640//
641// Constants and Structure definitions for "Get Channel Info" command to follow here
642//
643
644//
645// Definitions for channel media type
646//
647// IPMB (I2C)
648#define IPMI_CHANNEL_MEDIA_TYPE_IPMB 0x1
649// ICMB v1.0
650#define IPMI_CHANNEL_MEDIA_TYPE_ICMB_1_0 0x2
651// ICMB v0.9
652#define IPMI_CHANNEL_MEDIA_TYPE_ICMB_0_9 0x3
653// 802.3 LAN
654#define IPMI_CHANNEL_MEDIA_TYPE_802_3_LAN 0x4
655// Asynch. Serial/Modem (RS-232)
656#define IPMI_CHANNEL_MEDIA_TYPE_RS_232 0x5
657// Other LAN
658#define IPMI_CHANNEL_MEDIA_TYPE_OTHER_LAN 0x6
659// PCI SMBus
660#define IPMI_CHANNEL_MEDIA_TYPE_PCI_SM_BUS 0x7
661// SMBus v1.0/1.1
662#define IPMI_CHANNEL_MEDIA_TYPE_SM_BUS_V1 0x8
663// SMBus v2.0
664#define IPMI_CHANNEL_MEDIA_TYPE_SM_BUS_V2 0x9
665// USB 1.x
666#define IPMI_CHANNEL_MEDIA_TYPE_USB1 0xA
667// USB 2.x
668#define IPMI_CHANNEL_MEDIA_TYPE_USB2 0xB
669// System Interface (KCS, SMIC, or BT)
670#define IPMI_CHANNEL_MEDIA_TYPE_SYSTEM_INTERFACE 0xC
671// OEM
672#define IPMI_CHANNEL_MEDIA_TYPE_OEM_START 0x60
673#define IPMI_CHANNEL_MEDIA_TYPE_OEM_END 0x7F
674
675typedef union {
676 struct {
677 UINT8 ChannelNo : 4;
678 UINT8 Reserved : 4;
679 } Bits;
680 UINT8 Uint8;
681} IPMI_CHANNEL_INFO_CHANNEL_NUMBER;
682
683typedef union {
684 struct {
685 UINT8 ChannelMediumType : 7;
686 UINT8 Reserved : 1;
687 } Bits;
688 UINT8 Uint8;
689} IPMI_CHANNEL_INFO_MEDIUM_TYPE;
690
691typedef union {
692 struct {
693 UINT8 ChannelProtocolType : 5;
694 UINT8 Reserved : 3;
695 } Bits;
696 UINT8 Uint8;
697} IPMI_CHANNEL_INFO_PROTOCOL_TYPE;
698
699typedef union {
700 struct {
701 UINT8 ActiveSessionCount : 6;
702 UINT8 SessionSupport : 2;
703 } Bits;
704 UINT8 Uint8;
705} IPMI_CHANNEL_INFO_SESSION_SUPPORT;
706
707typedef struct {
708 UINT8 CompletionCode;
709 IPMI_CHANNEL_INFO_CHANNEL_NUMBER ChannelNumber;
710 IPMI_CHANNEL_INFO_MEDIUM_TYPE MediumType;
711 IPMI_CHANNEL_INFO_PROTOCOL_TYPE ProtocolType;
712 IPMI_CHANNEL_INFO_SESSION_SUPPORT SessionSupport;
713 UINT8 VendorId[3];
714 UINT16 AuxChannelInfo;
715} IPMI_GET_CHANNEL_INFO_RESPONSE;
716
717//
718// Definitions for Get Channel Info command
719//
720#define IPMI_APP_GET_CHANNEL_INFO 0x42
721
722//
723// Constants and Structure definitions for "Get Channel Info" command to follow here
724//
725
726//
727// Definitions for Set User Access command
728//
729#define IPMI_APP_SET_USER_ACCESS 0x43
730
731//
732// Constants and Structure definitions for "Set User Access" command to follow here
733//
734
735//
736// Definitions for Get User Access command
737//
738#define IPMI_APP_GET_USER_ACCESS 0x44
739
740//
741// Constants and Structure definitions for "Get User Access" command to follow here
742//
743typedef union {
744 struct {
745 UINT8 ChannelNo : 4;
746 UINT8 Reserved : 4;
747 } Bits;
748 UINT8 Uint8;
749} IPMI_GET_USER_ACCESS_CHANNEL_NUMBER;
750
751typedef union {
752 struct {
753 UINT8 UserId : 6;
754 UINT8 Reserved : 2;
755 } Bits;
756 UINT8 Uint8;
757} IPMI_USER_ID;
758
759typedef struct {
760 IPMI_GET_USER_ACCESS_CHANNEL_NUMBER ChannelNumber;
761 IPMI_USER_ID UserId;
762} IPMI_GET_USER_ACCESS_REQUEST;
763
764typedef union {
765 struct {
766 UINT8 MaxUserId : 6;
767 UINT8 Reserved : 2;
768 } Bits;
769 UINT8 Uint8;
770} IPMI_GET_USER_ACCESS_MAX_USER_ID;
771
772typedef union {
773 struct {
774 UINT8 CurrentUserId : 6;
775 UINT8 UserIdEnableStatus : 2;
776 } Bits;
777 UINT8 Uint8;
778} IPMI_GET_USER_ACCESS_CURRENT_USER;
779
780typedef union {
781 struct {
782 UINT8 FixedUserId : 6;
783 UINT8 Reserved : 2;
784 } Bits;
785 UINT8 Uint8;
786} IPMI_GET_USER_ACCESS_FIXED_NAME_USER;
787
788typedef union {
789 struct {
790 UINT8 UserPrivilegeLimit : 4;
791 UINT8 EnableIpmiMessaging : 1;
792 UINT8 EnableUserLinkAuthetication : 1;
793 UINT8 UserAccessAvailable : 1;
794 UINT8 Reserved : 1;
795 } Bits;
796 UINT8 Uint8;
797} IPMI_GET_USER_ACCESS_CHANNEL_ACCESS;
798
799typedef struct {
800 UINT8 CompletionCode;
801 IPMI_GET_USER_ACCESS_MAX_USER_ID MaxUserId;
802 IPMI_GET_USER_ACCESS_CURRENT_USER CurrentUser;
803 IPMI_GET_USER_ACCESS_FIXED_NAME_USER FixedNameUser;
804 IPMI_GET_USER_ACCESS_CHANNEL_ACCESS ChannelAccess;
805} IPMI_GET_USER_ACCESS_RESPONSE;
806
807//
808// Definitions for Set User Name command
809//
810#define IPMI_APP_SET_USER_NAME 0x45
811
812//
813// Constants and Structure definitions for "Set User Name" command to follow here
814//
815typedef struct {
816 IPMI_USER_ID UserId;
817 UINT8 UserName[16];
818} IPMI_SET_USER_NAME_REQUEST;
819
820//
821// Definitions for Get User Name command
822//
823#define IPMI_APP_GET_USER_NAME 0x46
824
825//
826// Constants and Structure definitions for "Get User Name" command to follow here
827//
828typedef struct {
829 IPMI_USER_ID UserId;
830} IPMI_GET_USER_NAME_REQUEST;
831
832typedef struct {
833 UINT8 CompletionCode;
834 UINT8 UserName[16];
835} IPMI_GET_USER_NAME_RESPONSE;
836
837//
838// Definitions for Set User Password command
839//
840#define IPMI_APP_SET_USER_PASSWORD 0x47
841
842//
843// Constants and Structure definitions for "Set User Password" command to follow here
844//
845
846//
847// Definitions for Set User password command operation type
848//
849#define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_DISABLE_USER 0x0
850#define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_ENABLE_USER 0x1
851#define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_SET_PASSWORD 0x2
852#define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_TEST_PASSWORD 0x3
853
854//
855// Definitions for Set user password command password size
856//
857#define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_16 0x0
858#define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_20 0x1
859
860typedef union {
861 struct {
862 UINT8 UserId : 6;
863 UINT8 Reserved : 1;
864 UINT8 PasswordSize : 1;
865 } Bits;
866 UINT8 Uint8;
867} IPMI_SET_USER_PASSWORD_USER_ID;
868
869typedef union {
870 struct {
871 UINT8 Operation : 2;
872 UINT8 Reserved : 6;
873 } Bits;
874 UINT8 Uint8;
875} IPMI_SET_USER_PASSWORD_OPERATION;
876
877typedef struct {
878 IPMI_SET_USER_PASSWORD_USER_ID UserId;
879 IPMI_SET_USER_PASSWORD_OPERATION Operation;
880 UINT8 PasswordData[0]; // 16 or 20 bytes, depending on the 'PasswordSize' field
881} IPMI_SET_USER_PASSWORD_REQUEST;
882
883//
884// Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24)
885//
886
887//
888// Definitions for Activate Payload command
889//
890#define IPMI_APP_ACTIVATE_PAYLOAD 0x48
891
892//
893// Constants and Structure definitions for "Activate Payload" command to follow here
894//
895
896//
897// Definitions for De-Activate Payload command
898//
899#define IPMI_APP_DEACTIVATE_PAYLOAD 0x49
900
901//
902// Constants and Structure definitions for "DeActivate Payload" command to follow here
903//
904
905//
906// Definitions for Get Payload activation Status command
907//
908#define IPMI_APP_GET_PAYLOAD_ACTIVATION_STATUS 0x4a
909
910//
911// Constants and Structure definitions for "Get Payload activation Status" command to follow here
912//
913
914//
915// Definitions for Get Payload Instance Info command
916//
917#define IPMI_APP_GET_PAYLOAD_INSTANCE_INFO 0x4b
918
919//
920// Constants and Structure definitions for "Get Payload Instance Info" command to follow here
921//
922
923//
924// Definitions for Set User Payload Access command
925//
926#define IPMI_APP_SET_USER_PAYLOAD_ACCESS 0x4C
927
928//
929// Constants and Structure definitions for "Set User Payload Access" command to follow here
930//
931
932//
933// Definitions for Get User Payload Access command
934//
935#define IPMI_APP_GET_USER_PAYLOAD_ACCESS 0x4D
936
937//
938// Constants and Structure definitions for "Get User Payload Access" command to follow here
939//
940
941//
942// Definitions for Get Channel Payload Support command
943//
944#define IPMI_APP_GET_CHANNEL_PAYLOAD_SUPPORT 0x4E
945
946//
947// Constants and Structure definitions for "Get Channel Payload Support" command to follow here
948//
949
950//
951// Definitions for Get Channel Payload Version command
952//
953#define IPMI_APP_GET_CHANNEL_PAYLOAD_VERSION 0x4F
954
955//
956// Constants and Structure definitions for "Get Channel Payload Version" command to follow here
957//
958
959//
960// Definitions for Get Channel OEM Payload Info command
961//
962#define IPMI_APP_GET_CHANNEL_OEM_PAYLOAD_INFO 0x50
963
964//
965// Constants and Structure definitions for "Get Channel OEM Payload Info" command to follow here
966//
967
968//
969// Definitions for Master Write-Read command
970//
971#define IPMI_APP_MASTER_WRITE_READ 0x52
972
973//
974// Constants and Structure definitions for "Master Write Read" command to follow here
975//
976
977//
978// Definitions for Get Channel Cipher Suites command
979//
980#define IPMI_APP_GET_CHANNEL_CIPHER_SUITES 0x54
981
982//
983// Constants and Structure definitions for "Get Channel Cipher Suites" command to follow here
984//
985
986//
987// Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24, Section 3)
988//
989
990//
991// Definitions for Suspend-Resume Payload Encryption command
992//
993#define IPMI_APP_SUSPEND_RESUME_PAYLOAD_ENCRYPTION 0x55
994
995//
996// Constants and Structure definitions for "Suspend-Resume Payload Encryption" command to follow here
997//
998
999//
1000// Below is Definitions for IPMI Messaging Support Commands (Chapter 22, Section 25 and 9)
1001//
1002
1003//
1004// Definitions for Set Channel Security Keys command
1005//
1006#define IPMI_APP_SET_CHANNEL_SECURITY_KEYS 0x56
1007
1008//
1009// Constants and Structure definitions for "Set Channel Security Keys" command to follow here
1010//
1011
1012//
1013// Definitions for Get System Interface Capabilities command
1014//
1015#define IPMI_APP_GET_SYSTEM_INTERFACE_CAPABILITIES 0x57
1016
1017//
1018// Constants and Structure definitions for "Get System Interface Capabilities" command to follow here
1019//
1020
1021//
1022// Definitions for Get System Interface Capabilities command SSIF transaction support
1023//
1024#define IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_SSIF_TRANSACTION_SUPPORT_SINGLE_PARTITION_RW 0x0
1025#define IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_SSIF_TRANSACTION_SUPPORT_MULTI_PARTITION_RW 0x1
1026#define IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_SSIF_TRANSACTION_SUPPORT_MULTI_PARTITION_RW_WITH_MIDDLE 0x2
1027
1028#pragma pack()
1029#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette