]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/IpmiNetFnTransport.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / IpmiNetFnTransport.h
index 1e9bbe2755a63c1580a026d77c5f8828e9394d44..2024c35f7faa7bed2845660604941ef0ca64e912 100644 (file)
   See IPMI specification, Appendix G, Command Assignments\r
   and Appendix H, Sub-function Assignments.\r
 \r
-  Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR>\r
-  This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 **/\r
 \r
 #ifndef _IPMI_NET_FN_TRANSPORT_H_\r
@@ -36,7 +31,7 @@
 //\r
 //  Definitions for Set Lan Configuration Parameters command\r
 //\r
-#define IPMI_TRANSPORT_SET_LAN_CONFIG_PARAMETERS 0x01\r
+#define IPMI_TRANSPORT_SET_LAN_CONFIG_PARAMETERS  0x01\r
 \r
 //\r
 //  Constants and Structure definitions for "Set Lan Configuration Parameters" command to follow here\r
@@ -65,7 +60,23 @@ typedef enum {
   IpmiLanCommunityString,\r
   IpmiLanReserved3,\r
   IpmiLanDestinationType,\r
-  IpmiLanDestinationAddress\r
+  IpmiLanDestinationAddress,\r
+  IpmiLanVlanId         = 0x14,\r
+  IpmiIpv4OrIpv6Support = 0x32,\r
+  IpmiIpv4OrIpv6AddressEnable,\r
+  IpmiIpv6HdrStatTrafficClass,\r
+  IpmiIpv6HdrStatHopLimit,\r
+  IpmiIpv6HdrFlowLabel,\r
+  IpmiIpv6Status,\r
+  IpmiIpv6StaticAddress,\r
+  IpmiIpv6DhcpStaticDuidLen,\r
+  IpmiIpv6DhcpStaticDuid,\r
+  IpmiIpv6DhcpAddress,\r
+  IpmiIpv6DhcpDynamicDuidLen,\r
+  IpmiIpv6DhcpDynamicDuid,\r
+  IpmiIpv6RouterConfig = 0x40,\r
+  IpmiIpv6StaticRouter1IpAddr,\r
+  IpmiIpv6DynamicRouterIpAddr = 0x4a\r
 } IPMI_LAN_OPTION_TYPE;\r
 \r
 //\r
@@ -94,103 +105,246 @@ typedef enum {
   IpmiOem2\r
 } IPMI_LAN_DEST_TYPE_DEST_TYPE;\r
 \r
-typedef struct {\r
-  UINT8 NoAuth : 1;\r
-  UINT8 MD2Auth : 1;\r
-  UINT8 MD5Auth : 1;\r
-  UINT8 Reserved1 : 1;\r
-  UINT8 StraightPswd : 1;\r
-  UINT8 OemType : 1;\r
-  UINT8 Reserved2 : 2;\r
+//\r
+// Destination address format\r
+//\r
+typedef enum {\r
+  IpmiDestinationAddressVersion4,\r
+  IpmiDestinationAddressVersion6\r
+} IPMI_LAN_DEST_ADDRESS_VERSION;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    NoAuth       : 1;\r
+    UINT8    MD2Auth      : 1;\r
+    UINT8    MD5Auth      : 1;\r
+    UINT8    Reserved1    : 1;\r
+    UINT8    StraightPswd : 1;\r
+    UINT8    OemType      : 1;\r
+    UINT8    Reserved2    : 2;\r
+  } Bits;\r
+  UINT8    Uint8;\r
 } IPMI_LAN_AUTH_TYPE;\r
 \r
 typedef struct {\r
-  UINT8 IpAddress[4];\r
+  UINT8    IpAddress[4];\r
 } IPMI_LAN_IP_ADDRESS;\r
 \r
-typedef struct {\r
-  UINT8 AddressSrc : 4;\r
-  UINT8 Reserved : 4;\r
+typedef union {\r
+  struct {\r
+    UINT8    AddressSrc : 4;\r
+    UINT8    Reserved   : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
 } IPMI_LAN_IP_ADDRESS_SRC;\r
 \r
 typedef struct {\r
-  UINT8 MacAddress[6];\r
+  UINT8    MacAddress[6];\r
 } IPMI_LAN_MAC_ADDRESS;\r
 \r
 typedef struct {\r
-  UINT8 IpAddress[4];\r
+  UINT8    IpAddress[4];\r
 } IPMI_LAN_SUBNET_MASK;\r
 \r
-typedef struct {\r
-  UINT8 TimeToLive;\r
-  UINT8 IpFlag : 3;\r
-  UINT8 Reserved1 : 5;\r
-  UINT8 Precedence : 3;\r
-  UINT8 Reserved2 : 1;\r
-  UINT8 ServiceType : 4;\r
+typedef union {\r
+  struct {\r
+    UINT8    IpFlag   : 3;\r
+    UINT8    Reserved : 5;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_LAN_IPV4_HDR_PARAM_DATA_2;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    Precedence  : 3;\r
+    UINT8    Reserved    : 1;\r
+    UINT8    ServiceType : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_LAN_IPV4_HDR_PARAM_DATA_3;\r
+\r
+typedef struct {\r
+  UINT8                             TimeToLive;\r
+  IPMI_LAN_IPV4_HDR_PARAM_DATA_2    Data2;\r
+  IPMI_LAN_IPV4_HDR_PARAM_DATA_3    Data3;\r
 } IPMI_LAN_IPV4_HDR_PARAM;\r
 \r
 typedef struct {\r
-  UINT8 RcmpPortMsb;\r
-  UINT8 RcmpPortLsb;\r
+  UINT8    RcmpPortMsb;\r
+  UINT8    RcmpPortLsb;\r
 } IPMI_LAN_RCMP_PORT;\r
 \r
-typedef struct {\r
-  UINT8 EnableBmcArpResponse : 1;\r
-  UINT8 EnableBmcGratuitousArp : 1;\r
-  UINT8 Reserved : 6;\r
+typedef union {\r
+  struct {\r
+    UINT8    EnableBmcArpResponse   : 1;\r
+    UINT8    EnableBmcGratuitousArp : 1;\r
+    UINT8    Reserved               : 6;\r
+  } Bits;\r
+  UINT8    Uint8;\r
 } IPMI_LAN_BMC_GENERATED_ARP_CONTROL;\r
 \r
 typedef struct {\r
-  UINT8 ArpInterval;\r
+  UINT8    ArpInterval;\r
 } IPMI_LAN_ARP_INTERVAL;\r
 \r
 typedef struct {\r
-  UINT8 Data[18];\r
+  UINT8    IpAddress[4];\r
+} IPMI_LAN_DEFAULT_GATEWAY;\r
+\r
+typedef struct {\r
+  UINT8    Data[18];\r
 } IPMI_LAN_COMMUNITY_STRING;\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8    DestinationSelector : 4;\r
+    UINT8    Reserved            : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_LAN_SET_SELECTOR;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    DestinationType   : 3;\r
+    UINT8    Reserved          : 4;\r
+    UINT8    AlertAcknowledged : 1;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_LAN_DEST_TYPE_DESTINATION_TYPE;\r
+\r
 typedef struct {\r
-  UINT8 DestinationSelector : 4;\r
-  UINT8 Reserved2 : 4;\r
-  UINT8 DestinationType : 3;\r
-  UINT8 Reserved1 : 4;\r
-  UINT8 AlertAcknowledged : 1;\r
+  IPMI_LAN_SET_SELECTOR                  SetSelector;\r
+  IPMI_LAN_DEST_TYPE_DESTINATION_TYPE    DestinationType;\r
 } IPMI_LAN_DEST_TYPE;\r
 \r
-typedef struct {\r
-  UINT8               DestinationSelector : 4;\r
-  UINT8               Reserved1 : 4;\r
-  UINT8               AlertingIpAddressSelector : 4;\r
-  UINT8               AddressFormat : 4;\r
-  UINT8               UseDefaultGateway : 1;\r
-  UINT8               Reserved2 : 7;\r
-  IPMI_LAN_IP_ADDRESS  AlertingIpAddress;\r
-  IPMI_LAN_MAC_ADDRESS AlertingMacAddress;\r
+typedef union {\r
+  struct {\r
+    UINT8    AlertingIpAddressSelector : 4;\r
+    UINT8    AddressFormat             : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_LAN_ADDRESS_FORMAT;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    UseDefaultGateway : 1;\r
+    UINT8    Reserved2         : 7;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_LAN_GATEWAY_SELECTOR;\r
+\r
+typedef struct {\r
+  IPMI_LAN_SET_SELECTOR        SetSelector;\r
+  IPMI_LAN_ADDRESS_FORMAT      AddressFormat;\r
+  IPMI_LAN_GATEWAY_SELECTOR    GatewaySelector;\r
+  IPMI_LAN_IP_ADDRESS          AlertingIpAddress;\r
+  IPMI_LAN_MAC_ADDRESS         AlertingMacAddress;\r
 } IPMI_LAN_DEST_ADDRESS;\r
 \r
+typedef struct {\r
+  UINT8    VanIdLowByte;\r
+} IPMI_LAN_VLAN_ID_DATA1;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    VanIdHighByte : 4;\r
+    UINT8    Reserved      : 3;\r
+    UINT8    Enabled       : 1;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_LAN_VLAN_ID_DATA2;\r
+\r
+typedef struct {\r
+  IPMI_LAN_VLAN_ID_DATA1    Data1;\r
+  IPMI_LAN_VLAN_ID_DATA2    Data2;\r
+} IPMI_LAN_VLAN_ID;\r
+\r
 typedef union {\r
-  IPMI_LAN_AUTH_TYPE                 IpmiLanAuthType;\r
-  IPMI_LAN_IP_ADDRESS                IpmiLanIpAddress;\r
-  IPMI_LAN_IP_ADDRESS_SRC            IpmiLanIpAddressSrc;\r
-  IPMI_LAN_MAC_ADDRESS               IpmiLanMacAddress;\r
-  IPMI_LAN_SUBNET_MASK               IpmiLanSubnetMask;\r
-  IPMI_LAN_IPV4_HDR_PARAM            IpmiLanIpv4HdrParam;\r
-  IPMI_LAN_RCMP_PORT                 IpmiLanPrimaryRcmpPort;\r
-  IPMI_LAN_BMC_GENERATED_ARP_CONTROL IpmiLanArpControl;\r
-  IPMI_LAN_ARP_INTERVAL              IpmiLanArpInterval;\r
-  IPMI_LAN_COMMUNITY_STRING          IpmiLanCommunityString;\r
-  IPMI_LAN_DEST_TYPE                 IpmiLanDestType;\r
-  IPMI_LAN_DEST_ADDRESS              IpmiLanDestAddress;\r
+  IPMI_LAN_AUTH_TYPE                    IpmiLanAuthType;\r
+  IPMI_LAN_IP_ADDRESS                   IpmiLanIpAddress;\r
+  IPMI_LAN_IP_ADDRESS_SRC               IpmiLanIpAddressSrc;\r
+  IPMI_LAN_MAC_ADDRESS                  IpmiLanMacAddress;\r
+  IPMI_LAN_SUBNET_MASK                  IpmiLanSubnetMask;\r
+  IPMI_LAN_IPV4_HDR_PARAM               IpmiLanIpv4HdrParam;\r
+  IPMI_LAN_RCMP_PORT                    IpmiLanPrimaryRcmpPort;\r
+  IPMI_LAN_BMC_GENERATED_ARP_CONTROL    IpmiLanArpControl;\r
+  IPMI_LAN_ARP_INTERVAL                 IpmiLanArpInterval;\r
+  IPMI_LAN_COMMUNITY_STRING             IpmiLanCommunityString;\r
+  IPMI_LAN_DEST_TYPE                    IpmiLanDestType;\r
+  IPMI_LAN_DEST_ADDRESS                 IpmiLanDestAddress;\r
 } IPMI_LAN_OPTIONS;\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8    AddressSourceType : 4;\r
+    UINT8    Reserved          : 3;\r
+    UINT8    EnableStatus      : 1;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_LAN_IPV6_ADDRESS_SOURCE_TYPE;\r
+\r
+typedef struct {\r
+  UINT8                                SetSelector;\r
+  IPMI_LAN_IPV6_ADDRESS_SOURCE_TYPE    AddressSourceType;\r
+  UINT8                                Ipv6Address[16];\r
+  UINT8                                AddressPrefixLen;\r
+  UINT8                                AddressStatus;\r
+} IPMI_LAN_IPV6_STATIC_ADDRESS;\r
+\r
+//\r
+//  Set in progress parameter\r
+//\r
+typedef union {\r
+  struct {\r
+    UINT8    SetInProgress : 2;\r
+    UINT8    Reserved      : 6;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_LAN_SET_IN_PROGRESS;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    ChannelNo : 4;\r
+    UINT8    Reserved  : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_SET_LAN_CONFIG_CHANNEL_NUM;\r
+\r
+typedef struct {\r
+  IPMI_SET_LAN_CONFIG_CHANNEL_NUM    ChannelNumber;\r
+  UINT8                              ParameterSelector;\r
+  UINT8                              ParameterData[0];\r
+} IPMI_SET_LAN_CONFIGURATION_PARAMETERS_COMMAND_REQUEST;\r
+\r
 //\r
 //  Definitions for Get Lan Configuration Parameters command\r
 //\r
-#define IPMI_TRANSPORT_GET_LAN_CONFIG_PARAMETERS 0x02\r
+#define IPMI_TRANSPORT_GET_LAN_CONFIG_PARAMETERS  0x02\r
 \r
 //\r
 //  Constants and Structure definitions for "Get Lan Configuration Parameters" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8    ChannelNo    : 4;\r
+    UINT8    Reserved     : 3;\r
+    UINT8    GetParameter : 1;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_GET_LAN_CONFIG_CHANNEL_NUM;\r
+\r
+typedef struct {\r
+  IPMI_GET_LAN_CONFIG_CHANNEL_NUM    ChannelNumber;\r
+  UINT8                              ParameterSelector;\r
+  UINT8                              SetSelector;\r
+  UINT8                              BlockSelector;\r
+} IPMI_GET_LAN_CONFIGURATION_PARAMETERS_REQUEST;\r
+\r
+typedef struct {\r
+  UINT8    CompletionCode;\r
+  UINT8    ParameterRevision;\r
+  UINT8    ParameterData[0];\r
+} IPMI_GET_LAN_CONFIGURATION_PARAMETERS_RESPONSE;\r
 \r
 //\r
 //  Definitions for Suspend BMC ARPs command\r
@@ -204,7 +358,7 @@ typedef union {
 //\r
 //  Definitions for Get IP-UDP-RMCP Statistics command\r
 //\r
-#define IPMI_TRANSPORT_GET_PACKET_STATISTICS 0x04\r
+#define IPMI_TRANSPORT_GET_PACKET_STATISTICS  0x04\r
 \r
 //\r
 //  Constants and Structure definitions for "Get IP-UDP-RMCP Statistics" command to follow here\r
@@ -226,107 +380,146 @@ typedef union {
 //\r
 // EMP OPTION DATA\r
 //\r
-typedef struct {\r
-  UINT8 NoAuthentication : 1;\r
-  UINT8 MD2Authentication : 1;\r
-  UINT8 MD5Authentication : 1;\r
-  UINT8 Reserved1 : 1;\r
-  UINT8 StraightPassword : 1;\r
-  UINT8 OemProprietary : 1;\r
-  UINT8 Reservd2 : 2;\r
+typedef union {\r
+  struct {\r
+    UINT8    NoAuthentication  : 1;\r
+    UINT8    MD2Authentication : 1;\r
+    UINT8    MD5Authentication : 1;\r
+    UINT8    Reserved1         : 1;\r
+    UINT8    StraightPassword  : 1;\r
+    UINT8    OemProprietary    : 1;\r
+    UINT8    Reservd2          : 2;\r
+  } Bits;\r
+  UINT8    Uint8;\r
 } IPMI_EMP_AUTH_TYPE;\r
 \r
-typedef struct {\r
-  UINT8 EnableBasicMode : 1;\r
-  UINT8 EnablePPPMode : 1;\r
-  UINT8 EnableTerminalMode : 1;\r
-  UINT8 Reserved1 : 2;\r
-  UINT8 SnoopOsPPPNegotiation : 1;\r
-  UINT8 Reserved2 : 1;\r
-  UINT8 DirectConnect : 1;\r
+typedef union {\r
+  struct {\r
+    UINT8    EnableBasicMode       : 1;\r
+    UINT8    EnablePPPMode         : 1;\r
+    UINT8    EnableTerminalMode    : 1;\r
+    UINT8    Reserved1             : 2;\r
+    UINT8    SnoopOsPPPNegotiation : 1;\r
+    UINT8    Reserved2             : 1;\r
+    UINT8    DirectConnect         : 1;\r
+  } Bits;\r
+  UINT8    Uint8;\r
 } IPMI_EMP_CONNECTION_TYPE;\r
 \r
-typedef struct {\r
-  UINT8 InactivityTimeout : 4;\r
-  UINT8 Reserved : 4;\r
+typedef union {\r
+  struct {\r
+    UINT8    InactivityTimeout : 4;\r
+    UINT8    Reserved          : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
 } IPMI_EMP_INACTIVITY_TIMEOUT;\r
 \r
-typedef struct {\r
-  UINT8 IpmiCallback : 1;\r
-  UINT8 CBCPCallback : 1;\r
-  UINT8 Reserved1 : 6;\r
-  UINT8 CbcpEnableNoCallback : 1;\r
-  UINT8 CbcpEnablePreSpecifiedNumber : 1;\r
-  UINT8 CbcpEnableUserSpecifiedNumber : 1;\r
-  UINT8 CbcpEnableCallbackFromList : 1;\r
-  UINT8 Reserved : 4;\r
-  UINT8 CallbackDestination1;\r
-  UINT8 CallbackDestination2;\r
-  UINT8 CallbackDestination3;\r
+typedef union {\r
+  struct {\r
+    UINT8    IpmiCallback : 1;\r
+    UINT8    CBCPCallback : 1;\r
+    UINT8    Reserved     : 6;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_CHANNEL_CALLBACK_CONTROL_ENABLE;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    CbcpEnableNoCallback          : 1;\r
+    UINT8    CbcpEnablePreSpecifiedNumber  : 1;\r
+    UINT8    CbcpEnableUserSpecifiedNumber : 1;\r
+    UINT8    CbcpEnableCallbackFromList    : 1;\r
+    UINT8    Reserved                      : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_CHANNEL_CALLBACK_CONTROL_CBCP;\r
+\r
+typedef struct {\r
+  IPMI_CHANNEL_CALLBACK_CONTROL_ENABLE    CallbackEnable;\r
+  IPMI_CHANNEL_CALLBACK_CONTROL_CBCP      CBCPNegotiation;\r
+  UINT8                                   CallbackDestination1;\r
+  UINT8                                   CallbackDestination2;\r
+  UINT8                                   CallbackDestination3;\r
 } IPMI_EMP_CHANNEL_CALLBACK_CONTROL;\r
 \r
-typedef struct {\r
-  UINT8 CloseSessionOnDCDLoss : 1;\r
-  UINT8 EnableSessionInactivityTimeout : 1;\r
-  UINT8 Reserved : 6;\r
+typedef union {\r
+  struct {\r
+    UINT8    CloseSessionOnDCDLoss          : 1;\r
+    UINT8    EnableSessionInactivityTimeout : 1;\r
+    UINT8    Reserved                       : 6;\r
+  } Bits;\r
+  UINT8    Uint8;\r
 } IPMI_EMP_SESSION_TERMINATION;\r
 \r
-typedef struct {\r
-  UINT8 Reserved1 : 5;\r
-  UINT8 EnableDtrHangup : 1;\r
-  UINT8 FlowControl : 2;\r
-  UINT8 BitRate : 4;\r
-  UINT8 Reserved2 : 4;\r
-  UINT8 SaveSetting : 1;\r
-  UINT8 SetComPort : 1;\r
-  UINT8 Reserved3 : 6;\r
+typedef union {\r
+  struct {\r
+    UINT8    Reserved1       : 5;\r
+    UINT8    EnableDtrHangup : 1;\r
+    UINT8    FlowControl     : 2;\r
+    UINT8    BitRate         : 4;\r
+    UINT8    Reserved2       : 4;\r
+    UINT8    SaveSetting     : 1;\r
+    UINT8    SetComPort      : 1;\r
+    UINT8    Reserved3       : 6;\r
+  } Bits;\r
+  UINT8     Uint8;\r
+  UINT16    Uint16;\r
 } IPMI_EMP_MESSAGING_COM_SETTING;\r
 \r
-typedef struct {\r
-  UINT8 RingDurationInterval : 6;\r
-  UINT8 Reserved1 : 2;\r
-  UINT8 RingDeadTime : 4;\r
-  UINT8 Reserved : 4;\r
+typedef union {\r
+  struct {\r
+    UINT8    RingDurationInterval : 6;\r
+    UINT8    Reserved1            : 2;\r
+    UINT8    RingDeadTime         : 4;\r
+    UINT8    Reserved2            : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
 } IPMI_EMP_MODEM_RING_TIME;\r
 \r
 typedef struct {\r
-  UINT8 Reserved;\r
-  UINT8 InitString[48];\r
+  UINT8    Reserved;\r
+  UINT8    InitString[48];\r
 } IPMI_EMP_MODEM_INIT_STRING;\r
 \r
 typedef struct {\r
-  UINT8 EscapeSequence[5];\r
+  UINT8    EscapeSequence[5];\r
 } IPMI_EMP_MODEM_ESC_SEQUENCE;\r
 \r
 typedef struct {\r
-  UINT8 HangupSequence[8];\r
+  UINT8    HangupSequence[8];\r
 } IPMI_EMP_MODEM_HANGUP_SEQUENCE;\r
 \r
 typedef struct {\r
-  UINT8 ModelDialCommend[8];\r
+  UINT8    ModelDialCommend[8];\r
 } IPMI_MODEM_DIALUP_COMMAND;\r
 \r
 typedef struct {\r
-  UINT8 PageBlackoutInterval;\r
+  UINT8    PageBlackoutInterval;\r
 } IPMI_PAGE_BLACKOUT_INTERVAL;\r
 \r
 typedef struct {\r
-  UINT8 CommunityString[18];\r
+  UINT8    CommunityString[18];\r
 } IPMI_EMP_COMMUNITY_STRING;\r
 \r
-typedef struct {\r
-  UINT8 Reserved5 : 4;\r
-  UINT8 DialStringSelector : 4;\r
+typedef union {\r
+  struct {\r
+    UINT8    Reserved           : 4;\r
+    UINT8    DialStringSelector : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
 } IPMI_DIAL_PAGE_DESTINATION;\r
 \r
-typedef struct {\r
-  UINT8 TapAccountSelector : 4;\r
-  UINT8 Reserved : 4;\r
+typedef union {\r
+  struct {\r
+    UINT8    TapAccountSelector : 4;\r
+    UINT8    Reserved           : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
 } IPMI_TAP_PAGE_DESTINATION;\r
 \r
 typedef struct {\r
-  UINT8 PPPAccountSetSelector;\r
-  UINT8 DialStringSelector;\r
+  UINT8    PPPAccountSetSelector;\r
+  UINT8    DialStringSelector;\r
 } IPMI_PPP_ALERT_DESTINATION;\r
 \r
 typedef union {\r
@@ -335,86 +528,138 @@ typedef union {
   IPMI_PPP_ALERT_DESTINATION    PppAlertDestination;\r
 } IPMI_DEST_TYPE_SPECIFIC;\r
 \r
-typedef struct {\r
-  UINT8 DestinationSelector : 4;\r
-  UINT8 Reserved1 : 4;\r
-  UINT8 DestinationType : 4;\r
-  UINT8 Reserved2 : 3;\r
-  UINT8 AlertAckRequired : 1;\r
-  UINT8 AlertAckTimeoutSeconds;\r
-  UINT8 NumRetriesCall : 3;\r
-  UINT8 Reserved3 : 1;\r
-  UINT8 NumRetryAlert : 3;\r
-  UINT8 Reserved4 : 1;\r
-  IPMI_DEST_TYPE_SPECIFIC DestinationTypeSpecific;\r
+typedef union {\r
+  struct {\r
+    UINT8    DestinationSelector : 4;\r
+    UINT8    Reserved            : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_EMP_DESTINATION_SELECTOR;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    DestinationType  : 4;\r
+    UINT8    Reserved         : 3;\r
+    UINT8    AlertAckRequired : 1;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_EMP_DESTINATION_TYPE;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    NumRetriesCall : 3;\r
+    UINT8    Reserved1      : 1;\r
+    UINT8    NumRetryAlert  : 3;\r
+    UINT8    Reserved2      : 1;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_EMP_RETRIES;\r
+\r
+typedef struct {\r
+  IPMI_EMP_DESTINATION_SELECTOR    DestinationSelector;\r
+  IPMI_EMP_DESTINATION_TYPE        DestinationType;\r
+  UINT8                            AlertAckTimeoutSeconds;\r
+  IPMI_EMP_RETRIES                 Retries;\r
+  IPMI_DEST_TYPE_SPECIFIC          DestinationTypeSpecific;\r
 } IPMI_EMP_DESTINATION_INFO;\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8    Parity        : 3;\r
+    UINT8    CharacterSize : 1;\r
+    UINT8    StopBit       : 1;\r
+    UINT8    DtrHangup     : 1;\r
+    UINT8    FlowControl   : 2;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_EMP_DESTINATION_COM_SETTING_DATA_2;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    BitRate  : 4;\r
+    UINT8    Reserved : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_EMP_BIT_RATE;\r
+\r
 typedef struct {\r
-  UINT8 DestinationSelector : 4;\r
-  UINT8 Reserved1 : 4;\r
-  UINT8 Parity : 3;\r
-  UINT8 CharacterSize : 1;\r
-  UINT8 StopBit : 1;\r
-  UINT8 DtrHangup : 1;\r
-  UINT8 FlowControl : 2;\r
-  UINT8 BitRate : 4;\r
-  UINT8 Reserved2 : 4;\r
-  UINT8 SaveSetting : 1;\r
-  UINT8 SetComPort : 1;\r
-  UINT8 Reserved3 : 6;\r
+  IPMI_EMP_DESTINATION_SELECTOR              DestinationSelector;\r
+  IPMI_EMP_DESTINATION_COM_SETTING_DATA_2    Data2;\r
+  IPMI_EMP_BIT_RATE                          BitRate;\r
 } IPMI_EMP_DESTINATION_COM_SETTING;\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8    DialStringSelector : 4;\r
+    UINT8    Reserved           : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_DIAL_STRING_SELECTOR;\r
+\r
 typedef struct {\r
-  UINT8 DialStringSelector : 4;\r
-  UINT8 Reserved1 : 4;\r
-  UINT8 Reserved2;\r
-  UINT8 DialString[48];\r
+  IPMI_DIAL_STRING_SELECTOR    DestinationSelector;\r
+  UINT8                        Reserved;\r
+  UINT8                        DialString[48];\r
 } IPMI_DESTINATION_DIAL_STRING;\r
 \r
 typedef union {\r
-  UINT32  IpAddressLong;\r
-  UINT8   IpAddress[4];\r
+  UINT32    IpAddressLong;\r
+  UINT8     IpAddress[4];\r
 } IPMI_PPP_IP_ADDRESS;\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8    IpAddressSelector : 4;\r
+    UINT8    Reserved          : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_DESTINATION_IP_ADDRESS_SELECTOR;\r
+\r
 typedef struct {\r
-  UINT8 IpAddressSelector : 4;\r
-  UINT8 Reserved1 : 4;\r
-  IPMI_PPP_IP_ADDRESS PppIpAddress;\r
+  IPMI_DESTINATION_IP_ADDRESS_SELECTOR    DestinationSelector;\r
+  IPMI_PPP_IP_ADDRESS                     PppIpAddress;\r
 } IPMI_DESTINATION_IP_ADDRESS;\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8    TapServiceSelector    : 4;\r
+    UINT8    TapDialStringSelector : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_TAP_DIAL_STRING_SERVICE_SELECTOR;\r
+\r
 typedef struct {\r
-  UINT8 TapSelector;\r
-  UINT8 TapServiceSelector : 4;\r
-  UINT8 TapDialStringSelector : 4;\r
+  UINT8                                    TapSelector;\r
+  IPMI_TAP_DIAL_STRING_SERVICE_SELECTOR    TapDialStringServiceSelector;\r
 } IPMI_DESTINATION_TAP_ACCOUNT;\r
 \r
 typedef struct {\r
-  UINT8 TapSelector;\r
-  UINT8 PagerIdString[16];\r
+  UINT8    TapSelector;\r
+  UINT8    PagerIdString[16];\r
 } IPMI_TAP_PAGER_ID_STRING;\r
 \r
 typedef union {\r
-  UINT8                              OptionData;\r
-  IPMI_EMP_AUTH_TYPE                 EmpAuthType;\r
-  IPMI_EMP_CONNECTION_TYPE           EmpConnectionType;\r
-  IPMI_EMP_INACTIVITY_TIMEOUT        EmpInactivityTimeout;\r
-  IPMI_EMP_CHANNEL_CALLBACK_CONTROL  EmpCallbackControl;\r
-  IPMI_EMP_SESSION_TERMINATION       EmpSessionTermination;\r
-  IPMI_EMP_MESSAGING_COM_SETTING     EmpMessagingComSetting;\r
-  IPMI_EMP_MODEM_RING_TIME           EmpModemRingTime;\r
-  IPMI_EMP_MODEM_INIT_STRING         EmpModemInitString;\r
-  IPMI_EMP_MODEM_ESC_SEQUENCE        EmpModemEscSequence;\r
-  IPMI_EMP_MODEM_HANGUP_SEQUENCE     EmpModemHangupSequence;\r
-  IPMI_MODEM_DIALUP_COMMAND          EmpModemDialupCommand;\r
-  IPMI_PAGE_BLACKOUT_INTERVAL        EmpPageBlackoutInterval;\r
-  IPMI_EMP_COMMUNITY_STRING          EmpCommunityString;\r
-  IPMI_EMP_DESTINATION_INFO          EmpDestinationInfo;\r
-  IPMI_EMP_DESTINATION_COM_SETTING   EmpDestinationComSetting;\r
-  UINT8                              CallRetryBusySignalInterval;\r
-  IPMI_DESTINATION_DIAL_STRING       DestinationDialString;\r
-  IPMI_DESTINATION_IP_ADDRESS        DestinationIpAddress;\r
-  IPMI_DESTINATION_TAP_ACCOUNT       DestinationTapAccount;\r
-  IPMI_TAP_PAGER_ID_STRING           TapPagerIdString;\r
+  UINT8                                OptionData;\r
+  IPMI_EMP_AUTH_TYPE                   EmpAuthType;\r
+  IPMI_EMP_CONNECTION_TYPE             EmpConnectionType;\r
+  IPMI_EMP_INACTIVITY_TIMEOUT          EmpInactivityTimeout;\r
+  IPMI_EMP_CHANNEL_CALLBACK_CONTROL    EmpCallbackControl;\r
+  IPMI_EMP_SESSION_TERMINATION         EmpSessionTermination;\r
+  IPMI_EMP_MESSAGING_COM_SETTING       EmpMessagingComSetting;\r
+  IPMI_EMP_MODEM_RING_TIME             EmpModemRingTime;\r
+  IPMI_EMP_MODEM_INIT_STRING           EmpModemInitString;\r
+  IPMI_EMP_MODEM_ESC_SEQUENCE          EmpModemEscSequence;\r
+  IPMI_EMP_MODEM_HANGUP_SEQUENCE       EmpModemHangupSequence;\r
+  IPMI_MODEM_DIALUP_COMMAND            EmpModemDialupCommand;\r
+  IPMI_PAGE_BLACKOUT_INTERVAL          EmpPageBlackoutInterval;\r
+  IPMI_EMP_COMMUNITY_STRING            EmpCommunityString;\r
+  IPMI_EMP_DESTINATION_INFO            EmpDestinationInfo;\r
+  IPMI_EMP_DESTINATION_COM_SETTING     EmpDestinationComSetting;\r
+  UINT8                                CallRetryBusySignalInterval;\r
+  IPMI_DESTINATION_DIAL_STRING         DestinationDialString;\r
+  IPMI_DESTINATION_IP_ADDRESS          DestinationIpAddress;\r
+  IPMI_DESTINATION_TAP_ACCOUNT         DestinationTapAccount;\r
+  IPMI_TAP_PAGER_ID_STRING             TapPagerIdString;\r
 } IPMI_EMP_OPTIONS;\r
 \r
 //\r
@@ -434,27 +679,69 @@ typedef union {
 //\r
 //  Constants and Structure definitions for "Set Serial/Modem Mux" command to follow here\r
 //\r
+\r
+//\r
+// Set Serial/Modem Mux command request return status\r
+//\r
+#define IPMI_MUX_SETTING_REQUEST_REJECTED  0x00\r
+#define IPMI_MUX_SETTING_REQUEST_ACCEPTED  0x01\r
+\r
+//\r
+//  Definitions for serial multiplex settings\r
+//\r
+#define IPMI_MUX_SETTING_GET_MUX_SETTING              0x0\r
+#define IPMI_MUX_SETTING_REQUEST_MUX_TO_SYSTEM        0x1\r
+#define IPMI_MUX_SETTING_REQUEST_MUX_TO_BMC           0x2\r
+#define IPMI_MUX_SETTING_FORCE_MUX_TO_SYSTEM          0x3\r
+#define IPMI_MUX_SETTING_FORCE_MUX_TO_BMC             0x4\r
+#define IPMI_MUX_SETTING_BLOCK_REQUEST_MUX_TO_SYSTEM  0x5\r
+#define IPMI_MUX_SETTING_ALLOW_REQUEST_MUX_TO_SYSTEM  0x6\r
+#define IPMI_MUX_SETTING_BLOCK_REQUEST_MUX_TO_BMC     0x7\r
+#define IPMI_MUX_SETTING_ALLOW_REQUEST_MUX_TO_BMC     0x8\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    ChannelNo : 4;\r
+    UINT8    Reserved  : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_MUX_CHANNEL_NUM;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    MuxSetting : 4;\r
+    UINT8    Reserved   : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_MUX_SETTING_REQUEST;\r
+\r
 typedef struct {\r
-  UINT8 ChannelNo : 4;\r
-  UINT8 Reserved1 : 4;\r
-  UINT8 MuxSetting : 4;\r
-  UINT8 Reserved2 : 4;\r
+  IPMI_MUX_CHANNEL_NUM        ChannelNumber;\r
+  IPMI_MUX_SETTING_REQUEST    MuxSetting;\r
 } IPMI_SET_SERIAL_MODEM_MUX_COMMAND_REQUEST;\r
 \r
-typedef struct {\r
-  UINT8 MuxSetToBmc : 1;\r
-  UINT8 CommandStatus : 1;\r
-  UINT8 MessagingSessionActive : 1;\r
-  UINT8 AlertInProgress : 1;\r
-  UINT8 Reserved2 : 2;\r
-  UINT8 MuxToBmcAllowed : 1;\r
-  UINT8 MuxToSystemBlocked : 1;\r
+typedef union {\r
+  struct {\r
+    UINT8    MuxSetToBmc            : 1;\r
+    UINT8    CommandStatus          : 1;\r
+    UINT8    MessagingSessionActive : 1;\r
+    UINT8    AlertInProgress        : 1;\r
+    UINT8    Reserved               : 2;\r
+    UINT8    MuxToBmcAllowed        : 1;\r
+    UINT8    MuxToSystemBlocked     : 1;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_MUX_SETTING_PRESENT_STATE;\r
+\r
+typedef struct {\r
+  UINT8                             CompletionCode;\r
+  IPMI_MUX_SETTING_PRESENT_STATE    MuxSetting;\r
 } IPMI_SET_SERIAL_MODEM_MUX_COMMAND_RESPONSE;\r
 \r
 //\r
 //  Definitions for Get TAP Response Code command\r
 //\r
-#define IPMI_TRANSPORT_GET_TAP_RESPONSE_CODE 0x13\r
+#define IPMI_TRANSPORT_GET_TAP_RESPONSE_CODE  0x13\r
 \r
 //\r
 //  Constants and Structure definitions for "Get TAP Response Code" command to follow here\r
@@ -481,7 +768,7 @@ typedef struct {
 //\r
 //  Definitions for Send PPP UDP Proxy Packet command\r
 //\r
-#define IPMI_TRANSPORT_SEND_PPP_UDP_PROXY_PACKET 0x16\r
+#define IPMI_TRANSPORT_SEND_PPP_UDP_PROXY_PACKET  0x16\r
 \r
 //\r
 //  Constants and Structure definitions for "Send PPP UDP Proxy Packet" command to follow here\r
@@ -517,7 +804,7 @@ typedef struct {
 //\r
 //  Definitions for Set user Callback Options command\r
 //\r
-#define IPMI_TRANSPORT_SET_USER_CALLBACK_OPTIONS 0x1A\r
+#define IPMI_TRANSPORT_SET_USER_CALLBACK_OPTIONS  0x1A\r
 \r
 //\r
 //  Constants and Structure definitions for "Set user Callback Options" command to follow here\r
@@ -526,7 +813,7 @@ typedef struct {
 //\r
 //  Definitions for Get user Callback Options command\r
 //\r
-#define IPMI_TRANSPORT_GET_USER_CALLBACK_OPTIONS 0x1B\r
+#define IPMI_TRANSPORT_GET_USER_CALLBACK_OPTIONS  0x1B\r
 \r
 //\r
 //  Constants and Structure definitions for "Get user Callback Options" command to follow here\r
@@ -544,6 +831,20 @@ typedef struct {
 //\r
 //  Constants and Structure definitions for "SOL activating" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8    SessionState : 4;\r
+    UINT8    Reserved     : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_SOL_SESSION_STATE;\r
+\r
+typedef struct {\r
+  IPMI_SOL_SESSION_STATE    SessionState;\r
+  UINT8                     PayloadInstance;\r
+  UINT8                     FormatVersionMajor; // 1\r
+  UINT8                     FormatVersionMinor; // 0\r
+} IPMI_SOL_ACTIVATING_REQUEST;\r
 \r
 //\r
 //  Definitions for Set SOL Configuration Parameters command\r
@@ -554,6 +855,33 @@ typedef struct {
 //  Constants and Structure definitions for "Set SOL Configuration Parameters" command to follow here\r
 //\r
 \r
+//\r
+// SOL Configuration Parameters selector\r
+//\r
+#define IPMI_SOL_CONFIGURATION_PARAMETER_SET_IN_PROGRESS        0\r
+#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_ENABLE             1\r
+#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_AUTHENTICATION     2\r
+#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_CHARACTER_PARAM    3\r
+#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_RETRY              4\r
+#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_NV_BIT_RATE        5\r
+#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_VOLATILE_BIT_RATE  6\r
+#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_PAYLOAD_CHANNEL    7\r
+#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_PAYLOAD_PORT       8\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8    ChannelNumber : 4;\r
+    UINT8    Reserved      : 4;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_SET_SOL_CONFIG_PARAM_CHANNEL_NUM;\r
+\r
+typedef struct {\r
+  IPMI_SET_SOL_CONFIG_PARAM_CHANNEL_NUM    ChannelNumber;\r
+  UINT8                                    ParameterSelector;\r
+  UINT8                                    ParameterData[0];\r
+} IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST;\r
+\r
 //\r
 //  Definitions for Get SOL Configuration Parameters command\r
 //\r
@@ -562,5 +890,27 @@ typedef struct {
 //\r
 //  Constants and Structure definitions for "Get SOL Configuration Parameters" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8    ChannelNumber : 4;\r
+    UINT8    Reserved      : 3;\r
+    UINT8    GetParameter  : 1;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_GET_SOL_CONFIG_PARAM_CHANNEL_NUM;\r
+\r
+typedef struct {\r
+  IPMI_GET_SOL_CONFIG_PARAM_CHANNEL_NUM    ChannelNumber;\r
+  UINT8                                    ParameterSelector;\r
+  UINT8                                    SetSelector;\r
+  UINT8                                    BlockSelector;\r
+} IPMI_GET_SOL_CONFIGURATION_PARAMETERS_REQUEST;\r
+\r
+typedef struct {\r
+  UINT8    CompletionCode;\r
+  UINT8    ParameterRevision;\r
+  UINT8    ParameterData[0];\r
+} IPMI_GET_SOL_CONFIGURATION_PARAMETERS_RESPONSE;\r
+\r
 #pragma pack()\r
 #endif\r