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