]> git.proxmox.com Git - mirror_edk2.git/blob - NetworkPkg/IScsiDxe/IScsiConfig.h
Fix a bug about the iSCSI DHCP dependency issue.
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiConfig.h
1 /** @file
2 The header file of functions for configuring or getting the parameters
3 relating to iSCSI.
4
5 Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
6 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_CONFIG_H_
17 #define _ISCSI_CONFIG_H_
18
19 #include "IScsiConfigNVDataStruc.h"
20
21 typedef struct _ISCSI_FORM_CALLBACK_INFO ISCSI_FORM_CALLBACK_INFO;
22
23 extern UINT8 IScsiConfigVfrBin[];
24 extern UINT8 IScsiDxeStrings[];
25 extern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo;
26
27
28 #define VAR_OFFSET(Field) \
29 ((UINT16) ((UINTN) &(((ISCSI_CONFIG_IFR_NVDATA *) 0)->Field)))
30
31 #define QUESTION_ID(Field) \
32 ((UINT16) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET))
33
34
35 #define DYNAMIC_ONE_OF_VAR_OFFSET VAR_OFFSET (Enabled)
36 #define DYNAMIC_ORDERED_LIST_QUESTION_ID QUESTION_ID (DynamicOrderedList)
37 #define DYNAMIC_ORDERED_LIST_VAR_OFFSET VAR_OFFSET (DynamicOrderedList)
38 #define ATTEMPT_DEL_QUESTION_ID QUESTION_ID (DeleteAttemptList)
39 #define ATTEMPT_DEL_VAR_OFFSET VAR_OFFSET (DeleteAttemptList)
40
41 //
42 // sizeof (EFI_MAC_ADDRESS) * 3
43 //
44 #define ISCSI_MAX_MAC_STRING_LEN 96
45
46 #define ISCSI_INITATOR_NAME_VAR_NAME L"I_NAME"
47
48 #define ISCSI_CONFIG_VAR_ATTR (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE)
49
50 #define ISCSI_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'f', 'c', 'i')
51
52 #define ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK(Callback) \
53 CR ( \
54 Callback, \
55 ISCSI_FORM_CALLBACK_INFO, \
56 ConfigAccess, \
57 ISCSI_FORM_CALLBACK_INFO_SIGNATURE \
58 )
59
60 #pragma pack(1)
61 struct _ISCSI_ATTEMPT_CONFIG_NVDATA {
62 LIST_ENTRY Link;
63 UINT8 NicIndex;
64 UINT8 AttemptConfigIndex;
65 BOOLEAN DhcpSuccess;
66 BOOLEAN ValidiBFTPath;
67 BOOLEAN ValidPath;
68 UINT8 AutoConfigureMode;
69 EFI_STRING_ID AttemptTitleToken;
70 EFI_STRING_ID AttemptTitleHelpToken;
71 CHAR8 AttemptName[ATTEMPT_NAME_MAX_SIZE];
72 CHAR8 MacString[ISCSI_MAX_MAC_STRING_LEN];
73 EFI_IP_ADDRESS PrimaryDns;
74 EFI_IP_ADDRESS SecondaryDns;
75 EFI_IP_ADDRESS DhcpServer;
76 ISCSI_SESSION_CONFIG_NVDATA SessionConfigData;
77 UINT8 AuthenticationType;
78 union {
79 ISCSI_CHAP_AUTH_CONFIG_NVDATA CHAP;
80 } AuthConfigData;
81
82 };
83
84 ///
85 /// HII specific Vendor Device Path definition.
86 ///
87 typedef struct {
88 VENDOR_DEVICE_PATH VendorDevicePath;
89 EFI_DEVICE_PATH_PROTOCOL End;
90 } HII_VENDOR_DEVICE_PATH;
91
92 #pragma pack()
93
94 struct _ISCSI_FORM_CALLBACK_INFO {
95 UINT32 Signature;
96 EFI_HANDLE DriverHandle;
97 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
98 UINT16 *KeyList;
99 VOID *FormBuffer;
100 EFI_HII_HANDLE RegisteredHandle;
101 ISCSI_ATTEMPT_CONFIG_NVDATA *Current;
102 };
103
104 /**
105 Initialize the iSCSI configuration form.
106
107 @param[in] DriverBindingHandle The iSCSI driverbinding handle.
108
109 @retval EFI_SUCCESS The iSCSI configuration form is initialized.
110 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
111
112 **/
113 EFI_STATUS
114 IScsiConfigFormInit (
115 IN EFI_HANDLE DriverBindingHandle
116 );
117
118 /**
119 Unload the iSCSI configuration form, this includes: delete all the iSCSI
120 configuration entries, uninstall the form callback protocol, and
121 free the resources used.
122
123 @param[in] DriverBindingHandle The iSCSI driverbinding handle.
124
125 @retval EFI_SUCCESS The iSCSI configuration form is unloaded.
126 @retval Others Failed to unload the form.
127
128 **/
129 EFI_STATUS
130 IScsiConfigFormUnload (
131 IN EFI_HANDLE DriverBindingHandle
132 );
133
134 /**
135 Update the MAIN form to display the configured attempts.
136
137 **/
138 VOID
139 IScsiConfigUpdateAttempt (
140 VOID
141 );
142
143 /**
144 Get the attempt config data from global structure by the ConfigIndex.
145
146 @param[in] AttemptConfigIndex The unique index indicates the attempt.
147
148 @return Pointer to the attempt config data.
149 @retval NULL The attempt configuration data can not be found.
150
151 **/
152 ISCSI_ATTEMPT_CONFIG_NVDATA *
153 IScsiConfigGetAttemptByConfigIndex (
154 IN UINT8 AttemptConfigIndex
155 );
156
157 #endif