4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The definition for iSCSI Boot Firmware Table, it's defined in Microsoft's
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync iSCSI Boot Firmware Table(iBFT) as Defined in ACPI 3.0b Specification.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _ISCSI_BOOT_FIRMWARE_TABLE_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _ISCSI_BOOT_FIRMWARE_TABLE_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_REVISION 0x01
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_ALIGNMENT 8
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Structure Type/ID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_RESERVED_STRUCTURE_ID 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_ID 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_ID 2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_ID 3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_ID 4
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_EXTERNSIONS_STRUCTURE_ID 5
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// from the definition of IP_PREFIX_ORIGIN Enumeration in MSDN,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// not defined in Microsoft iBFT document.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef enum {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IpPrefixOriginOther = 0,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IpPrefixOriginManual,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IpPrefixOriginWellKnown,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IpPrefixOriginDhcp,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IpPrefixOriginRouterAdvertisement,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IpPrefixOriginUnchanged = 16
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} IP_PREFIX_VALUE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack(1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// iBF Table Header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Signature;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Length;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Revision;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Checksum;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 OemId[6];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 OemTableId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Reserved[24];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Common Header of Boot Firmware Table Structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 StructureId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Version;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Length;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Index;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Flags;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Control Structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Extensions;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 InitiatorOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 NIC0Offset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Target0Offset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 NIC1Offset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Target1Offset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_VERSION 0x1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_FLAG_BOOT_FAILOVER BIT0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Initiator Structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS ISnsServer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS SlpServer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS PrimaryRadiusServer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS SecondaryRadiusServer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 IScsiNameLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 IScsiNameOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_VERSION 0x1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BLOCK_VALID BIT0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BOOT_SELECTED BIT1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// NIC Structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS Ip;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 SubnetMaskPrefixLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Origin;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS Gateway;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS PrimaryDns;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS SecondaryDns;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS DhcpServer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 VLanTag;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Mac[6];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 PciLocation;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 HostNameLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 HostNameOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_VERSION 0x1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BLOCK_VALID BIT0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BOOT_SELECTED BIT1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_GLOBAL BIT2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Target Structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS Ip;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Port;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BootLun[8];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 CHAPType;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 NicIndex;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 IScsiNameLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 IScsiNameOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 CHAPNameLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 CHAPNameOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 CHAPSecretLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 CHAPSecretOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 ReverseCHAPNameLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 ReverseCHAPNameOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 ReverseCHAPSecretLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 ReverseCHAPSecretOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_VERSION 0x1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BLOCK_VALID BIT0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BOOT_SELECTED BIT1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_CHAP BIT2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_RCHAP BIT3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync