1 /** @file 2 The header file of functions for configuring or getting the parameters 3 relating to iSCSI. 4 5 Copyright (c) 2004 - 2015, 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 BOOLEAN AutoConfigureSuccess; 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 158