--- /dev/null
+/*++\r
+\r
+Copyright (c) 2007, Intel Corporation \r
+All rights reserved. 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
+\r
+Module Name:\r
+\r
+ IScsiBootFirmwareTable.h\r
+\r
+Abstract:\r
+\r
+ The definition for iSCSI Boot Firmware Table, it's defined in\r
+ Microsoft iBFT document.\r
+\r
+--*/\r
+\r
+#ifndef _ISCSI_BOOT_FIRMWARE_TABLE_H_\r
+#define _ISCSI_BOOT_FIRMWARE_TABLE_H_\r
+\r
+#include "Tiano.h"\r
+#include "Acpi3_0.h"\r
+\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_REVISION 0x01\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_ALIGNMENT 8\r
+\r
+enum {\r
+ EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_RESERVED_STRUCTURE_ID = 0,\r
+ EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_ID,\r
+ EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_ID,\r
+ EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_ID,\r
+ EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_ID,\r
+ EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_EXTERNSIONS_STRUCTURE_ID,\r
+};\r
+\r
+enum {\r
+ IpPrefixOriginOther = 0,\r
+ IpPrefixOriginManual,\r
+ IpPrefixOriginWellKnown,\r
+ IpPrefixOriginDhcp,\r
+ IpPrefixOriginRouterAdvertisement,\r
+ IpPrefixOriginUnchanged = 16\r
+};\r
+\r
+#pragma pack(1)\r
+\r
+typedef struct {\r
+ UINT32 Signature;\r
+ UINT32 Length;\r
+ UINT8 Revision;\r
+ UINT8 Checksum;\r
+ UINT8 OemId[6];\r
+ UINT64 OemTableId;\r
+ UINT8 Reserved[24];\r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER;\r
+\r
+typedef struct {\r
+ UINT8 StructureId;\r
+ UINT8 Version;\r
+ UINT16 Length;\r
+ UINT8 Index;\r
+ UINT8 Flags;\r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER;\r
+\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_VERSION 0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_FLAG_BOOT_FAILOVER 0x1\r
+\r
+typedef struct {\r
+ EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;\r
+ UINT16 Extensions;\r
+ UINT16 InitiatorOffset;\r
+ UINT16 NIC0Offset;\r
+ UINT16 Target0Offset;\r
+ UINT16 NIC1Offset;\r
+ UINT16 Target1Offset; \r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE;\r
+\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_VERSION 0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BLOCK_VALID 0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BOOT_SELECTED 0x2\r
+\r
+typedef struct {\r
+ EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;\r
+ EFI_IPv6_ADDRESS ISnsServer;\r
+ EFI_IPv6_ADDRESS SlpServer;\r
+ EFI_IPv6_ADDRESS PrimaryRadiusServer;\r
+ EFI_IPv6_ADDRESS SecondaryRadiusServer;\r
+ UINT16 IScsiNameLength;\r
+ UINT16 IScsiNameOffset;\r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE;\r
+\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_VERSION 0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BLOCK_VALID 0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BOOT_SELECTED 0x2\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_GLOBAL 0x4\r
+\r
+typedef struct {\r
+ EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;\r
+ EFI_IPv6_ADDRESS Ip;\r
+ UINT8 SubnetMaskPrefixLength;\r
+ UINT8 Origin;\r
+ EFI_IPv6_ADDRESS Gateway;\r
+ EFI_IPv6_ADDRESS PrimaryDns;\r
+ EFI_IPv6_ADDRESS SecondaryDns;\r
+ EFI_IPv6_ADDRESS DhcpServer;\r
+ UINT16 VLanTag;\r
+ UINT8 Mac[6];\r
+ UINT16 PciLocation;\r
+ UINT16 HostNameLength;\r
+ UINT16 HostNameOffset;\r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE;\r
+\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_VERSION 0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BLOCK_VALID 0x1\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BOOT_SELECTED 0x2\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_CHAP 0x4\r
+#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_RCHAP 0x8\r
+\r
+typedef struct {\r
+ EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;\r
+ EFI_IPv6_ADDRESS Ip;\r
+ UINT16 Port;\r
+ UINT8 BootLun[8];\r
+ UINT8 CHAPType;\r
+ UINT8 NicIndex;\r
+ UINT16 IScsiNameLength;\r
+ UINT16 IScsiNameOffset;\r
+ UINT16 CHAPNameLength;\r
+ UINT16 CHAPNameOffset;\r
+ UINT16 CHAPSecretLength;\r
+ UINT16 CHAPSecretOffset;\r
+ UINT16 ReverseCHAPNameLength;\r
+ UINT16 ReverseCHAPNameOffset;\r
+ UINT16 ReverseCHAPSecretLength;\r
+ UINT16 ReverseCHAPSecretOffset;\r
+} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE;\r
+\r
+#pragma pack()\r
+\r
+#endif\r
+\r