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