IScsiConfigNVDataStruc.h 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. /** @file
  2. Define NVData structures used by the iSCSI configuration component.
  3. Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #ifndef _ISCSI_NVDATASTRUC_H_
  7. #define _ISCSI_NVDATASTRUC_H_
  8. #include <Guid/IScsiConfigHii.h>
  9. #define VAR_EQ_TEST_NAME 0x100
  10. #define CONFIGURATION_VARSTORE_ID 0x6666
  11. #define FORMID_MAIN_FORM 1
  12. #define FORMID_MAC_FORM 2
  13. #define FORMID_ATTEMPT_FORM 3
  14. #define FORMID_ORDER_FORM 4
  15. #define FORMID_DELETE_FORM 5
  16. #define ISCSI_MAX_ATTEMPTS_NUM FixedPcdGet8 (PcdMaxIScsiAttemptNumber)
  17. #define ISCSI_NAME_IFR_MIN_SIZE 4
  18. #define ISCSI_NAME_IFR_MAX_SIZE 223
  19. #define ISCSI_NAME_MAX_SIZE 224
  20. #define ATTEMPT_NAME_LIST_SIZE 96
  21. #define ATTEMPT_NAME_SIZE 12
  22. #define CONNECT_MIN_RETRY 0
  23. #define CONNECT_MAX_RETRY 16
  24. #define CONNECT_MIN_TIMEOUT 100
  25. #define CONNECT_MAX_TIMEOUT 20000
  26. #define CONNECT_DEFAULT_TIMEOUT 1000
  27. #define ISCSI_ACTIVE_DISABLED 0
  28. #define ISCSI_ACTIVE_ENABLED 1
  29. #define ISCSI_DISABLED 0
  30. #define ISCSI_ENABLED 1
  31. #define ISCSI_ENABLED_FOR_MPIO 2
  32. #define IP_MODE_IP4 0
  33. #define IP_MODE_IP6 1
  34. #define IP_MODE_AUTOCONFIG 2
  35. #define ISCSI_AUTH_TYPE_NONE 0
  36. #define ISCSI_AUTH_TYPE_CHAP 1
  37. #define ISCSI_AUTH_TYPE_KRB 2
  38. #define IP4_MIN_SIZE 7
  39. #define IP4_MAX_SIZE 15
  40. #define IP4_STR_MAX_SIZE 16
  41. //
  42. // Macros used for an IPv4 or an IPv6 address.
  43. //
  44. #define IP_MIN_SIZE 2
  45. #define IP_MAX_SIZE 39
  46. #define IP_STR_MAX_SIZE 40
  47. #define LUN_MIN_SIZE 1
  48. #define LUN_MAX_SIZE 20
  49. #define ISCSI_LUN_STR_MAX_LEN 21
  50. #define ISCSI_CHAP_UNI 0
  51. #define ISCSI_CHAP_MUTUAL 1
  52. #define TARGET_PORT_MIN_NUM 0
  53. #define TARGET_PORT_MAX_NUM 65535
  54. #define LABEL_END 0xffff
  55. #define KEY_INITIATOR_NAME 0x101
  56. #define KEY_DHCP_ENABLE 0x102
  57. #define KEY_LOCAL_IP 0x103
  58. #define KEY_SUBNET_MASK 0x104
  59. #define KEY_GATE_WAY 0x105
  60. #define KEY_TARGET_IP 0x106
  61. #define KEY_CHAP_NAME 0x107
  62. #define KEY_CHAP_SECRET 0x108
  63. #define KEY_REVERSE_CHAP_NAME 0x109
  64. #define KEY_REVERSE_CHAP_SECRET 0x10a
  65. #define KEY_SAVE_CHANGES 0x10b
  66. #define KEY_TARGET_NAME 0x10c
  67. #define KEY_BOOT_LUN 0x10d
  68. #define KEY_ADD_ATTEMPT 0x10e
  69. #define KEY_SAVE_ATTEMPT_CONFIG 0x10f
  70. #define KEY_ORDER_ATTEMPT_CONFIG 0x110
  71. #define KEY_SAVE_ORDER_CHANGES 0x111
  72. #define KEY_IGNORE_ORDER_CHANGES 0x112
  73. #define KEY_ATTEMPT_NAME 0x113
  74. #define KEY_SAVE_DELETE_ATTEMPT 0x114
  75. #define KEY_IGNORE_DELETE_ATTEMPT 0x115
  76. #define KEY_DELETE_ATTEMPT 0x116
  77. #define KEY_IP_MODE 0x11c
  78. #define KEY_AUTH_TYPE 0x11d
  79. #define KEY_CONFIG_ISID 0x11e
  80. #define ATTEMPT_ENTRY_LABEL 0x9000
  81. #define KEY_ATTEMPT_ENTRY_BASE 0xa000
  82. #define KEY_DE_ATTEMPT_ENTRY_BASE 0xb000
  83. #define KEY_DEVICE_ENTRY_BASE 0x1000
  84. #define KEY_MAC_ENTRY_BASE 0x2000
  85. #define MAC_ENTRY_LABEL 0x3000
  86. #define ORDER_ENTRY_LABEL 0x4000
  87. #define DELETE_ENTRY_LABEL 0x5000
  88. #define KEYWORD_ENTRY_LABEL 0x6000
  89. #define CONFIG_OPTION_OFFSET 0x9000
  90. #define ISCSI_CHAP_SECRET_MIN_LEN 12
  91. #define ISCSI_CHAP_SECRET_MAX_LEN 16
  92. //
  93. // ISCSI_CHAP_SECRET_STORAGE = ISCSI_CHAP_SECRET_MAX_LEN + sizeof (NULL-Terminator)
  94. //
  95. #define ISCSI_CHAP_SECRET_STORAGE 17
  96. #define ISCSI_CHAP_NAME_MAX_LEN 126
  97. #define ISCSI_CHAP_NAME_STORAGE 127
  98. #define KERBEROS_SECRET_MIN_LEN 12
  99. #define KERBEROS_SECRET_MAX_LEN 16
  100. #define KERBEROS_SECRET_STORAGE 17
  101. #define KERBEROS_NAME_MAX_LEN 96
  102. #define KERBEROS_KDC_PORT_MIN_NUM 0
  103. #define KERBEROS_KDC_PORT_MAX_NUM 65535
  104. #define ISID_CONFIGURABLE_MIN_LEN 6
  105. #define ISID_CONFIGURABLE_MAX_LEN 12
  106. #define ISID_CONFIGURABLE_STORAGE 13
  107. //
  108. // sizeof (EFI_MAC_ADDRESS) * 3
  109. //
  110. #define ISCSI_MAX_MAC_STRING_LEN 96
  111. ///
  112. /// Macro used for target Url.
  113. ///
  114. #define ISCSI_TARGET_URI_MIN_SIZE 0
  115. #define ISCSI_TARGET_URI_MAX_SIZE 255
  116. #pragma pack(1)
  117. //
  118. // Used by keyword.
  119. //
  120. typedef struct {
  121. CHAR16 ISCSIIsId[ISID_CONFIGURABLE_STORAGE];
  122. CHAR16 ISCSIInitiatorIpAddress[IP4_STR_MAX_SIZE];
  123. CHAR16 ISCSIInitiatorNetmask[IP4_STR_MAX_SIZE];
  124. CHAR16 ISCSIInitiatorGateway[IP4_STR_MAX_SIZE];
  125. CHAR16 ISCSITargetName[ISCSI_NAME_MAX_SIZE];
  126. CHAR16 ISCSITargetIpAddress[ISCSI_TARGET_URI_MAX_SIZE];
  127. CHAR16 ISCSILun[ISCSI_LUN_STR_MAX_LEN];
  128. CHAR16 ISCSIChapUsername[ISCSI_CHAP_NAME_STORAGE];
  129. CHAR16 ISCSIChapSecret[ISCSI_CHAP_SECRET_STORAGE];
  130. CHAR16 ISCSIReverseChapUsername[ISCSI_CHAP_NAME_STORAGE];
  131. CHAR16 ISCSIReverseChapSecret[ISCSI_CHAP_SECRET_STORAGE];
  132. } KEYWORD_STR;
  133. typedef struct _ISCSI_CONFIG_IFR_NVDATA {
  134. CHAR16 InitiatorName[ISCSI_NAME_MAX_SIZE];
  135. CHAR16 AttemptName[ATTEMPT_NAME_SIZE];
  136. UINT8 Enabled;
  137. UINT8 IpMode;
  138. UINT8 ConnectRetryCount;
  139. UINT8 Padding1;
  140. UINT16 ConnectTimeout; // Timeout value in milliseconds.
  141. UINT8 InitiatorInfoFromDhcp;
  142. UINT8 TargetInfoFromDhcp;
  143. CHAR16 LocalIp[IP4_STR_MAX_SIZE];
  144. CHAR16 SubnetMask[IP4_STR_MAX_SIZE];
  145. CHAR16 Gateway[IP4_STR_MAX_SIZE];
  146. CHAR16 TargetName[ISCSI_NAME_MAX_SIZE];
  147. CHAR16 TargetIp[ISCSI_TARGET_URI_MAX_SIZE];
  148. UINT16 TargetPort;
  149. CHAR16 BootLun[ISCSI_LUN_STR_MAX_LEN];
  150. UINT8 AuthenticationType;
  151. UINT8 CHAPType;
  152. CHAR16 CHAPName[ISCSI_CHAP_NAME_STORAGE];
  153. CHAR16 CHAPSecret[ISCSI_CHAP_SECRET_STORAGE];
  154. CHAR16 ReverseCHAPName[ISCSI_CHAP_NAME_STORAGE];
  155. CHAR16 ReverseCHAPSecret[ISCSI_CHAP_SECRET_STORAGE];
  156. BOOLEAN MutualRequired;
  157. UINT8 Padding2;
  158. CHAR16 KerberosUserName[KERBEROS_NAME_MAX_LEN];
  159. CHAR16 KerberosUserSecret[KERBEROS_SECRET_STORAGE];
  160. CHAR16 KerberosKDCName[KERBEROS_NAME_MAX_LEN];
  161. CHAR16 KerberosKDCRealm[KERBEROS_NAME_MAX_LEN];
  162. CHAR16 KerberosKDCIp[IP_STR_MAX_SIZE];
  163. UINT16 KerberosKDCPort;
  164. UINT8 DynamicOrderedList[ISCSI_MAX_ATTEMPTS_NUM];
  165. UINT8 DeleteAttemptList[ISCSI_MAX_ATTEMPTS_NUM];
  166. UINT8 AddAttemptList[ISCSI_MAX_ATTEMPTS_NUM];
  167. CHAR16 IsId[ISID_CONFIGURABLE_STORAGE];
  168. //
  169. // This will be used by keywords.
  170. //
  171. CHAR16 ISCSIMacAddr[ISCSI_MAX_MAC_STRING_LEN];
  172. CHAR16 ISCSIAttemptOrder[ATTEMPT_NAME_LIST_SIZE];
  173. CHAR16 ISCSIAddAttemptList[ATTEMPT_NAME_LIST_SIZE];
  174. CHAR16 ISCSIDeleteAttemptList[ATTEMPT_NAME_LIST_SIZE];
  175. CHAR16 ISCSIDisplayAttemptList[ATTEMPT_NAME_LIST_SIZE];
  176. CHAR16 ISCSIAttemptName[ATTEMPT_NAME_LIST_SIZE];
  177. UINT8 ISCSIBootEnableList[ISCSI_MAX_ATTEMPTS_NUM];
  178. UINT8 ISCSIIpAddressTypeList[ISCSI_MAX_ATTEMPTS_NUM];
  179. UINT8 ISCSIConnectRetry[ISCSI_MAX_ATTEMPTS_NUM];
  180. UINT16 ISCSIConnectTimeout[ISCSI_MAX_ATTEMPTS_NUM];
  181. UINT8 ISCSIInitiatorInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM];
  182. UINT8 ISCSITargetInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM];
  183. UINT16 ISCSITargetTcpPort[ISCSI_MAX_ATTEMPTS_NUM];
  184. UINT8 ISCSIAuthenticationMethod[ISCSI_MAX_ATTEMPTS_NUM];
  185. UINT8 ISCSIChapType[ISCSI_MAX_ATTEMPTS_NUM];
  186. KEYWORD_STR Keyword[ISCSI_MAX_ATTEMPTS_NUM];
  187. } ISCSI_CONFIG_IFR_NVDATA;
  188. #pragma pack()
  189. #endif