1 /** @file 2 IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1. 3 4 This file contains all NetFn App commands, including: 5 IPM Device "Global" Commands (Chapter 20) 6 Firmware Firewall & Command Discovery Commands (Chapter 21) 7 BMC Watchdog Timer Commands (Chapter 27) 8 IPMI Messaging Support Commands (Chapter 22) 9 RMCP+ Support and Payload Commands (Chapter 24) 10 11 See IPMI specification, Appendix G, Command Assignments 12 and Appendix H, Sub-function Assignments. 13 14 Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> 15 This program and the accompanying materials 16 are licensed and made available under the terms and conditions of the BSD License 17 which accompanies this distribution. The full text of the license may be found at 18 http://opensource.org/licenses/bsd-license.php 19 20 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 21 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 22 **/ 23 24 #ifndef _IPMI_NET_FN_APP_H_ 25 #define _IPMI_NET_FN_APP_H_ 26 27 #pragma pack(1) 28 // 29 // Net function definition for App command 30 // 31 #define IPMI_NETFN_APP 0x06 32 33 // 34 // Below is Definitions for IPM Device "Global" Commands (Chapter 20) 35 // 36 37 // 38 // Definitions for Get Device ID command 39 // 40 #define IPMI_APP_GET_DEVICE_ID 0x1 41 42 // 43 // Constants and Structure definitions for "Get Device ID" command to follow here 44 // 45 typedef struct { 46 UINT8 CompletionCode; 47 UINT8 DeviceId; 48 UINT8 DeviceRevision : 4; 49 UINT8 Reserved : 3; 50 UINT8 DeviceSdr : 1; 51 UINT8 MajorFirmwareRev : 7; 52 UINT8 UpdateMode : 1; 53 UINT8 MinorFirmwareRev; 54 UINT8 SpecificationVersion; 55 UINT8 SensorDeviceSupport : 1; 56 UINT8 SdrRepositorySupport : 1; 57 UINT8 SelDeviceSupport : 1; 58 UINT8 FruInventorySupport : 1; 59 UINT8 IpmbMessageReceiver : 1; 60 UINT8 IpmbMessageGenerator : 1; 61 UINT8 BridgeSupport : 1; 62 UINT8 ChassisSupport : 1; 63 UINT8 ManufacturerId[3]; 64 UINT16 ProductId; 65 UINT32 AuxFirmwareRevInfo; 66 } IPMI_GET_DEVICE_ID_RESPONSE; 67 68 69 // 70 // Definitions for Cold Reset command 71 // 72 #define IPMI_APP_COLD_RESET 0x2 73 74 // 75 // Constants and Structure definitions for "Cold Reset" command to follow here 76 // 77 78 // 79 // Definitions for Warm Reset command 80 // 81 #define IPMI_APP_WARM_RESET 0x3 82 83 // 84 // Constants and Structure definitions for "Warm Reset" command to follow here 85 // 86 87 // 88 // Definitions for Get Self Results command 89 // 90 #define IPMI_APP_GET_SELFTEST_RESULTS 0x4 91 92 // 93 // Constants and Structure definitions for "Get Self Test Results" command to follow here 94 // 95 typedef struct { 96 UINT8 CompletionCode; 97 UINT8 Result; 98 UINT8 Param; 99 } IPMI_SELF_TEST_RESULT_RESPONSE; 100 101 #define IPMI_APP_SELFTEST_NO_ERROR 0x55 102 #define IPMI_APP_SELFTEST_NOT_IMPLEMENTED 0x56 103 #define IPMI_APP_SELFTEST_ERROR 0x57 104 #define IPMI_APP_SELFTEST_FATAL_HW_ERROR 0x58 105 #define IPMI_APP_SELFTEST_INACCESSIBLE_SEL 0x80 106 #define IPMI_APP_SELFTEST_INACCESSIBLE_SDR 0x40 107 #define IPMI_APP_SELFTEST_INACCESSIBLE_FRU 0x20 108 #define IPMI_APP_SELFTEST_IPMB_SIGNAL_FAIL 0x10 109 #define IPMI_APP_SELFTEST_SDR_REPOSITORY_EMPTY 0x08 110 #define IPMI_APP_SELFTEST_FRU_CORRUPT 0x04 111 #define IPMI_APP_SELFTEST_FW_BOOTBLOCK_CORRUPT 0x02 112 #define IPMI_APP_SELFTEST_FW_CORRUPT 0x01 113 114 // 115 // Definitions for Manufacturing Test ON command 116 // 117 #define IPMI_APP_MANUFACTURING_TEST_ON 0x5 118 119 // 120 // Constants and Structure definitions for "Manufacturing Test ON" command to follow here 121 // 122 123 // 124 // Definitions for Set ACPI Power State command 125 // 126 #define IPMI_APP_SET_ACPI_POWERSTATE 0x6 127 128 // 129 // Constants and Structure definitions for "Set ACPI Power State" command to follow here 130 // 131 typedef struct { 132 UINT8 AcpiSystemPowerState : 7; 133 UINT8 AcpiSystemStateChange : 1; 134 UINT8 AcpiDevicePowerState : 7; 135 UINT8 AcpiDeviceStateChange : 1; 136 } IPMI_SET_ACPI_POWER_STATE_REQUEST; 137 138 // 139 // Definitions for Get ACPI Power State command 140 // 141 #define IPMI_APP_GET_ACPI_POWERSTATE 0x7 142 143 // 144 // Constants and Structure definitions for "Get ACPI Power State" command to follow here 145 // 146 147 // 148 // Definitions for Get Device GUID command 149 // 150 #define IPMI_APP_GET_DEVICE_GUID 0x8 151 152 // 153 // Constants and Structure definitions for "Get Device GUID" command to follow here 154 // 155 // 156 // Message structure definition for "Get Device Guid" IPMI command 157 // 158 typedef struct { 159 UINT8 CompletionCode; 160 UINT8 Guid[16]; 161 } IPMI_GET_DEVICE_GUID_RESPONSE; 162 163 // 164 // Below is Definitions for BMC Watchdog Timer Commands (Chapter 27) 165 // 166 167 // 168 // Definitions for Reset WatchDog Timer command 169 // 170 #define IPMI_APP_RESET_WATCHDOG_TIMER 0x22 171 172 // 173 // Constants and Structure definitions for "Reset WatchDog Timer" command to follow here 174 // 175 typedef struct { 176 UINT8 TimerUse : 3; 177 UINT8 Reserved : 3; 178 UINT8 TimerRunning : 1; 179 UINT8 TimerUseExpirationFlagLog : 1; 180 } IPMI_WATCHDOG_TIMER_USE; 181 182 // 183 // Definitions for Set WatchDog Timer command 184 // 185 #define IPMI_APP_SET_WATCHDOG_TIMER 0x24 186 187 // 188 // Constants and Structure definitions for "Set WatchDog Timer" command to follow here 189 // 190 typedef struct { 191 IPMI_WATCHDOG_TIMER_USE TimerUse; 192 UINT8 TimerActions; 193 UINT8 PretimeoutInterval; 194 UINT8 TimerUseExpirationFlagsClear; 195 UINT16 InitialCountdownValue; 196 } IPMI_SET_WATCHDOG_TIMER_REQUEST; 197 198 // 199 // Definitions for Get WatchDog Timer command 200 // 201 #define IPMI_APP_GET_WATCHDOG_TIMER 0x25 202 203 // 204 // Constants and Structure definitions for "Get WatchDog Timer" command to follow here 205 // 206 typedef struct { 207 UINT8 CompletionCode; 208 IPMI_WATCHDOG_TIMER_USE TimerUse; 209 UINT8 TimerActions; 210 UINT8 PretimeoutInterval; 211 UINT8 TimerUseExpirationFlagsClear; 212 UINT16 InitialCountdownValue; 213 UINT16 PresentCountdownValue; 214 } IPMI_GET_WATCHDOG_TIMER_RESPONSE; 215 216 // 217 // Below is Definitions for IPMI Messaging Support Commands (Chapter 22) 218 // 219 220 // 221 // Definitions for Set BMC Global Enables command 222 // 223 #define IPMI_APP_SET_BMC_GLOBAL_ENABLES 0x2E 224 225 // 226 // Constants and Structure definitions for "Set BMC Global Enables " command to follow here 227 // 228 229 // 230 // Definitions for Get BMC Global Enables command 231 // 232 #define IPMI_APP_GET_BMC_GLOBAL_ENABLES 0x2F 233 234 // 235 // Constants and Structure definitions for "Get BMC Global Enables " command to follow here 236 // 237 238 // 239 // Definitions for Clear Message Flags command 240 // 241 #define IPMI_APP_CLEAR_MESSAGE_FLAGS 0x30 242 243 // 244 // Constants and Structure definitions for "Clear Message Flags" command to follow here 245 // 246 247 // 248 // Definitions for Get Message Flags command 249 // 250 #define IPMI_APP_GET_MESSAGE_FLAGS 0x31 251 252 // 253 // Constants and Structure definitions for "Get Message Flags" command to follow here 254 // 255 256 // 257 // Definitions for Enable Message Channel Receive command 258 // 259 #define IPMI_APP_ENABLE_MESSAGE_CHANNEL_RECEIVE 0x32 260 261 // 262 // Constants and Structure definitions for "Enable Message Channel Receive" command to follow here 263 // 264 265 // 266 // Definitions for Get Message command 267 // 268 #define IPMI_APP_GET_MESSAGE 0x33 269 270 // 271 // Constants and Structure definitions for "Get Message" command to follow here 272 // 273 274 // 275 // Definitions for Send Message command 276 // 277 #define IPMI_APP_SEND_MESSAGE 0x34 278 279 // 280 // Constants and Structure definitions for "Send Message" command to follow here 281 // 282 283 // 284 // Definitions for Read Event Message Buffer command 285 // 286 #define IPMI_APP_READ_EVENT_MSG_BUFFER 0x35 287 288 // 289 // Constants and Structure definitions for "Read Event Message Buffer" command to follow here 290 // 291 292 // 293 // Definitions for Get BT Interface Capabilities command 294 // 295 #define IPMI_APP_GET_BT_INTERFACE_CAPABILITY 0x36 296 297 // 298 // Constants and Structure definitions for "Get BT Interface Capabilities" command to follow here 299 // 300 301 // 302 // Definitions for Get System GUID command 303 // 304 #define IPMI_APP_GET_SYSTEM_GUID 0x37 305 306 // 307 // Constants and Structure definitions for "Get System GUID" command to follow here 308 // 309 310 // 311 // Definitions for Get Channel Authentication Capabilities command 312 // 313 #define IPMI_APP_GET_CHANNEL_AUTHENTICATION_CAPABILITIES 0x38 314 315 // 316 // Constants and Structure definitions for "Get Channel Authentication Capabilities" command to follow here 317 // 318 319 // 320 // Definitions for Get Session Challenge command 321 // 322 #define IPMI_APP_GET_SESSION_CHALLENGE 0x39 323 324 // 325 // Constants and Structure definitions for "Get Session Challenge" command to follow here 326 // 327 328 // 329 // Definitions for Activate Session command 330 // 331 #define IPMI_APP_ACTIVATE_SESSION 0x3A 332 333 // 334 // Constants and Structure definitions for "Activate Session" command to follow here 335 // 336 337 // 338 // Definitions for Set Session Privelege Level command 339 // 340 #define IPMI_APP_SET_SESSION_PRIVELEGE_LEVEL 0x3B 341 342 // 343 // Constants and Structure definitions for "Set Session Privelege Level" command to follow here 344 // 345 346 // 347 // Definitions for Close Session command 348 // 349 #define IPMI_APP_CLOSE_SESSION 0x3C 350 351 // 352 // Constants and Structure definitions for "Close Session" command to follow here 353 // 354 355 // 356 // Definitions for Get Session Info command 357 // 358 #define IPMI_APP_GET_SESSION_INFO 0x3D 359 360 // 361 // Constants and Structure definitions for "Get Session Info" command to follow here 362 // 363 364 // 365 // Definitions for Get Auth Code command 366 // 367 #define IPMI_APP_GET_AUTHCODE 0x3F 368 369 // 370 // Constants and Structure definitions for "Get AuthCode" command to follow here 371 // 372 373 // 374 // Definitions for Set Channel Access command 375 // 376 #define IPMI_APP_SET_CHANNEL_ACCESS 0x40 377 378 // 379 // Constants and Structure definitions for "Set Channel Access" command to follow here 380 // 381 382 // 383 // Definitions for Get Channel Access command 384 // 385 #define IPMI_APP_GET_CHANNEL_ACCESS 0x41 386 387 // 388 // Constants and Structure definitions for "Get Channel Access" command to follow here 389 // 390 typedef struct { 391 UINT8 ChannelNo : 4; 392 UINT8 Reserve1 : 4; 393 UINT8 Reserve2 : 6; 394 UINT8 MemoryType : 2; 395 } IPMI_GET_CHANNEL_ACCESS_REQUEST; 396 397 typedef struct { 398 UINT8 CompletionCode; 399 UINT8 AccessMode : 3; 400 UINT8 UserLevelAuthEnabled : 1; 401 UINT8 MessageAuthEnable : 1; 402 UINT8 Alert : 1; 403 UINT8 Reserve1 : 2; 404 UINT8 ChannelPriviledgeLimit : 4; 405 UINT8 Reserve2 : 4; 406 } IPMI_GET_CHANNEL_ACCESS_RESPONSE; 407 408 // 409 // Definitions for Get Channel Info command 410 // 411 #define IPMI_APP_GET_CHANNEL_INFO 0x42 412 413 // 414 // Constants and Structure definitions for "Get Channel Info" command to follow here 415 // 416 typedef struct { 417 UINT8 CompletionCode; 418 UINT8 ChannelNo : 4; 419 UINT8 Reserve1 : 4; 420 UINT8 ChannelMediumType : 7; 421 UINT8 Reserve2 : 1; 422 UINT8 ChannelProtocolType : 5; 423 UINT8 Reserve3 : 3; 424 UINT8 ActiveSessionCount : 6; 425 UINT8 SessionSupport : 2; 426 UINT8 VendorId[3]; 427 UINT16 AuxChannelInfo; 428 } IPMI_GET_CHANNEL_INFO_RESPONSE; 429 430 // 431 // Definitions for Get Channel Info command 432 // 433 #define IPMI_APP_GET_CHANNEL_INFO 0x42 434 435 // 436 // Constants and Structure definitions for "Get Channel Info" command to follow here 437 // 438 439 // 440 // Definitions for Set User Access command 441 // 442 #define IPMI_APP_SET_USER_ACCESS 0x43 443 444 // 445 // Constants and Structure definitions for "Set User Access" command to follow here 446 // 447 448 // 449 // Definitions for Get User Access command 450 // 451 #define IPMI_APP_GET_USER_ACCESS 0x44 452 453 // 454 // Constants and Structure definitions for "Get User Access" command to follow here 455 // 456 457 // 458 // Definitions for Set User Name command 459 // 460 #define IPMI_APP_SET_USER_NAME 0x45 461 462 // 463 // Constants and Structure definitions for "Set User Name" command to follow here 464 // 465 466 // 467 // Definitions for Get User Name command 468 // 469 #define IPMI_APP_GET_USER_NAME 0x46 470 471 // 472 // Constants and Structure definitions for "Get User Name" command to follow here 473 // 474 475 // 476 // Definitions for Set User Password command 477 // 478 #define IPMI_APP_SET_USER_PASSWORD 0x47 479 480 // 481 // Constants and Structure definitions for "Set User Password" command to follow here 482 // 483 484 // 485 // Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24) 486 // 487 488 // 489 // Definitions for Activate Payload command 490 // 491 #define IPMI_APP_ACTIVATE_PAYLOAD 0x48 492 493 // 494 // Constants and Structure definitions for "Activate Payload" command to follow here 495 // 496 497 // 498 // Definitions for De-Activate Payload command 499 // 500 #define IPMI_APP_DEACTIVATE_PAYLOAD 0x49 501 502 // 503 // Constants and Structure definitions for "DeActivate Payload" command to follow here 504 // 505 506 // 507 // Definitions for Get Payload activation Status command 508 // 509 #define IPMI_APP_GET_PAYLOAD_ACTIVATION_STATUS 0x4a 510 511 // 512 // Constants and Structure definitions for "Get Payload activation Status" command to follow here 513 // 514 515 // 516 // Definitions for Get Payload Instance Info command 517 // 518 #define IPMI_APP_GET_PAYLOAD_INSTANCE_INFO 0x4b 519 520 // 521 // Constants and Structure definitions for "Get Payload Instance Info" command to follow here 522 // 523 524 // 525 // Definitions for Set User Payload Access command 526 // 527 #define IPMI_APP_SET_USER_PAYLOAD_ACCESS 0x4C 528 529 // 530 // Constants and Structure definitions for "Set User Payload Access" command to follow here 531 // 532 533 // 534 // Definitions for Get User Payload Access command 535 // 536 #define IPMI_APP_GET_USER_PAYLOAD_ACCESS 0x4D 537 538 // 539 // Constants and Structure definitions for "Get User Payload Access" command to follow here 540 // 541 542 // 543 // Definitions for Get Channel Payload Support command 544 // 545 #define IPMI_APP_GET_CHANNEL_PAYLOAD_SUPPORT 0x4E 546 547 // 548 // Constants and Structure definitions for "Get Channel Payload Support" command to follow here 549 // 550 551 // 552 // Definitions for Get Channel Payload Version command 553 // 554 #define IPMI_APP_GET_CHANNEL_PAYLOAD_VERSION 0x4F 555 556 // 557 // Constants and Structure definitions for "Get Channel Payload Version" command to follow here 558 // 559 560 // 561 // Definitions for Get Channel OEM Payload Info command 562 // 563 #define IPMI_APP_GET_CHANNEL_OEM_PAYLOAD_INFO 0x50 564 565 // 566 // Constants and Structure definitions for "Get Channel OEM Payload Info" command to follow here 567 // 568 569 // 570 // Definitions for Master Write-Read command 571 // 572 #define IPMI_APP_MASTER_WRITE_READ 0x52 573 574 // 575 // Constants and Structure definitions for "Master Write Read" command to follow here 576 // 577 578 // 579 // Definitions for Get Channel Cipher Suites command 580 // 581 #define IPMI_APP_GET_CHANNEL_CIPHER_SUITES 0x54 582 583 // 584 // Constants and Structure definitions for "Get Channel Cipher Suites" command to follow here 585 // 586 587 // 588 // Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24, Section 3) 589 // 590 591 // 592 // Definitions for Suspend-Resume Payload Encryption command 593 // 594 #define IPMI_APP_SUSPEND_RESUME_PAYLOAD_ENCRYPTION 0x55 595 596 // 597 // Constants and Structure definitions for "Suspend-Resume Payload Encryption" command to follow here 598 // 599 600 // 601 // Below is Definitions for IPMI Messaging Support Commands (Chapter 22, Section 25 and 9) 602 // 603 604 // 605 // Definitions for Set Channel Security Keys command 606 // 607 #define IPMI_APP_SET_CHANNEL_SECURITY_KEYS 0x56 608 609 // 610 // Constants and Structure definitions for "Set Channel Security Keys" command to follow here 611 // 612 613 // 614 // Definitions for Get System Interface Capabilities command 615 // 616 #define IPMI_APP_GET_SYSTEM_INTERFACE_CAPABILITIES 0x57 617 618 // 619 // Constants and Structure definitions for "Get System Interface Capabilities" command to follow here 620 // 621 622 #pragma pack() 623 #endif 624