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