MdePkg/IndustryStandard/Ipmi: Use union for bitmap fields

This commit enhances the bitmap fields defined in the IPMI header files,
union types will be used to provide the users with both the individual
bitmap access and the whole byte/word access.

Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Hao Wu 2018-04-28 13:48:06 +08:00
parent 25517f7ce3
commit aeb6f57625
5 changed files with 1079 additions and 539 deletions

View File

@ -26,11 +26,24 @@
#pragma pack(1) #pragma pack(1)
// //
// Structure definition for FRU Common Header // Structure definitions for FRU Common Header
// //
typedef struct { typedef union {
///
/// Individual bit fields
///
struct {
UINT8 FormatVersionNumber:4; UINT8 FormatVersionNumber:4;
UINT8 Reserved:4; UINT8 Reserved:4;
} Bits;
///
/// All bit fields as a 8-bit value
///
UINT8 Uint8;
} IPMI_FRU_COMMON_HEADER_FORMAT_VERSION;
typedef struct {
IPMI_FRU_COMMON_HEADER_FORMAT_VERSION FormatVersion;
UINT8 InternalUseStartingOffset; UINT8 InternalUseStartingOffset;
UINT8 ChassisInfoStartingOffset; UINT8 ChassisInfoStartingOffset;
UINT8 BoardAreaStartingOffset; UINT8 BoardAreaStartingOffset;
@ -43,11 +56,24 @@ typedef struct {
// //
// Structure definition for FRU MultiRecord Header // Structure definition for FRU MultiRecord Header
// //
typedef struct { typedef union {
UINT8 RecordTypeId; ///
/// Individual bit fields
///
struct {
UINT8 RecordFormatVersion:4; UINT8 RecordFormatVersion:4;
UINT8 Reserved:3; UINT8 Reserved:3;
UINT8 EndofList:1; UINT8 EndofList:1;
} Bits;
///
/// All bit fields as a 8-bit value
///
UINT8 Uint8;
} IPMI_FRU_MULTI_RECORD_HEADER_FORMAT_VERSION;
typedef struct {
UINT8 RecordTypeId;
IPMI_FRU_MULTI_RECORD_HEADER_FORMAT_VERSION FormatVersion;
UINT8 RecordLength; UINT8 RecordLength;
UINT8 RecordChecksum; UINT8 RecordChecksum;
UINT8 HeaderChecksum; UINT8 HeaderChecksum;

View File

@ -42,16 +42,25 @@
// //
// Constants and Structure definitions for "Get Device ID" command to follow here // Constants and Structure definitions for "Get Device ID" command to follow here
// //
typedef struct { typedef union {
UINT8 CompletionCode; struct {
UINT8 DeviceId;
UINT8 DeviceRevision : 4; UINT8 DeviceRevision : 4;
UINT8 Reserved : 3; UINT8 Reserved : 3;
UINT8 DeviceSdr : 1; UINT8 DeviceSdr : 1;
} Bits;
UINT8 Uint8;
} IPMI_GET_DEVICE_ID_DEVICE_REV;
typedef union {
struct {
UINT8 MajorFirmwareRev : 7; UINT8 MajorFirmwareRev : 7;
UINT8 UpdateMode : 1; UINT8 UpdateMode : 1;
UINT8 MinorFirmwareRev; } Bits;
UINT8 SpecificationVersion; UINT8 Uint8;
} IPMI_GET_DEVICE_ID_FIRMWARE_REV_1;
typedef union {
struct {
UINT8 SensorDeviceSupport : 1; UINT8 SensorDeviceSupport : 1;
UINT8 SdrRepositorySupport : 1; UINT8 SdrRepositorySupport : 1;
UINT8 SelDeviceSupport : 1; UINT8 SelDeviceSupport : 1;
@ -60,6 +69,18 @@ typedef struct {
UINT8 IpmbMessageGenerator : 1; UINT8 IpmbMessageGenerator : 1;
UINT8 BridgeSupport : 1; UINT8 BridgeSupport : 1;
UINT8 ChassisSupport : 1; UINT8 ChassisSupport : 1;
} Bits;
UINT8 Uint8;
} IPMI_GET_DEVICE_ID_DEVICE_SUPPORT;
typedef struct {
UINT8 CompletionCode;
UINT8 DeviceId;
IPMI_GET_DEVICE_ID_DEVICE_REV DeviceRevision;
IPMI_GET_DEVICE_ID_FIRMWARE_REV_1 FirmwareRev1;
UINT8 MinorFirmwareRev;
UINT8 SpecificationVersion;
IPMI_GET_DEVICE_ID_DEVICE_SUPPORT DeviceSupport;
UINT8 ManufacturerId[3]; UINT8 ManufacturerId[3];
UINT16 ProductId; UINT16 ProductId;
UINT32 AuxFirmwareRevInfo; UINT32 AuxFirmwareRevInfo;
@ -165,11 +186,17 @@ typedef struct {
#define IPMI_DEVICE_POWER_STATE_UNKNOWN 0x2A #define IPMI_DEVICE_POWER_STATE_UNKNOWN 0x2A
#define IPMI_DEVICE_POWER_STATE_NO_CHANGE 0x7F #define IPMI_DEVICE_POWER_STATE_NO_CHANGE 0x7F
typedef union {
struct {
UINT8 PowerState : 7;
UINT8 StateChange : 1;
} Bits;
UINT8 Uint8;
} IPMI_ACPI_POWER_STATE;
typedef struct { typedef struct {
UINT8 AcpiSystemPowerState : 7; IPMI_ACPI_POWER_STATE SystemPowerState;
UINT8 AcpiSystemStateChange : 1; IPMI_ACPI_POWER_STATE DevicePowerState;
UINT8 AcpiDevicePowerState : 7;
UINT8 AcpiDeviceStateChange : 1;
} IPMI_SET_ACPI_POWER_STATE_REQUEST; } IPMI_SET_ACPI_POWER_STATE_REQUEST;
// //
@ -227,11 +254,14 @@ typedef struct {
// //
// Structure definition for timer Use // Structure definition for timer Use
// //
typedef struct { typedef union {
struct {
UINT8 TimerUse : 3; UINT8 TimerUse : 3;
UINT8 Reserved : 3; UINT8 Reserved : 3;
UINT8 TimerRunning : 1; UINT8 TimerRunning : 1;
UINT8 TimerUseExpirationFlagLog : 1; UINT8 TimerUseExpirationFlagLog : 1;
} Bits;
UINT8 Uint8;
} IPMI_WATCHDOG_TIMER_USE; } IPMI_WATCHDOG_TIMER_USE;
// //
@ -253,11 +283,14 @@ typedef struct {
// //
// Structure definitions for Timer Actions // Structure definitions for Timer Actions
// //
typedef struct { typedef union {
struct {
UINT8 TimeoutAction : 3; UINT8 TimeoutAction : 3;
UINT8 Reserved1 : 1; UINT8 Reserved1 : 1;
UINT8 PreTimeoutInterrupt : 3; UINT8 PreTimeoutInterrupt : 3;
UINT8 Reserved2 : 1; UINT8 Reserved2 : 1;
} Bits;
UINT8 Uint8;
} IPMI_WATCHDOG_TIMER_ACTIONS; } IPMI_WATCHDOG_TIMER_ACTIONS;
// //
@ -307,15 +340,22 @@ typedef struct {
// //
// Constants and Structure definitions for "Set BMC Global Enables " command to follow here // Constants and Structure definitions for "Set BMC Global Enables " command to follow here
// //
typedef struct { typedef union {
UINT8 EnableReceiveMessageQueueInterrupt : 1; struct {
UINT8 EnableEventMessageBufferFullInterrupt : 1; UINT8 ReceiveMessageQueueInterrupt : 1;
UINT8 EnableEventMessageBuffer : 1; UINT8 EventMessageBufferFullInterrupt : 1;
UINT8 EnableSystemEventLogging : 1; UINT8 EventMessageBuffer : 1;
UINT8 SystemEventLogging : 1;
UINT8 Reserved : 1; UINT8 Reserved : 1;
UINT8 Oem0Enable : 1; UINT8 Oem0Enable : 1;
UINT8 Oem1Enable : 1; UINT8 Oem1Enable : 1;
UINT8 Oem2Enable : 1; UINT8 Oem2Enable : 1;
} Bits;
UINT8 Uint8;
} IPMI_BMC_GLOBAL_ENABLES;
typedef struct {
IPMI_BMC_GLOBAL_ENABLES SetEnables;
} IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST; } IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST;
// //
@ -328,14 +368,7 @@ typedef struct {
// //
typedef struct { typedef struct {
UINT8 CompletionCode; UINT8 CompletionCode;
UINT8 ReceiveMessageQueueInterrupt : 1; IPMI_BMC_GLOBAL_ENABLES GetEnables;
UINT8 EventMessageBufferFullInterrupt : 1;
UINT8 EventMessageBuffer : 1;
UINT8 SystemEventLogging : 1;
UINT8 Reserved : 1;
UINT8 Oem0Enable : 1;
UINT8 Oem1Enable : 1;
UINT8 Oem2Enable : 1;
} IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE; } IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE;
// //
@ -346,15 +379,22 @@ typedef struct {
// //
// Constants and Structure definitions for "Clear Message Flags" command to follow here // Constants and Structure definitions for "Clear Message Flags" command to follow here
// //
typedef union {
struct {
UINT8 ReceiveMessageQueue : 1;
UINT8 EventMessageBuffer : 1;
UINT8 Reserved1 : 1;
UINT8 WatchdogPerTimeoutInterrupt : 1;
UINT8 Reserved2 : 1;
UINT8 Oem0 : 1;
UINT8 Oem1 : 1;
UINT8 Oem2 : 1;
} Bits;
UINT8 Uint8;
} IPMI_MESSAGE_FLAGS;
typedef struct { typedef struct {
UINT8 ClearReceiveMessageQueue : 1; IPMI_MESSAGE_FLAGS ClearFlags;
UINT8 ClearEventMessageBuffer : 1;
UINT8 Reserved0 : 1;
UINT8 ClearWatchdogPerTimeoutInterruptFlag : 1;
UINT8 Reserved : 1;
UINT8 ClearOem0Enable : 1;
UINT8 ClearOem1Enable : 1;
UINT8 ClearOem2Enable : 1;
} IPMI_CLEAR_MESSAGE_FLAGS_REQUEST; } IPMI_CLEAR_MESSAGE_FLAGS_REQUEST;
// //
@ -367,14 +407,7 @@ typedef struct {
// //
typedef struct { typedef struct {
UINT8 CompletionCode; UINT8 CompletionCode;
UINT8 ReceiveMessageAvailable : 1; IPMI_MESSAGE_FLAGS GetFlags;
UINT8 EventMessageBufferFull : 1;
UINT8 Reserved0 : 1;
UINT8 WatchdogPerTimeoutInterruptOccurred : 1;
UINT8 Reserved : 1;
UINT8 Oem0DataAvailable : 1;
UINT8 Oem1DataAvailable : 1;
UINT8 Oem2DataAvailable : 1;
} IPMI_GET_MESSAGE_FLAGS_RESPONSE; } IPMI_GET_MESSAGE_FLAGS_RESPONSE;
// //
@ -394,10 +427,17 @@ typedef struct {
// //
// Constants and Structure definitions for "Get Message" command to follow here // Constants and Structure definitions for "Get Message" command to follow here
// //
typedef struct { typedef union {
UINT8 CompletionCode; struct {
UINT8 ChannelNumber : 4; UINT8 ChannelNumber : 4;
UINT8 InferredPrivilegeLevel : 4; UINT8 InferredPrivilegeLevel : 4;
} Bits;
UINT8 Uint8;
} IPMI_GET_MESSAGE_CHANNEL_NUMBER;
typedef struct {
UINT8 CompletionCode;
IPMI_GET_MESSAGE_CHANNEL_NUMBER ChannelNumber;
UINT8 MessageData[0]; UINT8 MessageData[0];
} IPMI_GET_MESSAGE_RESPONSE; } IPMI_GET_MESSAGE_RESPONSE;
@ -409,12 +449,19 @@ typedef struct {
// //
// Constants and Structure definitions for "Send Message" command to follow here // Constants and Structure definitions for "Send Message" command to follow here
// //
typedef struct { typedef union {
UINT8 CompletionCode; struct {
UINT8 ChannelNumber : 4; UINT8 ChannelNumber : 4;
UINT8 Authentication : 1; UINT8 Authentication : 1;
UINT8 Encryption : 1; UINT8 Encryption : 1;
UINT8 Tracking : 2; UINT8 Tracking : 2;
} Bits;
UINT8 Uint8;
} IPMI_SEND_MESSAGE_CHANNEL_NUMBER;
typedef struct {
UINT8 CompletionCode;
IPMI_SEND_MESSAGE_CHANNEL_NUMBER ChannelNumber;
UINT8 MessageData[0]; UINT8 MessageData[0];
} IPMI_SEND_MESSAGE_REQUEST; } IPMI_SEND_MESSAGE_REQUEST;
@ -545,22 +592,50 @@ typedef struct {
#define IPMI_CHANNEL_ACCESS_MODES_ALWAYS_AVAILABLE 0x2 #define IPMI_CHANNEL_ACCESS_MODES_ALWAYS_AVAILABLE 0x2
#define IPMI_CHANNEL_ACCESS_MODES_SHARED 0x3 #define IPMI_CHANNEL_ACCESS_MODES_SHARED 0x3
typedef struct { typedef union {
struct {
UINT8 ChannelNo : 4; UINT8 ChannelNo : 4;
UINT8 Reserve1 : 4; UINT8 Reserved : 4;
UINT8 Reserve2 : 6; } Bits;
UINT8 Uint8;
} IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER;
typedef union {
struct {
UINT8 Reserved : 6;
UINT8 MemoryType : 2; UINT8 MemoryType : 2;
} IPMI_GET_CHANNEL_ACCESS_REQUEST; } Bits;
UINT8 Uint8;
} IPMI_GET_CHANNEL_ACCESS_TYPE;
typedef struct { typedef struct {
UINT8 CompletionCode; IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER ChannelNumber;
IPMI_GET_CHANNEL_ACCESS_TYPE AccessType;
} IPMI_GET_CHANNEL_ACCESS_REQUEST;
typedef union {
struct {
UINT8 AccessMode : 3; UINT8 AccessMode : 3;
UINT8 UserLevelAuthEnabled : 1; UINT8 UserLevelAuthEnabled : 1;
UINT8 MessageAuthEnable : 1; UINT8 MessageAuthEnable : 1;
UINT8 Alert : 1; UINT8 Alert : 1;
UINT8 Reserve1 : 2; UINT8 Reserved : 2;
} Bits;
UINT8 Uint8;
} IPMI_GET_CHANNEL_ACCESS_CHANNEL_ACCESS;
typedef union {
struct {
UINT8 ChannelPriviledgeLimit : 4; UINT8 ChannelPriviledgeLimit : 4;
UINT8 Reserve2 : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_GET_CHANNEL_ACCESS_PRIVILEGE_LIMIT;
typedef struct {
UINT8 CompletionCode;
IPMI_GET_CHANNEL_ACCESS_CHANNEL_ACCESS ChannelAccess;
IPMI_GET_CHANNEL_ACCESS_PRIVILEGE_LIMIT PrivilegeLimit;
} IPMI_GET_CHANNEL_ACCESS_RESPONSE; } IPMI_GET_CHANNEL_ACCESS_RESPONSE;
// //
@ -603,16 +678,44 @@ typedef struct {
#define IPMI_CHANNEL_MEDIA_TYPE_OEM_START 0x60 #define IPMI_CHANNEL_MEDIA_TYPE_OEM_START 0x60
#define IPMI_CHANNEL_MEDIA_TYPE_OEM_END 0x7F #define IPMI_CHANNEL_MEDIA_TYPE_OEM_END 0x7F
typedef struct { typedef union {
UINT8 CompletionCode; struct {
UINT8 ChannelNo : 4; UINT8 ChannelNo : 4;
UINT8 Reserve1 : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_CHANNEL_INFO_CHANNEL_NUMBER;
typedef union {
struct {
UINT8 ChannelMediumType : 7; UINT8 ChannelMediumType : 7;
UINT8 Reserve2 : 1; UINT8 Reserved : 1;
} Bits;
UINT8 Uint8;
} IPMI_CHANNEL_INFO_MEDIUM_TYPE;
typedef union {
struct {
UINT8 ChannelProtocolType : 5; UINT8 ChannelProtocolType : 5;
UINT8 Reserve3 : 3; UINT8 Reserved : 3;
} Bits;
UINT8 Uint8;
} IPMI_CHANNEL_INFO_PROTOCOL_TYPE;
typedef union {
struct {
UINT8 ActiveSessionCount : 6; UINT8 ActiveSessionCount : 6;
UINT8 SessionSupport : 2; UINT8 SessionSupport : 2;
} Bits;
UINT8 Uint8;
} IPMI_CHANNEL_INFO_SESSION_SUPPORT;
typedef struct {
UINT8 CompletionCode;
IPMI_CHANNEL_INFO_CHANNEL_NUMBER ChannelNumber;
IPMI_CHANNEL_INFO_MEDIUM_TYPE MediumType;
IPMI_CHANNEL_INFO_PROTOCOL_TYPE ProtocolType;
IPMI_CHANNEL_INFO_SESSION_SUPPORT SessionSupport;
UINT8 VendorId[3]; UINT8 VendorId[3];
UINT16 AuxChannelInfo; UINT16 AuxChannelInfo;
} IPMI_GET_CHANNEL_INFO_RESPONSE; } IPMI_GET_CHANNEL_INFO_RESPONSE;
@ -643,26 +746,68 @@ typedef struct {
// //
// Constants and Structure definitions for "Get User Access" command to follow here // Constants and Structure definitions for "Get User Access" command to follow here
// //
typedef struct { typedef union {
struct {
UINT8 ChannelNo : 4; UINT8 ChannelNo : 4;
UINT8 Reserved1 : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_GET_USER_ACCESS_CHANNEL_NUMBER;
typedef union {
struct {
UINT8 UserId : 6; UINT8 UserId : 6;
UINT8 Reserved2 : 2; UINT8 Reserved : 2;
} IPMI_GET_USER_ACCESS_REQUEST; } Bits;
UINT8 Uint8;
} IPMI_USER_ID;
typedef struct { typedef struct {
UINT8 CompletionCode; IPMI_GET_USER_ACCESS_CHANNEL_NUMBER ChannelNumber;
IPMI_USER_ID UserId;
} IPMI_GET_USER_ACCESS_REQUEST;
typedef union {
struct {
UINT8 MaxUserId : 6; UINT8 MaxUserId : 6;
UINT8 Reserved1 : 2; UINT8 Reserved : 2;
} Bits;
UINT8 Uint8;
} IPMI_GET_USER_ACCESS_MAX_USER_ID;
typedef union {
struct {
UINT8 CurrentUserId : 6; UINT8 CurrentUserId : 6;
UINT8 UserIdEnableStatus : 2; UINT8 UserIdEnableStatus : 2;
} Bits;
UINT8 Uint8;
} IPMI_GET_USER_ACCESS_CURRENT_USER;
typedef union {
struct {
UINT8 FixedUserId : 6; UINT8 FixedUserId : 6;
UINT8 Reserved2 : 2; UINT8 Reserved : 2;
} Bits;
UINT8 Uint8;
} IPMI_GET_USER_ACCESS_FIXED_NAME_USER;
typedef union {
struct {
UINT8 UserPrivilegeLimit : 4; UINT8 UserPrivilegeLimit : 4;
UINT8 EnableIpmiMessaging : 1; UINT8 EnableIpmiMessaging : 1;
UINT8 EnableUserLinkAuthetication : 1; UINT8 EnableUserLinkAuthetication : 1;
UINT8 UserAccessAvailable : 1; UINT8 UserAccessAvailable : 1;
UINT8 Reserved3 : 1; UINT8 Reserved : 1;
} Bits;
UINT8 Uint8;
} IPMI_GET_USER_ACCESS_CHANNEL_ACCESS;
typedef struct {
UINT8 CompletionCode;
IPMI_GET_USER_ACCESS_MAX_USER_ID MaxUserId;
IPMI_GET_USER_ACCESS_CURRENT_USER CurrentUser;
IPMI_GET_USER_ACCESS_FIXED_NAME_USER FixedNameUser;
IPMI_GET_USER_ACCESS_CHANNEL_ACCESS ChannelAccess;
} IPMI_GET_USER_ACCESS_RESPONSE; } IPMI_GET_USER_ACCESS_RESPONSE;
// //
@ -674,8 +819,7 @@ typedef struct {
// Constants and Structure definitions for "Set User Name" command to follow here // Constants and Structure definitions for "Set User Name" command to follow here
// //
typedef struct { typedef struct {
UINT8 UserId : 6; IPMI_USER_ID UserId;
UINT8 Reserved : 2;
UINT8 UserName[16]; UINT8 UserName[16];
} IPMI_SET_USER_NAME_REQUEST; } IPMI_SET_USER_NAME_REQUEST;
@ -688,8 +832,7 @@ typedef struct {
// Constants and Structure definitions for "Get User Name" command to follow here // Constants and Structure definitions for "Get User Name" command to follow here
// //
typedef struct { typedef struct {
UINT8 UserId : 6; IPMI_USER_ID UserId;
UINT8 Reserved : 2;
} IPMI_GET_USER_NAME_REQUEST; } IPMI_GET_USER_NAME_REQUEST;
typedef struct { typedef struct {
@ -720,12 +863,26 @@ typedef struct {
#define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_16 0x0 #define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_16 0x0
#define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_20 0x1 #define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_20 0x1
typedef struct { typedef union {
struct {
UINT8 UserId : 6; UINT8 UserId : 6;
UINT8 Reserved1 : 1; UINT8 Reserved : 1;
UINT8 PasswordSize : 1; UINT8 PasswordSize : 1;
} Bits;
UINT8 Uint8;
} IPMI_SET_USER_PASSWORD_USER_ID;
typedef union {
struct {
UINT8 Operation : 2; UINT8 Operation : 2;
UINT8 Reserved2 : 6; UINT8 Reserved : 6;
} Bits;
UINT8 Uint8;
} IPMI_SET_USER_PASSWORD_OPERATION;
typedef struct {
IPMI_SET_USER_PASSWORD_USER_ID UserId;
IPMI_SET_USER_PASSWORD_OPERATION Operation;
UINT8 PasswordData[0]; // 16 or 20 bytes, depending on the 'PasswordSize' field UINT8 PasswordData[0]; // 16 or 20 bytes, depending on the 'PasswordSize' field
} IPMI_SET_USER_PASSWORD_REQUEST; } IPMI_SET_USER_PASSWORD_REQUEST;

View File

@ -72,9 +72,16 @@ typedef struct {
// //
// Constants and Structure definitions for "Chassis Control" command to follow here // Constants and Structure definitions for "Chassis Control" command to follow here
// //
typedef struct { typedef union {
struct {
UINT8 ChassisControl:4; UINT8 ChassisControl:4;
UINT8 Reserved:4; UINT8 Reserved:4;
} Bits;
UINT8 Uint8;
} IPMI_CHASSIS_CONTROL_CHASSIS_CONTROL;
typedef struct {
IPMI_CHASSIS_CONTROL_CHASSIS_CONTROL ChassisControl;
} IPMI_CHASSIS_CONTROL_REQUEST; } IPMI_CHASSIS_CONTROL_REQUEST;
// //
@ -112,9 +119,16 @@ typedef struct {
// //
// Constants and Structure definitions for "Set Power Restore Policy" command to follow here // Constants and Structure definitions for "Set Power Restore Policy" command to follow here
// //
typedef union {
struct {
UINT8 PowerRestorePolicy : 3;
UINT8 Reserved : 5;
} Bits;
UINT8 Uint8;
} IPMI_POWER_RESTORE_POLICY;
typedef struct { typedef struct {
UINT8 PowerRestorePolicy:3; IPMI_POWER_RESTORE_POLICY PowerRestorePolicy;
UINT8 Reserved:5;
} IPMI_SET_POWER_RESTORE_POLICY_REQUEST; } IPMI_SET_POWER_RESTORE_POLICY_REQUEST;
typedef struct { typedef struct {
@ -130,25 +144,30 @@ typedef struct {
// //
// Constants and Structure definitions for "Get System Restart Cause" command to follow here // Constants and Structure definitions for "Get System Restart Cause" command to follow here
// //
typedef enum { #define IPMI_SYSTEM_RESTART_CAUSE_UNKNOWN 0x0
Unknown, #define IPMI_SYSTEM_RESTART_CAUSE_CHASSIS_CONTROL_COMMAND 0x1
ChassisControlCommand, #define IPMI_SYSTEM_RESTART_CAUSE_PUSHBUTTON_RESET 0x2
ResetViaPushButton, #define IPMI_SYSTEM_RESTART_CAUSE_PUSHBUTTON_POWERUP 0x3
PowerupViaPowerButton, #define IPMI_SYSTEM_RESTART_CAUSE_WATCHDOG_EXPIRE 0x4
WatchdogExpiration, #define IPMI_SYSTEM_RESTART_CAUSE_OEM 0x5
Oem, #define IPMI_SYSTEM_RESTART_CAUSE_AUTO_POWER_ALWAYS_RESTORE 0x6
AutoPowerOnAlwaysRestore, #define IPMI_SYSTEM_RESTART_CAUSE_AUTO_POWER_RESTORE_PREV 0x7
AutoPowerOnRestorePrevious, #define IPMI_SYSTEM_RESTART_CAUSE_PEF_RESET 0x8
ResetViaPef, #define IPMI_SYSTEM_RESTART_CAUSE_PEF_POWERCYCLE 0x9
PowerCycleViaPef, #define IPMI_SYSTEM_RESTART_CAUSE_SOFT_RESET 0xA
SoftReset, #define IPMI_SYSTEM_RESTART_CAUSE_RTC_POWERUP 0xB
PowerUpViaRtc
typedef union {
struct {
UINT8 Cause:4;
UINT8 Reserved:4;
} Bits;
UINT8 Uint8;
} IPMI_SYSTEM_RESTART_CAUSE; } IPMI_SYSTEM_RESTART_CAUSE;
typedef struct { typedef struct {
UINT8 CompletionCode; UINT8 CompletionCode;
UINT8 Cause:4; IPMI_SYSTEM_RESTART_CAUSE RestartCause;
UINT8 Reserved:4;
UINT8 ChannelNumber; UINT8 ChannelNumber;
} IPMI_GET_SYSTEM_RESTART_CAUSE_RESPONSE; } IPMI_GET_SYSTEM_RESTART_CAUSE_RESPONSE;
@ -160,10 +179,17 @@ typedef struct {
// //
// Constants and Structure definitions for "Set System boot options" command to follow here // Constants and Structure definitions for "Set System boot options" command to follow here
// //
typedef struct { typedef union {
struct {
UINT8 ParameterSelector:7; UINT8 ParameterSelector:7;
UINT8 MarkParameterInvalid:1; UINT8 MarkParameterInvalid:1;
UINT8 ParameterData[1]; } Bits;
UINT8 Uint8;
} IPMI_SET_BOOT_OPTIONS_PARAMETER_VALID;
typedef struct {
IPMI_SET_BOOT_OPTIONS_PARAMETER_VALID ParameterValid;
UINT8 ParameterData[0];
} IPMI_SET_BOOT_OPTIONS_REQUEST; } IPMI_SET_BOOT_OPTIONS_REQUEST;
// //
@ -174,9 +200,16 @@ typedef struct {
// //
// Constants and Structure definitions for "Get System boot options" command to follow here // Constants and Structure definitions for "Get System boot options" command to follow here
// //
typedef struct { typedef union {
struct {
UINT8 ParameterSelector:7; UINT8 ParameterSelector:7;
UINT8 Reserved:1; UINT8 Reserved:1;
} Bits;
UINT8 Uint8;
} IPMI_GET_BOOT_OPTIONS_PARAMETER_SELECTOR;
typedef struct {
IPMI_GET_BOOT_OPTIONS_PARAMETER_SELECTOR ParameterSelector;
UINT8 SetSelector; UINT8 SetSelector;
UINT8 BlockSelector; UINT8 BlockSelector;
} IPMI_GET_BOOT_OPTIONS_REQUEST; } IPMI_GET_BOOT_OPTIONS_REQUEST;
@ -217,24 +250,33 @@ typedef struct {
// //
// Response Parameters for IPMI Get Boot Options // Response Parameters for IPMI Get Boot Options
// //
typedef struct { typedef union {
UINT8 SetInProgress: 2; struct {
UINT8 Reserved: 6; UINT8 SetInProgress : 2;
UINT8 Reserved : 6;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0; } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0;
typedef struct { typedef struct {
UINT8 ServicePartitionSelector; UINT8 ServicePartitionSelector;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1; } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1;
typedef struct { typedef union {
UINT8 ServicePartitionDiscovered:1; struct {
UINT8 ServicePartitionScanRequest:1; UINT8 ServicePartitionDiscovered : 1;
UINT8 ServicePartitionScanRequest : 1;
UINT8 Reserved: 6; UINT8 Reserved: 6;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2; } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2;
typedef struct { typedef union {
UINT8 BmcBootFlagValid: 5; struct {
UINT8 Reserved: 3; UINT8 BmcBootFlagValid : 5;
UINT8 Reserved : 3;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3; } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3;
typedef struct { typedef struct {
@ -267,47 +309,74 @@ typedef struct {
#define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_BMC 0x01 #define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_BMC 0x01
#define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_SYSTEM 0x02 #define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_SYSTEM 0x02
typedef struct { typedef union {
// struct {
// Data 1 UINT8 Reserved:5;
//
UINT8 Reserved0:5;
UINT8 BiosBootType:1; UINT8 BiosBootType:1;
UINT8 PersistentOptions:1; UINT8 PersistentOptions:1;
UINT8 BootFlagValid:1; UINT8 BootFlagValid:1;
// } Bits;
// Data 2 UINT8 Uint8;
// } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_1;
typedef union {
struct {
UINT8 LockReset:1; UINT8 LockReset:1;
UINT8 ScreenBlank:1; UINT8 ScreenBlank:1;
UINT8 BootDeviceSelector:4; UINT8 BootDeviceSelector:4;
UINT8 LockKeyboard:1; UINT8 LockKeyboard:1;
UINT8 CmosClear:1; UINT8 CmosClear:1;
// } Bits;
// Data 3 UINT8 Uint8;
// } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_2;
typedef union {
struct {
UINT8 ConsoleRedirection:2; UINT8 ConsoleRedirection:2;
UINT8 LockSleep:1; UINT8 LockSleep:1;
UINT8 UserPasswordBypass:1; UINT8 UserPasswordBypass:1;
UINT8 ForceProgressEventTrap:1; UINT8 ForceProgressEventTrap:1;
UINT8 BiosVerbosity:2; UINT8 BiosVerbosity:2;
UINT8 LockPower:1; UINT8 LockPower:1;
// } Bits;
// Data 4 UINT8 Uint8;
// } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_3;
typedef union {
struct {
UINT8 BiosMuxControlOverride:3; UINT8 BiosMuxControlOverride:3;
UINT8 BiosSharedModeOverride:1; UINT8 BiosSharedModeOverride:1;
UINT8 Reserved1:4; UINT8 Reserved:4;
// } Bits;
// Data 5 UINT8 Uint8;
// } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_4;
typedef union {
struct {
UINT8 DeviceInstanceSelector:5; UINT8 DeviceInstanceSelector:5;
UINT8 Reserved2:3; UINT8 Reserved:3;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5; } Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_5;
typedef struct { typedef struct {
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_1 Data1;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_2 Data2;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_3 Data3;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_4 Data4;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_5 Data5;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5;
typedef union {
struct {
UINT8 ChannelNumber:4; UINT8 ChannelNumber:4;
UINT8 Reserved:4; UINT8 Reserved:4;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_CHANNEL_NUMBER;
typedef struct {
IPMI_BOOT_OPTIONS_CHANNEL_NUMBER ChannelNumber;
UINT8 SessionId[4]; UINT8 SessionId[4];
UINT8 BootInfoTimeStamp[4]; UINT8 BootInfoTimeStamp[4];
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6; } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6;
@ -328,13 +397,27 @@ typedef union {
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7 Parm7; IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7 Parm7;
} IPMI_BOOT_OPTIONS_PARAMETERS; } IPMI_BOOT_OPTIONS_PARAMETERS;
typedef struct { typedef union {
UINT8 CompletionCode; struct {
UINT8 ParameterVersion:4; UINT8 ParameterVersion:4;
UINT8 Reserved:4; UINT8 Reserved:4;
} Bits;
UINT8 Uint8;
} IPMI_GET_BOOT_OPTIONS_PARAMETER_VERSION;
typedef union {
struct {
UINT8 ParameterSelector:7; UINT8 ParameterSelector:7;
UINT8 ParameterValid:1; UINT8 ParameterValid:1;
UINT8 ParameterData[1]; } Bits;
UINT8 Uint8;
} IPMI_GET_BOOT_OPTIONS_PARAMETER_VALID;
typedef struct {
UINT8 CompletionCode;
IPMI_GET_BOOT_OPTIONS_PARAMETER_VERSION ParameterVersion;
IPMI_GET_BOOT_OPTIONS_PARAMETER_VALID ParameterValid;
UINT8 ParameterData[0];
} IPMI_GET_BOOT_OPTIONS_RESPONSE; } IPMI_GET_BOOT_OPTIONS_RESPONSE;
// //
@ -342,17 +425,23 @@ typedef struct {
// //
#define IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES 0x0A #define IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES 0x0A
typedef struct { //
// Constants and Structure definitions for "Set front panel button enables" command to follow here
//
typedef union {
struct {
UINT8 DisablePoweroffButton:1; UINT8 DisablePoweroffButton:1;
UINT8 DisableResetButton:1; UINT8 DisableResetButton:1;
UINT8 DisableDiagnosticInterruptButton:1; UINT8 DisableDiagnosticInterruptButton:1;
UINT8 DisableStandbyButton:1; UINT8 DisableStandbyButton:1;
UINT8 Reserved:4; UINT8 Reserved:4;
} IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES_REQUEST; } Bits;
UINT8 Uint8;
} IPMI_FRONT_PANEL_BUTTON_ENABLES;
// typedef struct {
// Constants and Structure definitions for "Set front panel button enables" command to follow here IPMI_FRONT_PANEL_BUTTON_ENABLES FrontPanelButtonEnables;
// } IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES_REQUEST;
// //
// Definitions for Set Power Cycle Interval command // Definitions for Set Power Cycle Interval command

View File

@ -121,13 +121,8 @@ typedef struct {
// //
// Constants and Structure definitions for "Get SDR Repository Info" command to follow here // Constants and Structure definitions for "Get SDR Repository Info" command to follow here
// //
typedef struct { typedef union {
UINT8 CompletionCode; struct {
UINT8 Version;
UINT16 RecordCount;
UINT16 FreeSpace;
UINT32 RecentAdditionTimeStamp;
UINT32 RecentEraseTimeStamp;
UINT8 SdrRepAllocInfoCmd : 1; UINT8 SdrRepAllocInfoCmd : 1;
UINT8 SdrRepReserveCmd : 1; UINT8 SdrRepReserveCmd : 1;
UINT8 PartialAddSdrCmd : 1; UINT8 PartialAddSdrCmd : 1;
@ -135,6 +130,18 @@ typedef struct {
UINT8 Reserved : 1; UINT8 Reserved : 1;
UINT8 SdrRepUpdateOp : 2; UINT8 SdrRepUpdateOp : 2;
UINT8 Overflow : 1; UINT8 Overflow : 1;
} Bits;
UINT8 Uint8;
} IPMI_SDR_OPERATION_SUPPORT;
typedef struct {
UINT8 CompletionCode;
UINT8 Version;
UINT16 RecordCount;
UINT16 FreeSpace;
UINT32 RecentAdditionTimeStamp;
UINT32 RecentEraseTimeStamp;
IPMI_SDR_OPERATION_SUPPORT OperationSupport;
} IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE; } IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE;
// //
@ -167,6 +174,81 @@ typedef struct {
// //
// Constants and Structure definitions for "Get SDR" command to follow here // Constants and Structure definitions for "Get SDR" command to follow here
// //
typedef union {
struct {
UINT8 EventScanningEnabled : 1;
UINT8 EventScanningDisabled : 1;
UINT8 InitSensorType : 1;
UINT8 InitHysteresis : 1;
UINT8 InitThresholds : 1;
UINT8 InitEvent : 1;
UINT8 InitScanning : 1;
UINT8 SettableSensor : 1;
} Bits;
UINT8 Uint8;
} IPMI_SDR_RECORD_SENSOR_INIT;
typedef union {
struct {
UINT8 EventMessageControl : 2;
UINT8 ThresholdAccessSupport : 2;
UINT8 HysteresisSupport : 2;
UINT8 ReArmSupport : 1;
UINT8 IgnoreSensor : 1;
} Bits;
UINT8 Uint8;
} IPMI_SDR_RECORD_SENSOR_CAP;
typedef union {
struct {
UINT8 Linearization : 7;
UINT8 Reserved : 1;
} Bits;
UINT8 Uint8;
} IPMI_SDR_RECORD_LINEARIZATION;
typedef union {
struct {
UINT8 Toleremce : 6;
UINT8 MHi : 2;
} Bits;
UINT8 Uint8;
} IPMI_SDR_RECORD_M_TOLERANCE;
typedef union {
struct {
UINT8 AccuracyLow : 6;
UINT8 BHi : 2;
} Bits;
UINT8 Uint8;
} IPMI_SDR_RECORD_B_ACCURACY;
typedef union {
struct {
UINT8 Reserved : 2;
UINT8 AccuracyExp : 2;
UINT8 AccuracyHi : 4;
} Bits;
UINT8 Uint8;
} IPMI_SDR_RECORD_ACCURACY_SENSOR_DIR;
typedef union {
struct {
UINT8 BExp : 4;
UINT8 RExp : 4;
} Bits;
UINT8 Uint8;
} IPMI_SDR_RECORD_R_EXP_B_EXP;
typedef union {
struct {
UINT8 NominalReadingSpscified : 1;
UINT8 NominalMaxSpscified : 1;
UINT8 NominalMinSpscified : 1;
UINT8 Reserved : 5;
} Bits;
UINT8 Uint8;
} IPMI_SDR_RECORD_ANALOG_FLAGS;
typedef struct { typedef struct {
UINT16 RecordId; // 1 UINT16 RecordId; // 1
@ -178,50 +260,30 @@ typedef struct {
UINT8 SensorNumber; // 8 UINT8 SensorNumber; // 8
UINT8 EntityId; // 9 UINT8 EntityId; // 9
UINT8 EntityInstance; // 10 UINT8 EntityInstance; // 10
UINT8 EventScanningEnabled : 1; // 11 IPMI_SDR_RECORD_SENSOR_INIT SensorInitialization; // 11
UINT8 EventScanningDisabled : 1; // 11 IPMI_SDR_RECORD_SENSOR_CAP SensorCapabilities; // 12
UINT8 InitSensorType : 1; // 11
UINT8 InitHysteresis : 1; // 11
UINT8 InitThresholds : 1; // 11
UINT8 InitEvent : 1; // 11
UINT8 InitScanning : 1; // 11
UINT8 Reserved : 1; // 11
UINT8 EventMessageControl : 2; // 12
UINT8 ThresholdAccessSupport : 2; // 12
UINT8 HysteresisSupport : 2; // 12
UINT8 ReArmSupport : 1; // 12
UINT8 IgnoreSensor : 1; // 12
UINT8 SensorType; // 13 UINT8 SensorType; // 13
UINT8 EventType; // 14 UINT8 EventType; // 14
UINT8 Reserved1[7]; // 15 UINT8 Reserved1[7]; // 15
UINT8 UnitType; // 22 UINT8 UnitType; // 22
UINT8 Reserved2; // 23 UINT8 Reserved2; // 23
UINT8 Linearization : 7; // 24 IPMI_SDR_RECORD_LINEARIZATION Linearization; // 24
UINT8 Reserved3 : 1; // 24
UINT8 MLo; // 25 UINT8 MLo; // 25
UINT8 Toleremce : 6; // 26 IPMI_SDR_RECORD_M_TOLERANCE MHiTolerance; // 26
UINT8 MHi : 2; // 26
UINT8 BLo; // 27 UINT8 BLo; // 27
UINT8 AccuracyLow : 6; // 28 IPMI_SDR_RECORD_B_ACCURACY BHiAccuracyLo; // 28
UINT8 BHi : 2; // 28 IPMI_SDR_RECORD_ACCURACY_SENSOR_DIR AccuracySensorDirection; // 29
UINT8 Reserved4 : 2; // 29 IPMI_SDR_RECORD_R_EXP_B_EXP RExpBExp; // 30
UINT8 AccuracyExp : 2; // 29 IPMI_SDR_RECORD_ANALOG_FLAGS AnalogFlags; // 31
UINT8 AccuracyHi : 4; // 29
UINT8 BExp : 4; // 30
UINT8 RExp : 4; // 30
UINT8 NominalReadingSpscified : 1; // 31
UINT8 NominalMaxSpscified : 1; // 31
UINT8 NominalMinSpscified : 1; // 31
UINT8 Reserved5 : 5; // 31
UINT8 NominalReading; // 32 UINT8 NominalReading; // 32
UINT8 Reserved6[4]; // 33 UINT8 Reserved3[4]; // 33
UINT8 UpperNonRecoverThreshold; // 37 UINT8 UpperNonRecoverThreshold; // 37
UINT8 UpperCriticalThreshold; // 38 UINT8 UpperCriticalThreshold; // 38
UINT8 UpperNonCriticalThreshold; // 39 UINT8 UpperNonCriticalThreshold; // 39
UINT8 LowerNonRecoverThreshold; // 40 UINT8 LowerNonRecoverThreshold; // 40
UINT8 LowerCriticalThreshold; // 41 UINT8 LowerCriticalThreshold; // 41
UINT8 LowerNonCriticalThreshold; // 42 UINT8 LowerNonCriticalThreshold; // 42
UINT8 Reserved7[5]; // 43 UINT8 Reserved4[5]; // 43
UINT8 IdStringLength; // 48 UINT8 IdStringLength; // 48
UINT8 AsciiIdString[16]; // 49 - 64 UINT8 AsciiIdString[16]; // 49 - 64
} IPMI_SDR_RECORD_STRUCT_1; } IPMI_SDR_RECORD_STRUCT_1;
@ -236,19 +298,8 @@ typedef struct {
UINT8 SensorNumber; // 8 UINT8 SensorNumber; // 8
UINT8 EntityId; // 9 UINT8 EntityId; // 9
UINT8 EntityInstance; // 10 UINT8 EntityInstance; // 10
UINT8 SensorScanning : 1; // 11 IPMI_SDR_RECORD_SENSOR_INIT SensorInitialization; // 11
UINT8 EventScanning : 1; // 11 IPMI_SDR_RECORD_SENSOR_CAP SensorCapabilities; // 12
UINT8 InitSensorType : 1; // 11
UINT8 InitHysteresis : 1; // 11
UINT8 InitThresholds : 1; // 11
UINT8 InitEvent : 1; // 11
UINT8 InitScanning : 1; // 11
UINT8 Reserved : 1; // 11
UINT8 EventMessageControl : 2; // 12
UINT8 ThresholdAccessSupport : 2; // 12
UINT8 HysteresisSupport : 2; // 12
UINT8 ReArmSupport : 1; // 12
UINT8 IgnoreSensor : 1; // 12
UINT8 SensorType; // 13 UINT8 SensorType; // 13
UINT8 EventType; // 14 UINT8 EventType; // 14
UINT8 Reserved1[7]; // 15 UINT8 Reserved1[7]; // 15
@ -258,33 +309,43 @@ typedef struct {
UINT8 AsciiIdString[16]; // 33 - 48 UINT8 AsciiIdString[16]; // 33 - 48
} IPMI_SDR_RECORD_STRUCT_2; } IPMI_SDR_RECORD_STRUCT_2;
typedef struct { typedef union {
struct {
UINT8 Reserved1 : 1; UINT8 Reserved1 : 1;
UINT8 ControllerSlaveAddress : 7; UINT8 ControllerSlaveAddress : 7;
UINT8 FruDeviceId; UINT8 FruDeviceId;
UINT8 BusId : 3; UINT8 BusId : 3;
UINT8 Lun : 2; UINT8 Lun : 2;
UINT8 Reserved : 2; UINT8 Reserved2 : 2;
UINT8 LogicalFruDevice : 1; UINT8 LogicalFruDevice : 1;
UINT8 Reserved3 : 4; UINT8 Reserved3 : 4;
UINT8 ChannelNumber : 4; UINT8 ChannelNumber : 4;
} Bits;
UINT32 Uint32;
} IPMI_FRU_DATA_INFO; } IPMI_FRU_DATA_INFO;
typedef union {
struct {
UINT8 Length : 4;
UINT8 Reserved : 1;
UINT8 StringType : 3;
} Bits;
UINT8 Uint8;
} IPMI_SDR_RECORD_DEV_ID_STR_TYPE_LENGTH;
typedef struct { typedef struct {
UINT16 RecordId; // 1 UINT16 RecordId; // 1
UINT8 Version; // 3 UINT8 Version; // 3
UINT8 RecordType; // 4 UINT8 RecordType; // 4
UINT8 RecordLength; // 5 UINT8 RecordLength; // 5
IPMI_FRU_DATA_INFO FruDeviceData; // 6 IPMI_FRU_DATA_INFO FruDeviceData; // 6
UINT8 Reserved1; // 10 UINT8 Reserved; // 10
UINT8 DeviceType; // 11 UINT8 DeviceType; // 11
UINT8 DeviceTypeModifier; // 12 UINT8 DeviceTypeModifier; // 12
UINT8 FruEntityId; // 13 UINT8 FruEntityId; // 13
UINT8 FruEntityInstance; // 14 UINT8 FruEntityInstance; // 14
UINT8 OemReserved; // 15 UINT8 OemReserved; // 15
UINT8 Length : 4; // 16 IPMI_SDR_RECORD_DEV_ID_STR_TYPE_LENGTH StringTypeLength; // 16
UINT8 Reserved2 : 1; // 16
UINT8 StringType : 3; // 16
UINT8 String[16]; // 17 UINT8 String[16]; // 17
} IPMI_SDR_RECORD_STRUCT_11; } IPMI_SDR_RECORD_STRUCT_11;

View File

@ -109,7 +109,8 @@ typedef enum {
IpmiOem2 IpmiOem2
} IPMI_LAN_DEST_TYPE_DEST_TYPE; } IPMI_LAN_DEST_TYPE_DEST_TYPE;
typedef struct { typedef union {
struct {
UINT8 NoAuth : 1; UINT8 NoAuth : 1;
UINT8 MD2Auth : 1; UINT8 MD2Auth : 1;
UINT8 MD5Auth : 1; UINT8 MD5Auth : 1;
@ -117,15 +118,20 @@ typedef struct {
UINT8 StraightPswd : 1; UINT8 StraightPswd : 1;
UINT8 OemType : 1; UINT8 OemType : 1;
UINT8 Reserved2 : 2; UINT8 Reserved2 : 2;
} Bits;
UINT8 Uint8;
} IPMI_LAN_AUTH_TYPE; } IPMI_LAN_AUTH_TYPE;
typedef struct { typedef struct {
UINT8 IpAddress[4]; UINT8 IpAddress[4];
} IPMI_LAN_IP_ADDRESS; } IPMI_LAN_IP_ADDRESS;
typedef struct { typedef union {
struct {
UINT8 AddressSrc : 4; UINT8 AddressSrc : 4;
UINT8 Reserved : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_LAN_IP_ADDRESS_SRC; } IPMI_LAN_IP_ADDRESS_SRC;
typedef struct { typedef struct {
@ -136,13 +142,27 @@ typedef struct {
UINT8 IpAddress[4]; UINT8 IpAddress[4];
} IPMI_LAN_SUBNET_MASK; } IPMI_LAN_SUBNET_MASK;
typedef union {
struct {
UINT8 IpFlag : 3;
UINT8 Reserved : 5;
} Bits;
UINT8 Uint8;
} IPMI_LAN_IPV4_HDR_PARAM_DATA_2;
typedef union {
struct {
UINT8 Precedence : 3;
UINT8 Reserved : 1;
UINT8 ServiceType : 4;
} Bits;
UINT8 Uint8;
} IPMI_LAN_IPV4_HDR_PARAM_DATA_3;
typedef struct { typedef struct {
UINT8 TimeToLive; UINT8 TimeToLive;
UINT8 IpFlag : 3; IPMI_LAN_IPV4_HDR_PARAM_DATA_2 Data2;
UINT8 Reserved1 : 5; IPMI_LAN_IPV4_HDR_PARAM_DATA_3 Data3;
UINT8 Precedence : 3;
UINT8 Reserved2 : 1;
UINT8 ServiceType : 4;
} IPMI_LAN_IPV4_HDR_PARAM; } IPMI_LAN_IPV4_HDR_PARAM;
typedef struct { typedef struct {
@ -150,10 +170,13 @@ typedef struct {
UINT8 RcmpPortLsb; UINT8 RcmpPortLsb;
} IPMI_LAN_RCMP_PORT; } IPMI_LAN_RCMP_PORT;
typedef struct { typedef union {
struct {
UINT8 EnableBmcArpResponse : 1; UINT8 EnableBmcArpResponse : 1;
UINT8 EnableBmcGratuitousArp : 1; UINT8 EnableBmcGratuitousArp : 1;
UINT8 Reserved : 6; UINT8 Reserved : 6;
} Bits;
UINT8 Uint8;
} IPMI_LAN_BMC_GENERATED_ARP_CONTROL; } IPMI_LAN_BMC_GENERATED_ARP_CONTROL;
typedef struct { typedef struct {
@ -164,21 +187,48 @@ typedef struct {
UINT8 Data[18]; UINT8 Data[18];
} IPMI_LAN_COMMUNITY_STRING; } IPMI_LAN_COMMUNITY_STRING;
typedef struct { typedef union {
struct {
UINT8 DestinationSelector : 4; UINT8 DestinationSelector : 4;
UINT8 Reserved2 : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_LAN_SET_SELECTOR;
typedef union {
struct {
UINT8 DestinationType : 3; UINT8 DestinationType : 3;
UINT8 Reserved1 : 4; UINT8 Reserved : 4;
UINT8 AlertAcknowledged : 1; UINT8 AlertAcknowledged : 1;
} IPMI_LAN_DEST_TYPE; } Bits;
UINT8 Uint8;
} IPMI_LAN_DEST_TYPE_DESTINATION_TYPE;
typedef struct { typedef struct {
UINT8 DestinationSelector : 4; IPMI_LAN_SET_SELECTOR SetSelector;
UINT8 Reserved1 : 4; IPMI_LAN_DEST_TYPE_DESTINATION_TYPE DestinationType;
} IPMI_LAN_DEST_TYPE;
typedef union {
struct {
UINT8 AlertingIpAddressSelector : 4; UINT8 AlertingIpAddressSelector : 4;
UINT8 AddressFormat : 4; UINT8 AddressFormat : 4;
} Bits;
UINT8 Uint8;
} IPMI_LAN_ADDRESS_FORMAT;
typedef union {
struct {
UINT8 UseDefaultGateway : 1; UINT8 UseDefaultGateway : 1;
UINT8 Reserved2 : 7; UINT8 Reserved2 : 7;
} Bits;
UINT8 Uint8;
} IPMI_LAN_GATEWAY_SELECTOR;
typedef struct {
IPMI_LAN_SET_SELECTOR SetSelector;
IPMI_LAN_ADDRESS_FORMAT AddressFormat;
IPMI_LAN_GATEWAY_SELECTOR GatewaySelector;
IPMI_LAN_IP_ADDRESS AlertingIpAddress; IPMI_LAN_IP_ADDRESS AlertingIpAddress;
IPMI_LAN_MAC_ADDRESS AlertingMacAddress; IPMI_LAN_MAC_ADDRESS AlertingMacAddress;
} IPMI_LAN_DEST_ADDRESS; } IPMI_LAN_DEST_ADDRESS;
@ -198,11 +248,18 @@ typedef union {
IPMI_LAN_DEST_ADDRESS IpmiLanDestAddress; IPMI_LAN_DEST_ADDRESS IpmiLanDestAddress;
} IPMI_LAN_OPTIONS; } IPMI_LAN_OPTIONS;
typedef struct { typedef union {
UINT8 SetSelector; struct {
UINT8 AddressSourceType : 4; UINT8 AddressSourceType : 4;
UINT8 Reserved : 3; UINT8 Reserved : 3;
UINT8 EnableStatus : 1; UINT8 EnableStatus : 1;
} Bits;
UINT8 Uint8;
} IPMI_LAN_IPV6_ADDRESS_SOURCE_TYPE;
typedef struct {
UINT8 SetSelector;
IPMI_LAN_IPV6_ADDRESS_SOURCE_TYPE AddressSourceType;
UINT8 Ipv6Address[16]; UINT8 Ipv6Address[16];
UINT8 AddressPrefixLen; UINT8 AddressPrefixLen;
UINT8 AddressStatus; UINT8 AddressStatus;
@ -211,15 +268,24 @@ typedef struct {
// //
// Set in progress parameter // Set in progress parameter
// //
typedef struct { typedef union {
struct {
UINT8 SetInProgress:2; UINT8 SetInProgress:2;
UINT8 Reserved:6; UINT8 Reserved:6;
} Bits;
UINT8 Uint8;
} IPMI_LAN_SET_IN_PROGRESS; } IPMI_LAN_SET_IN_PROGRESS;
typedef union {
typedef struct { struct {
UINT8 ChannelNo : 4; UINT8 ChannelNo : 4;
UINT8 Reserved : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_SET_LAN_CONFIG_CHANNEL_NUM;
typedef struct {
IPMI_SET_LAN_CONFIG_CHANNEL_NUM ChannelNumber;
UINT8 ParameterSelector; UINT8 ParameterSelector;
UINT8 ParameterData[0]; UINT8 ParameterData[0];
} IPMI_SET_LAN_CONFIGURATION_PARAMETERS_COMMAND_REQUEST; } IPMI_SET_LAN_CONFIGURATION_PARAMETERS_COMMAND_REQUEST;
@ -232,10 +298,17 @@ typedef struct {
// //
// Constants and Structure definitions for "Get Lan Configuration Parameters" command to follow here // Constants and Structure definitions for "Get Lan Configuration Parameters" command to follow here
// //
typedef struct { typedef union {
struct {
UINT8 ChannelNo : 4; UINT8 ChannelNo : 4;
UINT8 Reserved : 3; UINT8 Reserved : 3;
UINT8 GetParameter : 1; UINT8 GetParameter : 1;
} Bits;
UINT8 Uint8;
} IPMI_GET_LAN_CONFIG_CHANNEL_NUM;
typedef struct {
IPMI_GET_LAN_CONFIG_CHANNEL_NUM ChannelNumber;
UINT8 ParameterSelector; UINT8 ParameterSelector;
UINT8 SetSelector; UINT8 SetSelector;
UINT8 BlockSelector; UINT8 BlockSelector;
@ -281,7 +354,8 @@ typedef struct {
// //
// EMP OPTION DATA // EMP OPTION DATA
// //
typedef struct { typedef union {
struct {
UINT8 NoAuthentication : 1; UINT8 NoAuthentication : 1;
UINT8 MD2Authentication : 1; UINT8 MD2Authentication : 1;
UINT8 MD5Authentication : 1; UINT8 MD5Authentication : 1;
@ -289,9 +363,12 @@ typedef struct {
UINT8 StraightPassword : 1; UINT8 StraightPassword : 1;
UINT8 OemProprietary : 1; UINT8 OemProprietary : 1;
UINT8 Reservd2 : 2; UINT8 Reservd2 : 2;
} Bits;
UINT8 Uint8;
} IPMI_EMP_AUTH_TYPE; } IPMI_EMP_AUTH_TYPE;
typedef struct { typedef union {
struct {
UINT8 EnableBasicMode : 1; UINT8 EnableBasicMode : 1;
UINT8 EnablePPPMode : 1; UINT8 EnablePPPMode : 1;
UINT8 EnableTerminalMode : 1; UINT8 EnableTerminalMode : 1;
@ -299,34 +376,57 @@ typedef struct {
UINT8 SnoopOsPPPNegotiation : 1; UINT8 SnoopOsPPPNegotiation : 1;
UINT8 Reserved2 : 1; UINT8 Reserved2 : 1;
UINT8 DirectConnect : 1; UINT8 DirectConnect : 1;
} Bits;
UINT8 Uint8;
} IPMI_EMP_CONNECTION_TYPE; } IPMI_EMP_CONNECTION_TYPE;
typedef struct { typedef union {
struct {
UINT8 InactivityTimeout : 4; UINT8 InactivityTimeout : 4;
UINT8 Reserved : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_EMP_INACTIVITY_TIMEOUT; } IPMI_EMP_INACTIVITY_TIMEOUT;
typedef struct { typedef union {
struct {
UINT8 IpmiCallback : 1; UINT8 IpmiCallback : 1;
UINT8 CBCPCallback : 1; UINT8 CBCPCallback : 1;
UINT8 Reserved1 : 6; UINT8 Reserved : 6;
} Bits;
UINT8 Uint8;
} IPMI_CHANNEL_CALLBACK_CONTROL_ENABLE;
typedef union {
struct {
UINT8 CbcpEnableNoCallback : 1; UINT8 CbcpEnableNoCallback : 1;
UINT8 CbcpEnablePreSpecifiedNumber : 1; UINT8 CbcpEnablePreSpecifiedNumber : 1;
UINT8 CbcpEnableUserSpecifiedNumber : 1; UINT8 CbcpEnableUserSpecifiedNumber : 1;
UINT8 CbcpEnableCallbackFromList : 1; UINT8 CbcpEnableCallbackFromList : 1;
UINT8 Reserved : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_CHANNEL_CALLBACK_CONTROL_CBCP;
typedef struct {
IPMI_CHANNEL_CALLBACK_CONTROL_ENABLE CallbackEnable;
IPMI_CHANNEL_CALLBACK_CONTROL_CBCP CBCPNegotiation;
UINT8 CallbackDestination1; UINT8 CallbackDestination1;
UINT8 CallbackDestination2; UINT8 CallbackDestination2;
UINT8 CallbackDestination3; UINT8 CallbackDestination3;
} IPMI_EMP_CHANNEL_CALLBACK_CONTROL; } IPMI_EMP_CHANNEL_CALLBACK_CONTROL;
typedef struct { typedef union {
struct {
UINT8 CloseSessionOnDCDLoss : 1; UINT8 CloseSessionOnDCDLoss : 1;
UINT8 EnableSessionInactivityTimeout : 1; UINT8 EnableSessionInactivityTimeout : 1;
UINT8 Reserved : 6; UINT8 Reserved : 6;
} Bits;
UINT8 Uint8;
} IPMI_EMP_SESSION_TERMINATION; } IPMI_EMP_SESSION_TERMINATION;
typedef struct { typedef union {
struct {
UINT8 Reserved1 : 5; UINT8 Reserved1 : 5;
UINT8 EnableDtrHangup : 1; UINT8 EnableDtrHangup : 1;
UINT8 FlowControl : 2; UINT8 FlowControl : 2;
@ -335,13 +435,19 @@ typedef struct {
UINT8 SaveSetting : 1; UINT8 SaveSetting : 1;
UINT8 SetComPort : 1; UINT8 SetComPort : 1;
UINT8 Reserved3 : 6; UINT8 Reserved3 : 6;
} Bits;
UINT8 Uint8;
UINT16 Uint16;
} IPMI_EMP_MESSAGING_COM_SETTING; } IPMI_EMP_MESSAGING_COM_SETTING;
typedef struct { typedef union {
struct {
UINT8 RingDurationInterval : 6; UINT8 RingDurationInterval : 6;
UINT8 Reserved1 : 2; UINT8 Reserved1 : 2;
UINT8 RingDeadTime : 4; UINT8 RingDeadTime : 4;
UINT8 Reserved : 4; UINT8 Reserved2 : 4;
} Bits;
UINT8 Uint8;
} IPMI_EMP_MODEM_RING_TIME; } IPMI_EMP_MODEM_RING_TIME;
typedef struct { typedef struct {
@ -369,14 +475,20 @@ typedef struct {
UINT8 CommunityString[18]; UINT8 CommunityString[18];
} IPMI_EMP_COMMUNITY_STRING; } IPMI_EMP_COMMUNITY_STRING;
typedef struct { typedef union {
UINT8 Reserved5 : 4; struct {
UINT8 Reserved : 4;
UINT8 DialStringSelector : 4; UINT8 DialStringSelector : 4;
} Bits;
UINT8 Uint8;
} IPMI_DIAL_PAGE_DESTINATION; } IPMI_DIAL_PAGE_DESTINATION;
typedef struct { typedef union {
struct {
UINT8 TapAccountSelector : 4; UINT8 TapAccountSelector : 4;
UINT8 Reserved : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_TAP_PAGE_DESTINATION; } IPMI_TAP_PAGE_DESTINATION;
typedef struct { typedef struct {
@ -390,39 +502,77 @@ typedef union {
IPMI_PPP_ALERT_DESTINATION PppAlertDestination; IPMI_PPP_ALERT_DESTINATION PppAlertDestination;
} IPMI_DEST_TYPE_SPECIFIC; } IPMI_DEST_TYPE_SPECIFIC;
typedef struct { typedef union {
struct {
UINT8 DestinationSelector : 4; UINT8 DestinationSelector : 4;
UINT8 Reserved1 : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_EMP_DESTINATION_SELECTOR;
typedef union {
struct {
UINT8 DestinationType : 4; UINT8 DestinationType : 4;
UINT8 Reserved2 : 3; UINT8 Reserved : 3;
UINT8 AlertAckRequired : 1; UINT8 AlertAckRequired : 1;
UINT8 AlertAckTimeoutSeconds; } Bits;
UINT8 Uint8;
} IPMI_EMP_DESTINATION_TYPE;
typedef union {
struct {
UINT8 NumRetriesCall : 3; UINT8 NumRetriesCall : 3;
UINT8 Reserved3 : 1; UINT8 Reserved1 : 1;
UINT8 NumRetryAlert : 3; UINT8 NumRetryAlert : 3;
UINT8 Reserved4 : 1; UINT8 Reserved2 : 1;
} Bits;
UINT8 Uint8;
} IPMI_EMP_RETRIES;
typedef struct {
IPMI_EMP_DESTINATION_SELECTOR DestinationSelector;
IPMI_EMP_DESTINATION_TYPE DestinationType;
UINT8 AlertAckTimeoutSeconds;
IPMI_EMP_RETRIES Retries;
IPMI_DEST_TYPE_SPECIFIC DestinationTypeSpecific; IPMI_DEST_TYPE_SPECIFIC DestinationTypeSpecific;
} IPMI_EMP_DESTINATION_INFO; } IPMI_EMP_DESTINATION_INFO;
typedef struct { typedef union {
UINT8 DestinationSelector : 4; struct {
UINT8 Reserved1 : 4;
UINT8 Parity : 3; UINT8 Parity : 3;
UINT8 CharacterSize : 1; UINT8 CharacterSize : 1;
UINT8 StopBit : 1; UINT8 StopBit : 1;
UINT8 DtrHangup : 1; UINT8 DtrHangup : 1;
UINT8 FlowControl : 2; UINT8 FlowControl : 2;
} Bits;
UINT8 Uint8;
} IPMI_EMP_DESTINATION_COM_SETTING_DATA_2;
typedef union {
struct {
UINT8 BitRate : 4; UINT8 BitRate : 4;
UINT8 Reserved2 : 4; UINT8 Reserved : 4;
UINT8 SaveSetting : 1; } Bits;
UINT8 SetComPort : 1; UINT8 Uint8;
UINT8 Reserved3 : 6; } IPMI_EMP_BIT_RATE;
} IPMI_EMP_DESTINATION_COM_SETTING;
typedef struct { typedef struct {
IPMI_EMP_DESTINATION_SELECTOR DestinationSelector;
IPMI_EMP_DESTINATION_COM_SETTING_DATA_2 Data2;
IPMI_EMP_BIT_RATE BitRate;
} IPMI_EMP_DESTINATION_COM_SETTING;
typedef union {
struct {
UINT8 DialStringSelector : 4; UINT8 DialStringSelector : 4;
UINT8 Reserved1 : 4; UINT8 Reserved : 4;
UINT8 Reserved2; } Bits;
UINT8 Uint8;
} IPMI_DIAL_STRING_SELECTOR;
typedef struct {
IPMI_DIAL_STRING_SELECTOR DestinationSelector;
UINT8 Reserved;
UINT8 DialString[48]; UINT8 DialString[48];
} IPMI_DESTINATION_DIAL_STRING; } IPMI_DESTINATION_DIAL_STRING;
@ -431,16 +581,31 @@ typedef union {
UINT8 IpAddress[4]; UINT8 IpAddress[4];
} IPMI_PPP_IP_ADDRESS; } IPMI_PPP_IP_ADDRESS;
typedef struct { typedef union {
struct {
UINT8 IpAddressSelector : 4; UINT8 IpAddressSelector : 4;
UINT8 Reserved1 : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_DESTINATION_IP_ADDRESS_SELECTOR;
typedef struct {
IPMI_DESTINATION_IP_ADDRESS_SELECTOR DestinationSelector;
IPMI_PPP_IP_ADDRESS PppIpAddress; IPMI_PPP_IP_ADDRESS PppIpAddress;
} IPMI_DESTINATION_IP_ADDRESS; } IPMI_DESTINATION_IP_ADDRESS;
typedef struct { typedef union {
UINT8 TapSelector; struct {
UINT8 TapServiceSelector : 4; UINT8 TapServiceSelector : 4;
UINT8 TapDialStringSelector : 4; UINT8 TapDialStringSelector : 4;
} Bits;
UINT8 Uint8;
} IPMI_TAP_DIAL_STRING_SERVICE_SELECTOR;
typedef struct {
UINT8 TapSelector;
IPMI_TAP_DIAL_STRING_SERVICE_SELECTOR TapDialStringServiceSelector;
} IPMI_DESTINATION_TAP_ACCOUNT; } IPMI_DESTINATION_TAP_ACCOUNT;
typedef struct { typedef struct {
@ -509,22 +674,43 @@ typedef union {
#define IPMI_MUX_SETTING_BLOCK_REQUEST_MUX_TO_BMC 0x7 #define IPMI_MUX_SETTING_BLOCK_REQUEST_MUX_TO_BMC 0x7
#define IPMI_MUX_SETTING_ALLOW_REQUEST_MUX_TO_BMC 0x8 #define IPMI_MUX_SETTING_ALLOW_REQUEST_MUX_TO_BMC 0x8
typedef struct { typedef union {
struct {
UINT8 ChannelNo : 4; UINT8 ChannelNo : 4;
UINT8 Reserved1 : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_MUX_CHANNEL_NUM;
typedef union {
struct {
UINT8 MuxSetting : 4; UINT8 MuxSetting : 4;
UINT8 Reserved2 : 4; UINT8 Reserved : 4;
} IPMI_SET_SERIAL_MODEM_MUX_COMMAND_REQUEST; } Bits;
UINT8 Uint8;
} IPMI_MUX_SETTING_REQUEST;
typedef struct { typedef struct {
UINT8 CompletionCode; IPMI_MUX_CHANNEL_NUM ChannelNumber;
IPMI_MUX_SETTING_REQUEST MuxSetting;
} IPMI_SET_SERIAL_MODEM_MUX_COMMAND_REQUEST;
typedef union {
struct {
UINT8 MuxSetToBmc : 1; UINT8 MuxSetToBmc : 1;
UINT8 CommandStatus : 1; UINT8 CommandStatus : 1;
UINT8 MessagingSessionActive : 1; UINT8 MessagingSessionActive : 1;
UINT8 AlertInProgress : 1; UINT8 AlertInProgress : 1;
UINT8 Reserved2 : 2; UINT8 Reserved : 2;
UINT8 MuxToBmcAllowed : 1; UINT8 MuxToBmcAllowed : 1;
UINT8 MuxToSystemBlocked : 1; UINT8 MuxToSystemBlocked : 1;
} Bits;
UINT8 Uint8;
} IPMI_MUX_SETTING_PRESENT_STATE;
typedef struct {
UINT8 CompletionCode;
IPMI_MUX_SETTING_PRESENT_STATE MuxSetting;
} IPMI_SET_SERIAL_MODEM_MUX_COMMAND_RESPONSE; } IPMI_SET_SERIAL_MODEM_MUX_COMMAND_RESPONSE;
// //
@ -620,9 +806,16 @@ typedef struct {
// //
// Constants and Structure definitions for "SOL activating" command to follow here // Constants and Structure definitions for "SOL activating" command to follow here
// //
typedef struct { typedef union {
struct {
UINT8 SessionState : 4; UINT8 SessionState : 4;
UINT8 Reserved : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_SOL_SESSION_STATE;
typedef struct {
IPMI_SOL_SESSION_STATE SessionState;
UINT8 PayloadInstance; UINT8 PayloadInstance;
UINT8 FormatVersionMajor; // 1 UINT8 FormatVersionMajor; // 1
UINT8 FormatVersionMinor; // 0 UINT8 FormatVersionMinor; // 0
@ -650,9 +843,16 @@ typedef struct {
#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_PAYLOAD_CHANNEL 7 #define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_PAYLOAD_CHANNEL 7
#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_PAYLOAD_PORT 8 #define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_PAYLOAD_PORT 8
typedef struct { typedef union {
struct {
UINT8 ChannelNumber : 4; UINT8 ChannelNumber : 4;
UINT8 Reserved : 4; UINT8 Reserved : 4;
} Bits;
UINT8 Uint8;
} IPMI_SET_SOL_CONFIG_PARAM_CHANNEL_NUM;
typedef struct {
IPMI_SET_SOL_CONFIG_PARAM_CHANNEL_NUM ChannelNumber;
UINT8 ParameterSelector; UINT8 ParameterSelector;
UINT8 ParameterData[0]; UINT8 ParameterData[0];
} IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST; } IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST;
@ -665,10 +865,17 @@ typedef struct {
// //
// Constants and Structure definitions for "Get SOL Configuration Parameters" command to follow here // Constants and Structure definitions for "Get SOL Configuration Parameters" command to follow here
// //
typedef struct { typedef union {
struct {
UINT8 ChannelNumber : 4; UINT8 ChannelNumber : 4;
UINT8 Reserved : 3; UINT8 Reserved : 3;
UINT8 GetParameter : 1; UINT8 GetParameter : 1;
} Bits;
UINT8 Uint8;
} IPMI_GET_SOL_CONFIG_PARAM_CHANNEL_NUM;
typedef struct {
IPMI_GET_SOL_CONFIG_PARAM_CHANNEL_NUM ChannelNumber;
UINT8 ParameterSelector; UINT8 ParameterSelector;
UINT8 SetSelector; UINT8 SetSelector;
UINT8 BlockSelector; UINT8 BlockSelector;