]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h
NetworkPkg:Add scriptable configuration to iSCSI driver by leveraging x-UEFI.
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiConfigNVDataStruc.h
index 5f22767644edf8276d78f9ccaf3d2cbb5451a62e..f89f3208547dbf4b8586f5bcec6593b6aae59108 100644 (file)
@@ -26,12 +26,14 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define FORMID_ORDER_FORM         4\r
 #define FORMID_DELETE_FORM        5\r
 \r
+#define ISCSI_MAX_ATTEMPTS_NUM    FixedPcdGet8 (PcdMaxIScsiAttemptNumber)\r
+\r
 #define ISCSI_NAME_IFR_MIN_SIZE   4\r
 #define ISCSI_NAME_IFR_MAX_SIZE   223\r
 #define ISCSI_NAME_MAX_SIZE       224\r
 \r
-#define ATTEMPT_NAME_MAX_SIZE     96\r
-#define ATTEMPT_NAME_SIZE         10\r
+#define ATTEMPT_NAME_LIST_SIZE    96\r
+#define ATTEMPT_NAME_SIZE         12\r
 \r
 #define CONNECT_MIN_RETRY         0\r
 #define CONNECT_MAX_RETRY         16\r
@@ -40,7 +42,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define CONNECT_MAX_TIMEOUT       20000\r
 #define CONNECT_DEFAULT_TIMEOUT   1000\r
 \r
-#define ISCSI_MAX_ATTEMPTS_NUM    255\r
+#define ISCSI_ACTIVE_DISABLED     0\r
+#define ISCSI_ACTIVE_ENABLED      1\r
 \r
 #define ISCSI_DISABLED            0\r
 #define ISCSI_ENABLED             1\r
@@ -67,6 +70,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #define LUN_MIN_SIZE              1\r
 #define LUN_MAX_SIZE              20\r
+#define ISCSI_LUN_STR_MAX_LEN     21\r
 \r
 #define ISCSI_CHAP_UNI            0\r
 #define ISCSI_CHAP_MUTUAL         1\r
@@ -112,17 +116,18 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define MAC_ENTRY_LABEL           0x3000\r
 #define ORDER_ENTRY_LABEL         0x4000\r
 #define DELETE_ENTRY_LABEL        0x5000\r
+#define KEYWORD_ENTRY_LABEL       0x6000\r
 #define CONFIG_OPTION_OFFSET      0x9000\r
 \r
-#define ISCSI_LUN_STR_MAX_LEN     21\r
 #define ISCSI_CHAP_SECRET_MIN_LEN 12\r
 #define ISCSI_CHAP_SECRET_MAX_LEN 16\r
 //\r
 // ISCSI_CHAP_SECRET_STORAGE = ISCSI_CHAP_SECRET_MAX_LEN + sizeof (NULL-Terminator)\r
 //\r
-#define ISCSI_CHAP_SECRET_STORAGE 17\r
-#define ISCSI_CHAP_NAME_MAX_LEN   126\r
-#define ISCSI_CHAP_NAME_STORAGE   127\r
+#define ISCSI_CHAP_SECRET_STORAGE  17\r
+\r
+#define ISCSI_CHAP_NAME_MAX_LEN    126\r
+#define ISCSI_CHAP_NAME_STORAGE    127\r
 \r
 #define KERBEROS_SECRET_MIN_LEN   12\r
 #define KERBEROS_SECRET_MAX_LEN   16\r
@@ -135,6 +140,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define ISID_CONFIGURABLE_MAX_LEN 12\r
 #define ISID_CONFIGURABLE_STORAGE 13\r
 \r
+//\r
+// sizeof (EFI_MAC_ADDRESS) * 3\r
+//\r
+#define ISCSI_MAX_MAC_STRING_LEN            96\r
+\r
 ///\r
 /// Macro used for target Url.\r
 ///\r
@@ -142,10 +152,27 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define ISCSI_TARGET_URI_MAX_SIZE     255\r
 \r
 #pragma pack(1)\r
+\r
+//\r
+// Used by keyword.\r
+//\r
+typedef struct {\r
+  CHAR16  ISCSIIsId[ISID_CONFIGURABLE_STORAGE];\r
+  CHAR16  ISCSIInitiatorIpAddress[IP4_STR_MAX_SIZE];\r
+  CHAR16  ISCSIInitiatorNetmask[IP4_STR_MAX_SIZE];\r
+  CHAR16  ISCSIInitiatorGateway[IP4_STR_MAX_SIZE];\r
+  CHAR16  ISCSITargetName[ISCSI_NAME_MAX_SIZE];\r
+  CHAR16  ISCSITargetIpAddress[IP_STR_MAX_SIZE];\r
+  CHAR16  ISCSILun[ISCSI_LUN_STR_MAX_LEN];\r
+  CHAR16  ISCSIChapUsername[ISCSI_CHAP_NAME_STORAGE];\r
+  CHAR16  ISCSIChapSecret[ISCSI_CHAP_SECRET_STORAGE];\r
+  CHAR16  ISCSIReverseChapUsername[ISCSI_CHAP_NAME_STORAGE];\r
+  CHAR16  ISCSIReverseChapSecret[ISCSI_CHAP_SECRET_STORAGE];\r
+} KEYWORD_STR;\r
+\r
 typedef struct _ISCSI_CONFIG_IFR_NVDATA {\r
   CHAR16  InitiatorName[ISCSI_NAME_MAX_SIZE];\r
-  CHAR16  AttemptName[ATTEMPT_NAME_MAX_SIZE];\r
-\r
+  CHAR16  AttemptName[ATTEMPT_NAME_SIZE];\r
   UINT8   Enabled;\r
   UINT8   IpMode;\r
 \r
@@ -183,8 +210,28 @@ typedef struct _ISCSI_CONFIG_IFR_NVDATA {
 \r
   UINT8   DynamicOrderedList[ISCSI_MAX_ATTEMPTS_NUM];\r
   UINT8   DeleteAttemptList[ISCSI_MAX_ATTEMPTS_NUM];\r
-\r
+  UINT8   AddAttemptList[ISCSI_MAX_ATTEMPTS_NUM];\r
   CHAR16  IsId[ISID_CONFIGURABLE_STORAGE];\r
+\r
+  //\r
+  // This will be used by keywords.\r
+  //\r
+  CHAR16  ISCSIMacAddr[ISCSI_MAX_MAC_STRING_LEN];\r
+  CHAR16  ISCSIAttemptOrder[ATTEMPT_NAME_LIST_SIZE];\r
+  CHAR16  ISCSIAddAttemptList[ATTEMPT_NAME_LIST_SIZE];\r
+  CHAR16  ISCSIDeleteAttemptList[ATTEMPT_NAME_LIST_SIZE];\r
+  CHAR16  ISCSIDisplayAttemptList[ATTEMPT_NAME_LIST_SIZE];\r
+  CHAR16  ISCSIAttemptName[ATTEMPT_NAME_LIST_SIZE];\r
+  UINT8   ISCSIBootEnableList[ISCSI_MAX_ATTEMPTS_NUM];\r
+  UINT8   ISCSIIpAddressTypeList[ISCSI_MAX_ATTEMPTS_NUM];\r
+  UINT8   ISCSIConnectRetry[ISCSI_MAX_ATTEMPTS_NUM];\r
+  UINT16  ISCSIConnectTimeout[ISCSI_MAX_ATTEMPTS_NUM];\r
+  UINT8   ISCSIInitiatorInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM];\r
+  UINT8   ISCSITargetInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM];\r
+  UINT16  ISCSITargetTcpPort[ISCSI_MAX_ATTEMPTS_NUM];\r
+  UINT8   ISCSIAuthenticationMethod[ISCSI_MAX_ATTEMPTS_NUM];\r
+  UINT8   ISCSIChapType[ISCSI_MAX_ATTEMPTS_NUM];\r
+  KEYWORD_STR Keyword[ISCSI_MAX_ATTEMPTS_NUM];\r
 } ISCSI_CONFIG_IFR_NVDATA;\r
 #pragma pack()\r
 \r