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