]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/IpmiNetFnTransport.h
MdePkg Base.h: Use correct style to check the defined macro
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / IpmiNetFnTransport.h
index 28ede2f63a5a93e27486b3e788d18fbf72be76c3..3fcd0e71b172581d08ef2556876980bfdc0f6dca 100644 (file)
   and Appendix H, Sub-function Assignments.\r
 \r
   Copyright (c) 1999 - 2018, 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
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 **/\r
 \r
 #ifndef _IPMI_NET_FN_TRANSPORT_H_\r
@@ -109,23 +103,29 @@ 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
+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
 } 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
@@ -136,13 +136,27 @@ typedef struct {
   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
@@ -150,10 +164,13 @@ typedef struct {
   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
@@ -164,23 +181,50 @@ typedef struct {
   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 union {\r
@@ -198,30 +242,46 @@ typedef union {
   IPMI_LAN_DEST_ADDRESS              IpmiLanDestAddress;\r
 } IPMI_LAN_OPTIONS;\r
 \r
-typedef struct {\r
-  UINT8  SetSelector;\r
-  UINT8  AddressSourceType : 4;\r
-  UINT8  Reserved : 3;\r
-  UINT8  EnableStatus : 1;\r
-  UINT8  Ipv6Address[16];\r
-  UINT8  AddressPrefixLen;\r
-  UINT8  AddressStatus;\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 struct {\r
-  UINT8  SetInProgress:2;\r
-  UINT8  Reserved:6;\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
-  UINT8  ChannelNo : 4;\r
-  UINT8  Reserved : 4;\r
-  UINT8  ParameterSelector;\r
-  UINT8  ParameterData[0];\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
@@ -232,13 +292,20 @@ typedef struct {
 //\r
 //  Constants and Structure definitions for "Get Lan Configuration Parameters" command to follow here\r
 //\r
-typedef struct {\r
-  UINT8  ChannelNo : 4;\r
-  UINT8  Reserved : 3;\r
-  UINT8  GetParameter : 1;\r
-  UINT8  ParameterSelector;\r
-  UINT8  SetSelector;\r
-  UINT8  BlockSelector;\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
@@ -281,67 +348,100 @@ typedef struct {
 //\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
@@ -369,14 +469,20 @@ typedef struct {
   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
@@ -390,40 +496,78 @@ 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
@@ -431,16 +575,31 @@ typedef union {
   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
+\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
@@ -509,22 +668,43 @@ typedef union {
 #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 CompletionCode;\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
@@ -620,12 +800,19 @@ typedef struct {
 //\r
 //  Constants and Structure definitions for "SOL activating" command to follow here\r
 //\r
-typedef struct {\r
-  UINT8  SessionState : 4;\r
-  UINT8  Reserved : 4;\r
-  UINT8  PayloadInstance;\r
-  UINT8  FormatVersionMajor; // 1\r
-  UINT8  FormatVersionMinor; // 0\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
@@ -650,11 +837,18 @@ typedef struct {
 #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
-  UINT8  ChannelNumber : 4;\r
-  UINT8  Reserved : 4;\r
-  UINT8  ParameterSelector;\r
-  UINT8  ParameterData[0];\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
@@ -665,13 +859,20 @@ typedef struct {
 //\r
 //  Constants and Structure definitions for "Get SOL Configuration Parameters" command to follow here\r
 //\r
-typedef struct {\r
-  UINT8  ChannelNumber : 4;\r
-  UINT8  Reserved : 3;\r
-  UINT8  GetParameter : 1;\r
-  UINT8  ParameterSelector;\r
-  UINT8  SetSelector;\r
-  UINT8  BlockSelector;\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