]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/IndustryStandard/IScsiBootFirmwareTable.h
1. refine the comments
[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 - 2008, Intel Corporation
6 All rights reserved. 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 #include "Acpi30.h"
20
21 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_REVISION 0x01
22 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_ALIGNMENT 8
23
24 ///
25 /// Structure Type/ID
26 ///
27 typedef enum {
28 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_RESERVED_STRUCTURE_ID = 0,
29 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_ID,
30 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_ID,
31 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_ID,
32 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_ID,
33 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_EXTERNSIONS_STRUCTURE_ID
34 } EFI_ACPI_ISCSI_ID_DEFINITIONS;
35
36 ///
37 /// from the definition of IP_PREFIX_ORIGIN Enumeration in MSDN,
38 /// not defined in Microsoft iBFT document.
39 ///
40 typedef enum {
41 IpPrefixOriginOther = 0,
42 IpPrefixOriginManual,
43 IpPrefixOriginWellKnown,
44 IpPrefixOriginDhcp,
45 IpPrefixOriginRouterAdvertisement,
46 IpPrefixOriginUnchanged = 16
47 } IP_PREFIX_VALUE;
48
49 #pragma pack(1)
50
51 ///
52 /// iBF Table Header
53 ///
54 typedef struct {
55 UINT32 Signature;
56 UINT32 Length;
57 UINT8 Revision;
58 UINT8 Checksum;
59 UINT8 OemId[6];
60 UINT64 OemTableId;
61 UINT8 Reserved[24];
62 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER;
63
64 ///
65 /// Common Header of Boot Firmware Table Structure
66 ///
67 typedef struct {
68 UINT8 StructureId;
69 UINT8 Version;
70 UINT16 Length;
71 UINT8 Index;
72 UINT8 Flags;
73 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER;
74
75 ///
76 /// Control Structure
77 ///
78 typedef struct {
79 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;
80 UINT16 Extensions;
81 UINT16 InitiatorOffset;
82 UINT16 NIC0Offset;
83 UINT16 Target0Offset;
84 UINT16 NIC1Offset;
85 UINT16 Target1Offset;
86 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE;
87
88 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_VERSION 0x1
89
90 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_FLAG_BOOT_FAILOVER BIT0
91
92 ///
93 /// Initiator Structure
94 ///
95 typedef struct {
96 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;
97 EFI_IPv6_ADDRESS ISnsServer;
98 EFI_IPv6_ADDRESS SlpServer;
99 EFI_IPv6_ADDRESS PrimaryRadiusServer;
100 EFI_IPv6_ADDRESS SecondaryRadiusServer;
101 UINT16 IScsiNameLength;
102 UINT16 IScsiNameOffset;
103 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE;
104
105 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_VERSION 0x1
106
107 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BLOCK_VALID BIT0
108 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BOOT_SELECTED BIT1
109
110 ///
111 /// NIC Structure
112 ///
113 typedef struct {
114 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;
115 EFI_IPv6_ADDRESS Ip;
116 UINT8 SubnetMaskPrefixLength;
117 UINT8 Origin;
118 EFI_IPv6_ADDRESS Gateway;
119 EFI_IPv6_ADDRESS PrimaryDns;
120 EFI_IPv6_ADDRESS SecondaryDns;
121 EFI_IPv6_ADDRESS DhcpServer;
122 UINT16 VLanTag;
123 UINT8 Mac[6];
124 UINT16 PciLocation;
125 UINT16 HostNameLength;
126 UINT16 HostNameOffset;
127 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE;
128
129 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_VERSION 0x1
130
131 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BLOCK_VALID BIT0
132 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BOOT_SELECTED BIT1
133 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_GLOBAL BIT2
134
135 ///
136 /// Target Structure
137 ///
138 typedef struct {
139 EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER Header;
140 EFI_IPv6_ADDRESS Ip;
141 UINT16 Port;
142 UINT8 BootLun[8];
143 UINT8 CHAPType;
144 UINT8 NicIndex;
145 UINT16 IScsiNameLength;
146 UINT16 IScsiNameOffset;
147 UINT16 CHAPNameLength;
148 UINT16 CHAPNameOffset;
149 UINT16 CHAPSecretLength;
150 UINT16 CHAPSecretOffset;
151 UINT16 ReverseCHAPNameLength;
152 UINT16 ReverseCHAPNameOffset;
153 UINT16 ReverseCHAPSecretLength;
154 UINT16 ReverseCHAPSecretOffset;
155 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE;
156
157 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_VERSION 0x1
158
159 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BLOCK_VALID BIT0
160 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BOOT_SELECTED BIT1
161 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_CHAP BIT2
162 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_RCHAP BIT3
163
164 #pragma pack()
165
166 #endif
167