]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/IScsiDxe/IScsiConfig.h
NetworkPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiConfig.h
CommitLineData
4c5a5e0c 1/** @file\r
2 The header file of functions for configuring or getting the parameters\r
3 relating to iSCSI.\r
4\r
8d1f5e04 5Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>\r
ecf98fbc 6SPDX-License-Identifier: BSD-2-Clause-Patent\r
4c5a5e0c 7\r
8**/\r
9\r
10#ifndef _ISCSI_CONFIG_H_\r
11#define _ISCSI_CONFIG_H_\r
12\r
13#include "IScsiConfigNVDataStruc.h"\r
14\r
15typedef struct _ISCSI_FORM_CALLBACK_INFO ISCSI_FORM_CALLBACK_INFO;\r
16\r
17extern UINT8 IScsiConfigVfrBin[];\r
18extern UINT8 IScsiDxeStrings[];\r
19extern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo;\r
4c5a5e0c 20\r
21\r
22#define VAR_OFFSET(Field) \\r
23 ((UINT16) ((UINTN) &(((ISCSI_CONFIG_IFR_NVDATA *) 0)->Field)))\r
24\r
25#define QUESTION_ID(Field) \\r
26 ((UINT16) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET))\r
27\r
4c5a5e0c 28#define DYNAMIC_ONE_OF_VAR_OFFSET VAR_OFFSET (Enabled)\r
29#define DYNAMIC_ORDERED_LIST_QUESTION_ID QUESTION_ID (DynamicOrderedList)\r
30#define DYNAMIC_ORDERED_LIST_VAR_OFFSET VAR_OFFSET (DynamicOrderedList)\r
31#define ATTEMPT_DEL_QUESTION_ID QUESTION_ID (DeleteAttemptList)\r
32#define ATTEMPT_DEL_VAR_OFFSET VAR_OFFSET (DeleteAttemptList)\r
8d1f5e04
ZL
33#define ATTEMPT_ADD_QUESTION_ID QUESTION_ID (AddAttemptList)\r
34#define ATTEMPT_ADD_VAR_OFFSET VAR_OFFSET (AddAttemptList)\r
4c5a5e0c 35\r
36//\r
8d1f5e04 37// Define QuestionId and OffSet for Keywords.\r
4c5a5e0c 38//\r
2fd40fa5 39#define ATTEMPT_MAC_ADDR_VAR_OFFSET VAR_OFFSET (ISCSIMacAddr)\r
8d1f5e04
ZL
40#define ATTEMPT_ATTEMPT_NAME_QUESTION_ID QUESTION_ID (ISCSIAttemptName)\r
41#define ATTEMPT_ATTEMPT_NAME_VAR_OFFSET VAR_OFFSET (ISCSIAttemptName)\r
42#define ATTEMPT_BOOTENABLE_QUESTION_ID QUESTION_ID (ISCSIBootEnableList)\r
43#define ATTEMPT_BOOTENABLE_VAR_OFFSET VAR_OFFSET (ISCSIBootEnableList)\r
44#define ATTEMPT_ADDRESS_TYPE_QUESTION_ID QUESTION_ID (ISCSIIpAddressTypeList)\r
45#define ATTEMPT_ADDRESS_TYPE_VAR_OFFSET VAR_OFFSET (ISCSIIpAddressTypeList)\r
46#define ATTEMPT_CONNECT_RETRY_QUESTION_ID QUESTION_ID (ISCSIConnectRetry)\r
47#define ATTEMPT_CONNECT_RETRY_VAR_OFFSET VAR_OFFSET (ISCSIConnectRetry)\r
48#define ATTEMPT_CONNECT_TIMEOUT_QUESTION_ID QUESTION_ID (ISCSIConnectTimeout)\r
49#define ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET VAR_OFFSET (ISCSIConnectTimeout)\r
50#define ATTEMPT_ISID_QUESTION_ID QUESTION_ID (Keyword->ISCSIIsId)\r
51#define ATTEMPT_ISID_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIIsId)\r
52#define ATTEMPT_INITIATOR_VIA_DHCP_QUESTION_ID QUESTION_ID (ISCSIInitiatorInfoViaDHCP)\r
53#define ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET VAR_OFFSET (ISCSIInitiatorInfoViaDHCP)\r
54#define ATTEMPT_INITIATOR_IP_ADDRESS_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorIpAddress)\r
55#define ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorIpAddress)\r
56#define ATTEMPT_INITIATOR_NET_MASK_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorNetmask)\r
57#define ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorNetmask)\r
58#define ATTEMPT_INITIATOR_GATE_WAY_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorGateway)\r
59#define ATTEMPT_INITIATOR_GATE_WAY_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorGateway)\r
60#define ATTEMPT_TARGET_VIA_DHCP_QUESTION_ID QUESTION_ID (ISCSITargetInfoViaDHCP)\r
61#define ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET VAR_OFFSET (ISCSITargetInfoViaDHCP)\r
62#define ATTEMPT_TARGET_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSITargetName)\r
63#define ATTEMPT_TARGET_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSITargetName)\r
64#define ATTEMPT_TARGET_IP_ADDRESS_QUESTION_ID QUESTION_ID (Keyword->ISCSITargetIpAddress)\r
65#define ATTEMPT_TARGET_IP_ADDRESS_VAR_OFFSET VAR_OFFSET (Keyword->ISCSITargetIpAddress)\r
66#define ATTEMPT_TARGET_TCP_PORT_QUESTION_ID QUESTION_ID (ISCSITargetTcpPort)\r
67#define ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET VAR_OFFSET (ISCSITargetTcpPort)\r
68#define ATTEMPT_LUN_QUESTION_ID QUESTION_ID (Keyword->ISCSILun)\r
69#define ATTEMPT_LUN_VAR_OFFSET VAR_OFFSET (Keyword->ISCSILun)\r
70#define ATTEMPT_AUTHENTICATION_METHOD_QUESTION_ID QUESTION_ID (ISCSIAuthenticationMethod)\r
71#define ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET VAR_OFFSET (ISCSIAuthenticationMethod)\r
72#define ATTEMPT_CHARTYPE_QUESTION_ID QUESTION_ID (ISCSIChapType)\r
73#define ATTEMPT_CHARTYPE_VAR_OFFSET VAR_OFFSET (ISCSIChapType)\r
74#define ATTEMPT_CHAR_USER_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSIChapUsername)\r
75#define ATTEMPT_CHAR_USER_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIChapUsername)\r
76#define ATTEMPT_CHAR_SECRET_QUESTION_ID QUESTION_ID (Keyword->ISCSIChapSecret)\r
77#define ATTEMPT_CHAR_SECRET_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIChapSecret)\r
78#define ATTEMPT_CHAR_REVERSE_USER_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSIReverseChapUsername)\r
79#define ATTEMPT_CHAR_REVERSE_USER_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIReverseChapUsername)\r
80#define ATTEMPT_CHAR_REVERSE_SECRET_QUESTION_ID QUESTION_ID (Keyword->ISCSIReverseChapSecret)\r
81#define ATTEMPT_CHAR_REVERSE_SECRET_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIReverseChapSecret)\r
82\r
4c5a5e0c 83\r
84#define ISCSI_INITATOR_NAME_VAR_NAME L"I_NAME"\r
85\r
86#define ISCSI_CONFIG_VAR_ATTR (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE)\r
87\r
88#define ISCSI_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'f', 'c', 'i')\r
89\r
90#define ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK(Callback) \\r
91 CR ( \\r
92 Callback, \\r
93 ISCSI_FORM_CALLBACK_INFO, \\r
94 ConfigAccess, \\r
95 ISCSI_FORM_CALLBACK_INFO_SIGNATURE \\r
96 )\r
97\r
98#pragma pack(1)\r
99struct _ISCSI_ATTEMPT_CONFIG_NVDATA {\r
100 LIST_ENTRY Link;\r
101 UINT8 NicIndex;\r
102 UINT8 AttemptConfigIndex;\r
103 BOOLEAN DhcpSuccess;\r
104 BOOLEAN ValidiBFTPath;\r
105 BOOLEAN ValidPath;\r
106 UINT8 AutoConfigureMode;\r
107 EFI_STRING_ID AttemptTitleToken;\r
108 EFI_STRING_ID AttemptTitleHelpToken;\r
8d1f5e04 109 CHAR8 AttemptName[ATTEMPT_NAME_SIZE];\r
4c5a5e0c 110 CHAR8 MacString[ISCSI_MAX_MAC_STRING_LEN];\r
111 EFI_IP_ADDRESS PrimaryDns;\r
112 EFI_IP_ADDRESS SecondaryDns;\r
113 EFI_IP_ADDRESS DhcpServer;\r
114 ISCSI_SESSION_CONFIG_NVDATA SessionConfigData;\r
115 UINT8 AuthenticationType;\r
116 union {\r
117 ISCSI_CHAP_AUTH_CONFIG_NVDATA CHAP;\r
118 } AuthConfigData;\r
87ce4210 119 BOOLEAN AutoConfigureSuccess;\r
8d1f5e04 120 UINT8 Actived;\r
4c5a5e0c 121};\r
122\r
123///\r
124/// HII specific Vendor Device Path definition.\r
125///\r
126typedef struct {\r
127 VENDOR_DEVICE_PATH VendorDevicePath;\r
128 EFI_DEVICE_PATH_PROTOCOL End;\r
129} HII_VENDOR_DEVICE_PATH;\r
130\r
131#pragma pack()\r
132\r
133struct _ISCSI_FORM_CALLBACK_INFO {\r
134 UINT32 Signature;\r
135 EFI_HANDLE DriverHandle;\r
136 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;\r
137 UINT16 *KeyList;\r
138 VOID *FormBuffer;\r
139 EFI_HII_HANDLE RegisteredHandle;\r
140 ISCSI_ATTEMPT_CONFIG_NVDATA *Current;\r
141};\r
142\r
8d1f5e04
ZL
143/**\r
144 Create Hii Extend Label OpCode as the start opcode and end opcode. It is\r
145 a help function.\r
146\r
147 @param[in] StartLabelNumber The number of start label.\r
148 @param[out] StartOpCodeHandle Points to the start opcode handle.\r
149 @param[out] StartLabel Points to the created start opcode.\r
150 @param[out] EndOpCodeHandle Points to the end opcode handle.\r
151 @param[out] EndLabel Points to the created end opcode.\r
152\r
153 @retval EFI_OUT_OF_RESOURCES Do not have sufficient resource to finish this\r
154 operation.\r
155 @retval EFI_INVALID_PARAMETER Any input parameter is invalid.\r
156 @retval EFI_SUCCESS The operation is completed successfully.\r
157\r
158**/\r
159EFI_STATUS\r
160IScsiCreateOpCode (\r
161 IN UINT16 StartLabelNumber,\r
162 OUT VOID **StartOpCodeHandle,\r
163 OUT EFI_IFR_GUID_LABEL **StartLabel,\r
164 OUT VOID **EndOpCodeHandle,\r
165 OUT EFI_IFR_GUID_LABEL **EndLabel\r
166 );\r
167\r
4c5a5e0c 168/**\r
169 Initialize the iSCSI configuration form.\r
170\r
171 @param[in] DriverBindingHandle The iSCSI driverbinding handle.\r
172\r
173 @retval EFI_SUCCESS The iSCSI configuration form is initialized.\r
174 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.\r
175\r
176**/\r
177EFI_STATUS\r
178IScsiConfigFormInit (\r
179 IN EFI_HANDLE DriverBindingHandle\r
180 );\r
181\r
182/**\r
183 Unload the iSCSI configuration form, this includes: delete all the iSCSI\r
184 configuration entries, uninstall the form callback protocol, and\r
185 free the resources used.\r
186\r
187 @param[in] DriverBindingHandle The iSCSI driverbinding handle.\r
188\r
189 @retval EFI_SUCCESS The iSCSI configuration form is unloaded.\r
190 @retval Others Failed to unload the form.\r
191\r
192**/\r
193EFI_STATUS\r
194IScsiConfigFormUnload (\r
195 IN EFI_HANDLE DriverBindingHandle\r
196 );\r
197\r
198/**\r
199 Update the MAIN form to display the configured attempts.\r
200\r
201**/\r
202VOID\r
203IScsiConfigUpdateAttempt (\r
204 VOID\r
205 );\r
206\r
207/**\r
208 Get the attempt config data from global structure by the ConfigIndex.\r
209\r
210 @param[in] AttemptConfigIndex The unique index indicates the attempt.\r
211\r
212 @return Pointer to the attempt config data.\r
213 @retval NULL The attempt configuration data can not be found.\r
214\r
215**/\r
216ISCSI_ATTEMPT_CONFIG_NVDATA *\r
217IScsiConfigGetAttemptByConfigIndex (\r
218 IN UINT8 AttemptConfigIndex\r
219 );\r
220\r
221#endif\r