IScsiConfig.h 9.6 KB

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