]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/IScsiBootFirmwareTable.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / IScsiBootFirmwareTable.h
CommitLineData
e3b1115e 1/** @file\r
a2461f6b 2 The definition for iSCSI Boot Firmware Table, it's defined in Microsoft's\r
9095d37b 3 iSCSI Boot Firmware Table(iBFT) as Defined in ACPI 3.0b Specification.\r
c311f86b 4\r
9095d37b 5 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
9344f092 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
c311f86b 7\r
e3b1115e 8**/\r
9\r
10#ifndef _ISCSI_BOOT_FIRMWARE_TABLE_H_\r
11#define _ISCSI_BOOT_FIRMWARE_TABLE_H_\r
12\r
e3b1115e 13#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_REVISION 0x01\r
14#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_ALIGNMENT 8\r
15\r
000f6a28 16///\r
17/// Structure Type/ID\r
18///\r
1c455d59 19#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_RESERVED_STRUCTURE_ID 0\r
20#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_ID 1\r
21#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_ID 2\r
22#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_ID 3\r
23#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_ID 4\r
24#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_EXTERNSIONS_STRUCTURE_ID 5\r
e3b1115e 25\r
000f6a28 26///\r
27/// from the definition of IP_PREFIX_ORIGIN Enumeration in MSDN,\r
28/// not defined in Microsoft iBFT document.\r
29///\r
42eedea9 30typedef enum {\r
e3b1115e 31 IpPrefixOriginOther = 0,\r
32 IpPrefixOriginManual,\r
33 IpPrefixOriginWellKnown,\r
34 IpPrefixOriginDhcp,\r
35 IpPrefixOriginRouterAdvertisement,\r
36 IpPrefixOriginUnchanged = 16\r
42eedea9 37} IP_PREFIX_VALUE;\r
e3b1115e 38\r
766f4bc1 39#pragma pack(1)\r
40\r
000f6a28 41///\r
42/// iBF Table Header\r
43///\r
e3b1115e 44typedef struct {\r
45 UINT32 Signature;\r
46 UINT32 Length;\r
47 UINT8 Revision;\r
48 UINT8 Checksum;\r
49 UINT8 OemId[6];\r
50 UINT64 OemTableId;\r
51 UINT8 Reserved[24];\r
52} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER;\r
53\r
000f6a28 54///\r
9095d37b 55/// Common Header of Boot Firmware Table Structure\r
000f6a28 56///\r
e3b1115e 57typedef struct {\r
58 UINT8 StructureId;\r
59 UINT8 Version;\r
60 UINT16 Length;\r
61 UINT8 Index;\r
62 UINT8 Flags;\r
63} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER;\r
64\r
000f6a28 65///\r
66/// Control Structure\r
67///\r
e3b1115e 68typedef struct {\r
69 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;\r
70 UINT16 Extensions;\r
71 UINT16 InitiatorOffset;\r
72 UINT16 NIC0Offset;\r
73 UINT16 Target0Offset;\r
74 UINT16 NIC1Offset;\r
9095d37b 75 UINT16 Target1Offset;\r
e3b1115e 76} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE;\r
77\r
a2461f6b 78#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_VERSION 0x1\r
79\r
80#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_FLAG_BOOT_FAILOVER BIT0\r
e3b1115e 81\r
000f6a28 82///\r
83/// Initiator Structure\r
84///\r
e3b1115e 85typedef struct {\r
86 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;\r
87 EFI_IPv6_ADDRESS ISnsServer;\r
88 EFI_IPv6_ADDRESS SlpServer;\r
89 EFI_IPv6_ADDRESS PrimaryRadiusServer;\r
90 EFI_IPv6_ADDRESS SecondaryRadiusServer;\r
91 UINT16 IScsiNameLength;\r
92 UINT16 IScsiNameOffset;\r
93} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE;\r
94\r
a2461f6b 95#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_VERSION 0x1\r
96\r
9095d37b
LG
97#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BLOCK_VALID BIT0\r
98#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BOOT_SELECTED BIT1\r
e3b1115e 99\r
000f6a28 100///\r
101/// NIC Structure\r
102///\r
e3b1115e 103typedef struct {\r
104 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;\r
105 EFI_IPv6_ADDRESS Ip;\r
106 UINT8 SubnetMaskPrefixLength;\r
107 UINT8 Origin;\r
108 EFI_IPv6_ADDRESS Gateway;\r
109 EFI_IPv6_ADDRESS PrimaryDns;\r
110 EFI_IPv6_ADDRESS SecondaryDns;\r
111 EFI_IPv6_ADDRESS DhcpServer;\r
112 UINT16 VLanTag;\r
113 UINT8 Mac[6];\r
114 UINT16 PciLocation;\r
115 UINT16 HostNameLength;\r
116 UINT16 HostNameOffset;\r
117} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE;\r
118\r
a2461f6b 119#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_VERSION 0x1\r
120\r
121#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BLOCK_VALID BIT0\r
122#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BOOT_SELECTED BIT1\r
123#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_GLOBAL BIT2\r
e3b1115e 124\r
000f6a28 125///\r
126/// Target Structure\r
127///\r
e3b1115e 128typedef struct {\r
129 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;\r
130 EFI_IPv6_ADDRESS Ip;\r
131 UINT16 Port;\r
132 UINT8 BootLun[8];\r
133 UINT8 CHAPType;\r
134 UINT8 NicIndex;\r
135 UINT16 IScsiNameLength;\r
136 UINT16 IScsiNameOffset;\r
137 UINT16 CHAPNameLength;\r
138 UINT16 CHAPNameOffset;\r
139 UINT16 CHAPSecretLength;\r
140 UINT16 CHAPSecretOffset;\r
141 UINT16 ReverseCHAPNameLength;\r
142 UINT16 ReverseCHAPNameOffset;\r
143 UINT16 ReverseCHAPSecretLength;\r
144 UINT16 ReverseCHAPSecretOffset;\r
145} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE;\r
146\r
a2461f6b 147#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_VERSION 0x1\r
148\r
149#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BLOCK_VALID BIT0\r
150#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BOOT_SELECTED BIT1\r
151#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_CHAP BIT2\r
152#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_RCHAP BIT3\r
000f6a28 153\r
0e0fb74a
FS
154#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_CHAP_TYPE_NO_CHAP 0\r
155#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_CHAP_TYPE_CHAP 1\r
156#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_CHAP_TYPE_MUTUAL_CHAP 2\r
157\r
766f4bc1 158#pragma pack()\r
e3b1115e 159\r
160#endif\r
161\r