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