]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h
NetworkPkg: Add check logic for iSCSI driver.
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiConfigNVDataStruc.h
CommitLineData
4c5a5e0c 1/** @file\r
2 Define NVData structures used by the iSCSI configuration component.\r
3\r
eabc6e59 4Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>\r
4c5a5e0c 5This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef _ISCSI_NVDATASTRUC_H_\r
16#define _ISCSI_NVDATASTRUC_H_\r
17\r
9bdc6592 18#include <Guid/IScsiConfigHii.h>\r
4c5a5e0c 19\r
20#define VAR_EQ_TEST_NAME 0x100\r
21#define CONFIGURATION_VARSTORE_ID 0x6666\r
22\r
23#define FORMID_MAIN_FORM 1\r
24#define FORMID_MAC_FORM 2\r
25#define FORMID_ATTEMPT_FORM 3\r
26#define FORMID_ORDER_FORM 4\r
27#define FORMID_DELETE_FORM 5\r
28\r
8d1f5e04
ZL
29#define ISCSI_MAX_ATTEMPTS_NUM FixedPcdGet8 (PcdMaxIScsiAttemptNumber)\r
30\r
4c5a5e0c 31#define ISCSI_NAME_IFR_MIN_SIZE 4\r
32#define ISCSI_NAME_IFR_MAX_SIZE 223\r
33#define ISCSI_NAME_MAX_SIZE 224\r
34\r
8d1f5e04
ZL
35#define ATTEMPT_NAME_LIST_SIZE 96\r
36#define ATTEMPT_NAME_SIZE 12\r
4c5a5e0c 37\r
38#define CONNECT_MIN_RETRY 0\r
39#define CONNECT_MAX_RETRY 16\r
40\r
41#define CONNECT_MIN_TIMEOUT 100\r
42#define CONNECT_MAX_TIMEOUT 20000\r
43#define CONNECT_DEFAULT_TIMEOUT 1000\r
44\r
8d1f5e04
ZL
45#define ISCSI_ACTIVE_DISABLED 0\r
46#define ISCSI_ACTIVE_ENABLED 1\r
4c5a5e0c 47\r
48#define ISCSI_DISABLED 0\r
49#define ISCSI_ENABLED 1\r
50#define ISCSI_ENABLED_FOR_MPIO 2\r
51\r
52#define IP_MODE_IP4 0\r
53#define IP_MODE_IP6 1\r
54#define IP_MODE_AUTOCONFIG 2\r
55\r
56#define ISCSI_AUTH_TYPE_NONE 0\r
57#define ISCSI_AUTH_TYPE_CHAP 1\r
58#define ISCSI_AUTH_TYPE_KRB 2\r
59\r
60#define IP4_MIN_SIZE 7\r
61#define IP4_MAX_SIZE 15\r
62#define IP4_STR_MAX_SIZE 16\r
63\r
64//\r
65// Macros used for an IPv4 or an IPv6 address.\r
66//\r
67#define IP_MIN_SIZE 2\r
68#define IP_MAX_SIZE 39\r
69#define IP_STR_MAX_SIZE 40\r
70\r
71#define LUN_MIN_SIZE 1\r
72#define LUN_MAX_SIZE 20\r
8d1f5e04 73#define ISCSI_LUN_STR_MAX_LEN 21\r
4c5a5e0c 74\r
99e5617b
FS
75#define ISCSI_CHAP_UNI 0\r
76#define ISCSI_CHAP_MUTUAL 1\r
4c5a5e0c 77\r
78#define TARGET_PORT_MIN_NUM 0\r
79#define TARGET_PORT_MAX_NUM 65535\r
80#define LABEL_END 0xffff\r
81\r
82#define KEY_INITIATOR_NAME 0x101\r
83#define KEY_DHCP_ENABLE 0x102\r
84#define KEY_LOCAL_IP 0x103\r
85#define KEY_SUBNET_MASK 0x104\r
86#define KEY_GATE_WAY 0x105\r
87#define KEY_TARGET_IP 0x106\r
88#define KEY_CHAP_NAME 0x107\r
89#define KEY_CHAP_SECRET 0x108\r
90#define KEY_REVERSE_CHAP_NAME 0x109\r
91#define KEY_REVERSE_CHAP_SECRET 0x10a\r
92#define KEY_SAVE_CHANGES 0x10b\r
93#define KEY_TARGET_NAME 0x10c\r
94#define KEY_BOOT_LUN 0x10d\r
95\r
96#define KEY_ADD_ATTEMPT 0x10e\r
97#define KEY_SAVE_ATTEMPT_CONFIG 0x10f\r
98#define KEY_ORDER_ATTEMPT_CONFIG 0x110\r
99#define KEY_SAVE_ORDER_CHANGES 0x111\r
100#define KEY_IGNORE_ORDER_CHANGES 0x112\r
101#define KEY_ATTEMPT_NAME 0x113\r
102#define KEY_SAVE_DELETE_ATTEMPT 0x114\r
103#define KEY_IGNORE_DELETE_ATTEMPT 0x115\r
104#define KEY_DELETE_ATTEMPT 0x116\r
105\r
4c5a5e0c 106#define KEY_IP_MODE 0x11c\r
107#define KEY_AUTH_TYPE 0x11d\r
108#define KEY_CONFIG_ISID 0x11e\r
109\r
110#define ATTEMPT_ENTRY_LABEL 0x9000\r
111#define KEY_ATTEMPT_ENTRY_BASE 0xa000\r
112#define KEY_DE_ATTEMPT_ENTRY_BASE 0xb000\r
113\r
114#define KEY_DEVICE_ENTRY_BASE 0x1000\r
115#define KEY_MAC_ENTRY_BASE 0x2000\r
116#define MAC_ENTRY_LABEL 0x3000\r
117#define ORDER_ENTRY_LABEL 0x4000\r
118#define DELETE_ENTRY_LABEL 0x5000\r
8d1f5e04 119#define KEYWORD_ENTRY_LABEL 0x6000\r
4c5a5e0c 120#define CONFIG_OPTION_OFFSET 0x9000\r
121\r
4c5a5e0c 122#define ISCSI_CHAP_SECRET_MIN_LEN 12\r
123#define ISCSI_CHAP_SECRET_MAX_LEN 16\r
124//\r
125// ISCSI_CHAP_SECRET_STORAGE = ISCSI_CHAP_SECRET_MAX_LEN + sizeof (NULL-Terminator)\r
126//\r
8d1f5e04
ZL
127#define ISCSI_CHAP_SECRET_STORAGE 17\r
128\r
129#define ISCSI_CHAP_NAME_MAX_LEN 126\r
130#define ISCSI_CHAP_NAME_STORAGE 127\r
4c5a5e0c 131\r
132#define KERBEROS_SECRET_MIN_LEN 12\r
133#define KERBEROS_SECRET_MAX_LEN 16\r
134#define KERBEROS_SECRET_STORAGE 17\r
135#define KERBEROS_NAME_MAX_LEN 96\r
136#define KERBEROS_KDC_PORT_MIN_NUM 0\r
137#define KERBEROS_KDC_PORT_MAX_NUM 65535\r
138\r
139#define ISID_CONFIGURABLE_MIN_LEN 6\r
140#define ISID_CONFIGURABLE_MAX_LEN 12\r
141#define ISID_CONFIGURABLE_STORAGE 13\r
142\r
8d1f5e04
ZL
143//\r
144// sizeof (EFI_MAC_ADDRESS) * 3\r
145//\r
146#define ISCSI_MAX_MAC_STRING_LEN 96\r
147\r
eabc6e59
ZL
148///\r
149/// Macro used for target Url.\r
150///\r
151#define ISCSI_TARGET_URI_MIN_SIZE 0\r
152#define ISCSI_TARGET_URI_MAX_SIZE 255\r
153\r
4c5a5e0c 154#pragma pack(1)\r
8d1f5e04
ZL
155\r
156//\r
157// Used by keyword.\r
158//\r
159typedef struct {\r
160 CHAR16 ISCSIIsId[ISID_CONFIGURABLE_STORAGE];\r
161 CHAR16 ISCSIInitiatorIpAddress[IP4_STR_MAX_SIZE];\r
162 CHAR16 ISCSIInitiatorNetmask[IP4_STR_MAX_SIZE];\r
163 CHAR16 ISCSIInitiatorGateway[IP4_STR_MAX_SIZE];\r
164 CHAR16 ISCSITargetName[ISCSI_NAME_MAX_SIZE];\r
b28bf414 165 CHAR16 ISCSITargetIpAddress[ISCSI_TARGET_URI_MAX_SIZE];\r
8d1f5e04
ZL
166 CHAR16 ISCSILun[ISCSI_LUN_STR_MAX_LEN];\r
167 CHAR16 ISCSIChapUsername[ISCSI_CHAP_NAME_STORAGE];\r
168 CHAR16 ISCSIChapSecret[ISCSI_CHAP_SECRET_STORAGE];\r
169 CHAR16 ISCSIReverseChapUsername[ISCSI_CHAP_NAME_STORAGE];\r
170 CHAR16 ISCSIReverseChapSecret[ISCSI_CHAP_SECRET_STORAGE];\r
171} KEYWORD_STR;\r
172\r
4c5a5e0c 173typedef struct _ISCSI_CONFIG_IFR_NVDATA {\r
174 CHAR16 InitiatorName[ISCSI_NAME_MAX_SIZE];\r
8d1f5e04 175 CHAR16 AttemptName[ATTEMPT_NAME_SIZE];\r
4c5a5e0c 176 UINT8 Enabled;\r
177 UINT8 IpMode;\r
178\r
179 UINT8 ConnectRetryCount;\r
180 UINT8 Padding1;\r
181 UINT16 ConnectTimeout; // Timeout value in milliseconds.\r
182\r
183 UINT8 InitiatorInfoFromDhcp;\r
184 UINT8 TargetInfoFromDhcp;\r
185 CHAR16 LocalIp[IP4_STR_MAX_SIZE];\r
186 CHAR16 SubnetMask[IP4_STR_MAX_SIZE];\r
187 CHAR16 Gateway[IP4_STR_MAX_SIZE];\r
188\r
189 CHAR16 TargetName[ISCSI_NAME_MAX_SIZE];\r
eabc6e59 190 CHAR16 TargetIp[ISCSI_TARGET_URI_MAX_SIZE];\r
4c5a5e0c 191 UINT16 TargetPort;\r
192 CHAR16 BootLun[ISCSI_LUN_STR_MAX_LEN];\r
193\r
194 UINT8 AuthenticationType;\r
195\r
196 UINT8 CHAPType;\r
197 CHAR16 CHAPName[ISCSI_CHAP_NAME_STORAGE];\r
198 CHAR16 CHAPSecret[ISCSI_CHAP_SECRET_STORAGE];\r
199 CHAR16 ReverseCHAPName[ISCSI_CHAP_NAME_STORAGE];\r
200 CHAR16 ReverseCHAPSecret[ISCSI_CHAP_SECRET_STORAGE];\r
201\r
202 BOOLEAN MutualRequired;\r
203 UINT8 Padding2;\r
204 CHAR16 KerberosUserName[KERBEROS_NAME_MAX_LEN];\r
205 CHAR16 KerberosUserSecret[KERBEROS_SECRET_STORAGE];\r
206 CHAR16 KerberosKDCName[KERBEROS_NAME_MAX_LEN];\r
207 CHAR16 KerberosKDCRealm[KERBEROS_NAME_MAX_LEN];\r
208 CHAR16 KerberosKDCIp[IP_STR_MAX_SIZE];\r
209 UINT16 KerberosKDCPort;\r
210\r
211 UINT8 DynamicOrderedList[ISCSI_MAX_ATTEMPTS_NUM];\r
212 UINT8 DeleteAttemptList[ISCSI_MAX_ATTEMPTS_NUM];\r
8d1f5e04 213 UINT8 AddAttemptList[ISCSI_MAX_ATTEMPTS_NUM];\r
4c5a5e0c 214 CHAR16 IsId[ISID_CONFIGURABLE_STORAGE];\r
8d1f5e04
ZL
215\r
216 //\r
217 // This will be used by keywords.\r
218 //\r
219 CHAR16 ISCSIMacAddr[ISCSI_MAX_MAC_STRING_LEN];\r
220 CHAR16 ISCSIAttemptOrder[ATTEMPT_NAME_LIST_SIZE];\r
221 CHAR16 ISCSIAddAttemptList[ATTEMPT_NAME_LIST_SIZE];\r
222 CHAR16 ISCSIDeleteAttemptList[ATTEMPT_NAME_LIST_SIZE];\r
223 CHAR16 ISCSIDisplayAttemptList[ATTEMPT_NAME_LIST_SIZE];\r
224 CHAR16 ISCSIAttemptName[ATTEMPT_NAME_LIST_SIZE];\r
225 UINT8 ISCSIBootEnableList[ISCSI_MAX_ATTEMPTS_NUM];\r
226 UINT8 ISCSIIpAddressTypeList[ISCSI_MAX_ATTEMPTS_NUM];\r
227 UINT8 ISCSIConnectRetry[ISCSI_MAX_ATTEMPTS_NUM];\r
228 UINT16 ISCSIConnectTimeout[ISCSI_MAX_ATTEMPTS_NUM];\r
229 UINT8 ISCSIInitiatorInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM];\r
230 UINT8 ISCSITargetInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM];\r
231 UINT16 ISCSITargetTcpPort[ISCSI_MAX_ATTEMPTS_NUM];\r
232 UINT8 ISCSIAuthenticationMethod[ISCSI_MAX_ATTEMPTS_NUM];\r
233 UINT8 ISCSIChapType[ISCSI_MAX_ATTEMPTS_NUM];\r
234 KEYWORD_STR Keyword[ISCSI_MAX_ATTEMPTS_NUM];\r
4c5a5e0c 235} ISCSI_CONFIG_IFR_NVDATA;\r
236#pragma pack()\r
237\r
238#endif\r