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