1 /** @file 2 IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1. 3 4 This file contains all NetFn Transport commands, including: 5 IPM LAN Commands (Chapter 23) 6 IPMI Serial/Modem Commands (Chapter 25) 7 SOL Commands (Chapter 26) 8 Command Forwarding Commands (Chapter 35b) 9 10 See IPMI specification, Appendix G, Command Assignments 11 and Appendix H, Sub-function Assignments. 12 13 Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> 14 This program and the accompanying materials 15 are licensed and made available under the terms and conditions of the BSD License 16 which accompanies this distribution. The full text of the license may be found at 17 http://opensource.org/licenses/bsd-license.php 18 19 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 20 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 21 **/ 22 23 #ifndef _IPMI_NET_FN_TRANSPORT_H_ 24 #define _IPMI_NET_FN_TRANSPORT_H_ 25 26 #pragma pack(1) 27 // 28 // Net function definition for Transport command 29 // 30 #define IPMI_NETFN_TRANSPORT 0x0C 31 32 // 33 // Below is Definitions for IPM LAN Commands (Chapter 23) 34 // 35 36 // 37 // Definitions for Set Lan Configuration Parameters command 38 // 39 #define IPMI_TRANSPORT_SET_LAN_CONFIG_PARAMETERS 0x01 40 41 // 42 // Constants and Structure definitions for "Set Lan Configuration Parameters" command to follow here 43 // 44 45 // 46 // LAN Management Structure 47 // 48 typedef enum { 49 IpmiLanReserved1, 50 IpmiLanReserved2, 51 IpmiLanAuthType, 52 IpmiLanIpAddress, 53 IpmiLanIpAddressSource, 54 IpmiLanMacAddress, 55 IpmiLanSubnetMask, 56 IpmiLanIpv4HeaderParam, 57 IpmiLanPrimaryRcmpPort, 58 IpmiLanSecondaryRcmpPort, 59 IpmiLanBmcGeneratedArpCtrl, 60 IpmiLanArpInterval, 61 IpmiLanDefaultGateway, 62 IpmiLanDefaultGatewayMac, 63 IpmiLanBackupGateway, 64 IpmiLanBackupGatewayMac, 65 IpmiLanCommunityString, 66 IpmiLanReserved3, 67 IpmiLanDestinationType, 68 IpmiLanDestinationAddress 69 } IPMI_LAN_OPTION_TYPE; 70 71 // 72 // IP Address Source 73 // 74 typedef enum { 75 IpmiUnspecified, 76 IpmiStaticAddrsss, 77 IpmiDynamicAddressBmcDhcp, 78 IpmiDynamicAddressBiosDhcp, 79 IpmiDynamicAddressBmcNonDhcp 80 } IPMI_IP_ADDRESS_SRC; 81 82 // 83 // Destination Type 84 // 85 typedef enum { 86 IpmiPetTrapDestination, 87 IpmiDirectedEventDestination, 88 IpmiReserved1, 89 IpmiReserved2, 90 IpmiReserved3, 91 IpmiReserved4, 92 IpmiReserved5, 93 IpmiOem1, 94 IpmiOem2 95 } IPMI_LAN_DEST_TYPE_DEST_TYPE; 96 97 typedef struct { 98 UINT8 NoAuth : 1; 99 UINT8 MD2Auth : 1; 100 UINT8 MD5Auth : 1; 101 UINT8 Reserved1 : 1; 102 UINT8 StraightPswd : 1; 103 UINT8 OemType : 1; 104 UINT8 Reserved2 : 2; 105 } IPMI_LAN_AUTH_TYPE; 106 107 typedef struct { 108 UINT8 IpAddress[4]; 109 } IPMI_LAN_IP_ADDRESS; 110 111 typedef struct { 112 UINT8 AddressSrc : 4; 113 UINT8 Reserved : 4; 114 } IPMI_LAN_IP_ADDRESS_SRC; 115 116 typedef struct { 117 UINT8 MacAddress[6]; 118 } IPMI_LAN_MAC_ADDRESS; 119 120 typedef struct { 121 UINT8 IpAddress[4]; 122 } IPMI_LAN_SUBNET_MASK; 123 124 typedef struct { 125 UINT8 TimeToLive; 126 UINT8 IpFlag : 3; 127 UINT8 Reserved1 : 5; 128 UINT8 Precedence : 3; 129 UINT8 Reserved2 : 1; 130 UINT8 ServiceType : 4; 131 } IPMI_LAN_IPV4_HDR_PARAM; 132 133 typedef struct { 134 UINT8 RcmpPortMsb; 135 UINT8 RcmpPortLsb; 136 } IPMI_LAN_RCMP_PORT; 137 138 typedef struct { 139 UINT8 EnableBmcArpResponse : 1; 140 UINT8 EnableBmcGratuitousArp : 1; 141 UINT8 Reserved : 6; 142 } IPMI_LAN_BMC_GENERATED_ARP_CONTROL; 143 144 typedef struct { 145 UINT8 ArpInterval; 146 } IPMI_LAN_ARP_INTERVAL; 147 148 typedef struct { 149 UINT8 Data[18]; 150 } IPMI_LAN_COMMUNITY_STRING; 151 152 typedef struct { 153 UINT8 DestinationSelector : 4; 154 UINT8 Reserved2 : 4; 155 UINT8 DestinationType : 3; 156 UINT8 Reserved1 : 4; 157 UINT8 AlertAcknowledged : 1; 158 } IPMI_LAN_DEST_TYPE; 159 160 typedef struct { 161 UINT8 DestinationSelector : 4; 162 UINT8 Reserved1 : 4; 163 UINT8 AlertingIpAddressSelector : 4; 164 UINT8 AddressFormat : 4; 165 UINT8 UseDefaultGateway : 1; 166 UINT8 Reserved2 : 7; 167 IPMI_LAN_IP_ADDRESS AlertingIpAddress; 168 IPMI_LAN_MAC_ADDRESS AlertingMacAddress; 169 } IPMI_LAN_DEST_ADDRESS; 170 171 typedef union { 172 IPMI_LAN_AUTH_TYPE IpmiLanAuthType; 173 IPMI_LAN_IP_ADDRESS IpmiLanIpAddress; 174 IPMI_LAN_IP_ADDRESS_SRC IpmiLanIpAddressSrc; 175 IPMI_LAN_MAC_ADDRESS IpmiLanMacAddress; 176 IPMI_LAN_SUBNET_MASK IpmiLanSubnetMask; 177 IPMI_LAN_IPV4_HDR_PARAM IpmiLanIpv4HdrParam; 178 IPMI_LAN_RCMP_PORT IpmiLanPrimaryRcmpPort; 179 IPMI_LAN_BMC_GENERATED_ARP_CONTROL IpmiLanArpControl; 180 IPMI_LAN_ARP_INTERVAL IpmiLanArpInterval; 181 IPMI_LAN_COMMUNITY_STRING IpmiLanCommunityString; 182 IPMI_LAN_DEST_TYPE IpmiLanDestType; 183 IPMI_LAN_DEST_ADDRESS IpmiLanDestAddress; 184 } IPMI_LAN_OPTIONS; 185 186 // 187 // Definitions for Get Lan Configuration Parameters command 188 // 189 #define IPMI_TRANSPORT_GET_LAN_CONFIG_PARAMETERS 0x02 190 191 // 192 // Constants and Structure definitions for "Get Lan Configuration Parameters" command to follow here 193 // 194 195 // 196 // Definitions for Suspend BMC ARPs command 197 // 198 #define IPMI_TRANSPORT_SUSPEND_BMC_ARPS 0x03 199 200 // 201 // Constants and Structure definitions for "Suspend BMC ARPs" command to follow here 202 // 203 204 // 205 // Definitions for Get IP-UDP-RMCP Statistics command 206 // 207 #define IPMI_TRANSPORT_GET_PACKET_STATISTICS 0x04 208 209 // 210 // Constants and Structure definitions for "Get IP-UDP-RMCP Statistics" command to follow here 211 // 212 213 // 214 // Below is Definitions for IPMI Serial/Modem Commands (Chapter 25) 215 // 216 217 // 218 // Definitions for Set Serial/Modem Configuration command 219 // 220 #define IPMI_TRANSPORT_SET_SERIAL_CONFIGURATION 0x10 221 222 // 223 // Constants and Structure definitions for "Set Serial/Modem Configuration" command to follow here 224 // 225 226 // 227 // EMP OPTION DATA 228 // 229 typedef struct { 230 UINT8 NoAuthentication : 1; 231 UINT8 MD2Authentication : 1; 232 UINT8 MD5Authentication : 1; 233 UINT8 Reserved1 : 1; 234 UINT8 StraightPassword : 1; 235 UINT8 OemProprietary : 1; 236 UINT8 Reservd2 : 2; 237 } IPMI_EMP_AUTH_TYPE; 238 239 typedef struct { 240 UINT8 EnableBasicMode : 1; 241 UINT8 EnablePPPMode : 1; 242 UINT8 EnableTerminalMode : 1; 243 UINT8 Reserved1 : 2; 244 UINT8 SnoopOsPPPNegotiation : 1; 245 UINT8 Reserved2 : 1; 246 UINT8 DirectConnect : 1; 247 } IPMI_EMP_CONNECTION_TYPE; 248 249 typedef struct { 250 UINT8 InactivityTimeout : 4; 251 UINT8 Reserved : 4; 252 } IPMI_EMP_INACTIVITY_TIMEOUT; 253 254 typedef struct { 255 UINT8 IpmiCallback : 1; 256 UINT8 CBCPCallback : 1; 257 UINT8 Reserved1 : 6; 258 UINT8 CbcpEnableNoCallback : 1; 259 UINT8 CbcpEnablePreSpecifiedNumber : 1; 260 UINT8 CbcpEnableUserSpecifiedNumber : 1; 261 UINT8 CbcpEnableCallbackFromList : 1; 262 UINT8 Reserved : 4; 263 UINT8 CallbackDestination1; 264 UINT8 CallbackDestination2; 265 UINT8 CallbackDestination3; 266 } IPMI_EMP_CHANNEL_CALLBACK_CONTROL; 267 268 typedef struct { 269 UINT8 CloseSessionOnDCDLoss : 1; 270 UINT8 EnableSessionInactivityTimeout : 1; 271 UINT8 Reserved : 6; 272 } IPMI_EMP_SESSION_TERMINATION; 273 274 typedef struct { 275 UINT8 Reserved1 : 5; 276 UINT8 EnableDtrHangup : 1; 277 UINT8 FlowControl : 2; 278 UINT8 BitRate : 4; 279 UINT8 Reserved2 : 4; 280 UINT8 SaveSetting : 1; 281 UINT8 SetComPort : 1; 282 UINT8 Reserved3 : 6; 283 } IPMI_EMP_MESSAGING_COM_SETTING; 284 285 typedef struct { 286 UINT8 RingDurationInterval : 6; 287 UINT8 Reserved1 : 2; 288 UINT8 RingDeadTime : 4; 289 UINT8 Reserved : 4; 290 } IPMI_EMP_MODEM_RING_TIME; 291 292 typedef struct { 293 UINT8 Reserved; 294 UINT8 InitString[48]; 295 } IPMI_EMP_MODEM_INIT_STRING; 296 297 typedef struct { 298 UINT8 EscapeSequence[5]; 299 } IPMI_EMP_MODEM_ESC_SEQUENCE; 300 301 typedef struct { 302 UINT8 HangupSequence[8]; 303 } IPMI_EMP_MODEM_HANGUP_SEQUENCE; 304 305 typedef struct { 306 UINT8 ModelDialCommend[8]; 307 } IPMI_MODEM_DIALUP_COMMAND; 308 309 typedef struct { 310 UINT8 PageBlackoutInterval; 311 } IPMI_PAGE_BLACKOUT_INTERVAL; 312 313 typedef struct { 314 UINT8 CommunityString[18]; 315 } IPMI_EMP_COMMUNITY_STRING; 316 317 typedef struct { 318 UINT8 Reserved5 : 4; 319 UINT8 DialStringSelector : 4; 320 } IPMI_DIAL_PAGE_DESTINATION; 321 322 typedef struct { 323 UINT8 TapAccountSelector : 4; 324 UINT8 Reserved : 4; 325 } IPMI_TAP_PAGE_DESTINATION; 326 327 typedef struct { 328 UINT8 PPPAccountSetSelector; 329 UINT8 DialStringSelector; 330 } IPMI_PPP_ALERT_DESTINATION; 331 332 typedef union { 333 IPMI_DIAL_PAGE_DESTINATION DialPageDestination; 334 IPMI_TAP_PAGE_DESTINATION TapPageDestination; 335 IPMI_PPP_ALERT_DESTINATION PppAlertDestination; 336 } IPMI_DEST_TYPE_SPECIFIC; 337 338 typedef struct { 339 UINT8 DestinationSelector : 4; 340 UINT8 Reserved1 : 4; 341 UINT8 DestinationType : 4; 342 UINT8 Reserved2 : 3; 343 UINT8 AlertAckRequired : 1; 344 UINT8 AlertAckTimeoutSeconds; 345 UINT8 NumRetriesCall : 3; 346 UINT8 Reserved3 : 1; 347 UINT8 NumRetryAlert : 3; 348 UINT8 Reserved4 : 1; 349 IPMI_DEST_TYPE_SPECIFIC DestinationTypeSpecific; 350 } IPMI_EMP_DESTINATION_INFO; 351 352 typedef struct { 353 UINT8 DestinationSelector : 4; 354 UINT8 Reserved1 : 4; 355 UINT8 Parity : 3; 356 UINT8 CharacterSize : 1; 357 UINT8 StopBit : 1; 358 UINT8 DtrHangup : 1; 359 UINT8 FlowControl : 2; 360 UINT8 BitRate : 4; 361 UINT8 Reserved2 : 4; 362 UINT8 SaveSetting : 1; 363 UINT8 SetComPort : 1; 364 UINT8 Reserved3 : 6; 365 } IPMI_EMP_DESTINATION_COM_SETTING; 366 367 typedef struct { 368 UINT8 DialStringSelector : 4; 369 UINT8 Reserved1 : 4; 370 UINT8 Reserved2; 371 UINT8 DialString[48]; 372 } IPMI_DESTINATION_DIAL_STRING; 373 374 typedef union { 375 UINT32 IpAddressLong; 376 UINT8 IpAddress[4]; 377 } IPMI_PPP_IP_ADDRESS; 378 379 typedef struct { 380 UINT8 IpAddressSelector : 4; 381 UINT8 Reserved1 : 4; 382 IPMI_PPP_IP_ADDRESS PppIpAddress; 383 } IPMI_DESTINATION_IP_ADDRESS; 384 385 typedef struct { 386 UINT8 TapSelector; 387 UINT8 TapServiceSelector : 4; 388 UINT8 TapDialStringSelector : 4; 389 } IPMI_DESTINATION_TAP_ACCOUNT; 390 391 typedef struct { 392 UINT8 TapSelector; 393 UINT8 PagerIdString[16]; 394 } IPMI_TAP_PAGER_ID_STRING; 395 396 typedef union { 397 UINT8 OptionData; 398 IPMI_EMP_AUTH_TYPE EmpAuthType; 399 IPMI_EMP_CONNECTION_TYPE EmpConnectionType; 400 IPMI_EMP_INACTIVITY_TIMEOUT EmpInactivityTimeout; 401 IPMI_EMP_CHANNEL_CALLBACK_CONTROL EmpCallbackControl; 402 IPMI_EMP_SESSION_TERMINATION EmpSessionTermination; 403 IPMI_EMP_MESSAGING_COM_SETTING EmpMessagingComSetting; 404 IPMI_EMP_MODEM_RING_TIME EmpModemRingTime; 405 IPMI_EMP_MODEM_INIT_STRING EmpModemInitString; 406 IPMI_EMP_MODEM_ESC_SEQUENCE EmpModemEscSequence; 407 IPMI_EMP_MODEM_HANGUP_SEQUENCE EmpModemHangupSequence; 408 IPMI_MODEM_DIALUP_COMMAND EmpModemDialupCommand; 409 IPMI_PAGE_BLACKOUT_INTERVAL EmpPageBlackoutInterval; 410 IPMI_EMP_COMMUNITY_STRING EmpCommunityString; 411 IPMI_EMP_DESTINATION_INFO EmpDestinationInfo; 412 IPMI_EMP_DESTINATION_COM_SETTING EmpDestinationComSetting; 413 UINT8 CallRetryBusySignalInterval; 414 IPMI_DESTINATION_DIAL_STRING DestinationDialString; 415 IPMI_DESTINATION_IP_ADDRESS DestinationIpAddress; 416 IPMI_DESTINATION_TAP_ACCOUNT DestinationTapAccount; 417 IPMI_TAP_PAGER_ID_STRING TapPagerIdString; 418 } IPMI_EMP_OPTIONS; 419 420 // 421 // Definitions for Get Serial/Modem Configuration command 422 // 423 #define IPMI_TRANSPORT_GET_SERIAL_CONFIGURATION 0x11 424 425 // 426 // Constants and Structure definitions for "Get Serial/Modem Configuration" command to follow here 427 // 428 429 // 430 // Definitions for Set Serial/Modem Mux command 431 // 432 #define IPMI_TRANSPORT_SET_SERIAL_MUX 0x12 433 434 // 435 // Constants and Structure definitions for "Set Serial/Modem Mux" command to follow here 436 // 437 typedef struct { 438 UINT8 ChannelNo : 4; 439 UINT8 Reserved1 : 4; 440 UINT8 MuxSetting : 4; 441 UINT8 Reserved2 : 4; 442 } IPMI_SET_SERIAL_MODEM_MUX_COMMAND_REQUEST; 443 444 typedef struct { 445 UINT8 MuxSetToBmc : 1; 446 UINT8 CommandStatus : 1; 447 UINT8 MessagingSessionActive : 1; 448 UINT8 AlertInProgress : 1; 449 UINT8 Reserved2 : 2; 450 UINT8 MuxToBmcAllowed : 1; 451 UINT8 MuxToSystemBlocked : 1; 452 } IPMI_SET_SERIAL_MODEM_MUX_COMMAND_RESPONSE; 453 454 // 455 // Definitions for Get TAP Response Code command 456 // 457 #define IPMI_TRANSPORT_GET_TAP_RESPONSE_CODE 0x13 458 459 // 460 // Constants and Structure definitions for "Get TAP Response Code" command to follow here 461 // 462 463 // 464 // Definitions for Set PPP UDP Proxy Transmit Data command 465 // 466 #define IPMI_TRANSPORT_SET_PPP_UDP_PROXY_TXDATA 0x14 467 468 // 469 // Constants and Structure definitions for "Set PPP UDP Proxy Transmit Data" command to follow here 470 // 471 472 // 473 // Definitions for Get PPP UDP Proxy Transmit Data command 474 // 475 #define IPMI_TRANSPORT_GET_PPP_UDP_PROXY_TXDATA 0x15 476 477 // 478 // Constants and Structure definitions for "Get PPP UDP Proxy Transmit Data" command to follow here 479 // 480 481 // 482 // Definitions for Send PPP UDP Proxy Packet command 483 // 484 #define IPMI_TRANSPORT_SEND_PPP_UDP_PROXY_PACKET 0x16 485 486 // 487 // Constants and Structure definitions for "Send PPP UDP Proxy Packet" command to follow here 488 // 489 490 // 491 // Definitions for Get PPP UDP Proxy Receive Data command 492 // 493 #define IPMI_TRANSPORT_GET_PPP_UDP_PROXY_RX 0x17 494 495 // 496 // Constants and Structure definitions for "Get PPP UDP Proxy Receive Data" command to follow here 497 // 498 499 // 500 // Definitions for Serial/Modem connection active command 501 // 502 #define IPMI_TRANSPORT_SERIAL_CONNECTION_ACTIVE 0x18 503 504 // 505 // Constants and Structure definitions for "Serial/Modem connection active" command to follow here 506 // 507 508 // 509 // Definitions for Callback command 510 // 511 #define IPMI_TRANSPORT_CALLBACK 0x19 512 513 // 514 // Constants and Structure definitions for "Callback" command to follow here 515 // 516 517 // 518 // Definitions for Set user Callback Options command 519 // 520 #define IPMI_TRANSPORT_SET_USER_CALLBACK_OPTIONS 0x1A 521 522 // 523 // Constants and Structure definitions for "Set user Callback Options" command to follow here 524 // 525 526 // 527 // Definitions for Get user Callback Options command 528 // 529 #define IPMI_TRANSPORT_GET_USER_CALLBACK_OPTIONS 0x1B 530 531 // 532 // Constants and Structure definitions for "Get user Callback Options" command to follow here 533 // 534 535 // 536 // Below is Definitions for SOL Commands (Chapter 26) 537 // 538 539 // 540 // Definitions for SOL activating command 541 // 542 #define IPMI_TRANSPORT_SOL_ACTIVATING 0x20 543 544 // 545 // Constants and Structure definitions for "SOL activating" command to follow here 546 // 547 548 // 549 // Definitions for Set SOL Configuration Parameters command 550 // 551 #define IPMI_TRANSPORT_SET_SOL_CONFIG_PARAM 0x21 552 553 // 554 // Constants and Structure definitions for "Set SOL Configuration Parameters" command to follow here 555 // 556 557 // 558 // Definitions for Get SOL Configuration Parameters command 559 // 560 #define IPMI_TRANSPORT_GET_SOL_CONFIG_PARAM 0x22 561 562 // 563 // Constants and Structure definitions for "Get SOL Configuration Parameters" command to follow here 564 // 565 #pragma pack() 566 #endif 567