]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/IScsiDxe/IScsiConfig.h
Add IScsiDxe driver to NetworkPkg in order to support iSCSI over IPv6 stack and iSCSI...
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiConfig.h
diff --git a/NetworkPkg/IScsiDxe/IScsiConfig.h b/NetworkPkg/IScsiDxe/IScsiConfig.h
new file mode 100644 (file)
index 0000000..df0c753
--- /dev/null
@@ -0,0 +1,158 @@
+/** @file\r
+  The header file of functions for configuring or getting the parameters\r
+  relating to iSCSI.\r
+\r
+Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#ifndef _ISCSI_CONFIG_H_\r
+#define _ISCSI_CONFIG_H_\r
+\r
+#include "IScsiConfigNVDataStruc.h"\r
+\r
+typedef struct _ISCSI_FORM_CALLBACK_INFO ISCSI_FORM_CALLBACK_INFO;\r
+\r
+extern UINT8                       IScsiConfigVfrBin[];\r
+extern UINT8                       IScsiDxeStrings[];\r
+extern ISCSI_FORM_CALLBACK_INFO    *mCallbackInfo;\r
+extern EFI_GUID                    mVendorGuid;\r
+\r
+\r
+#define VAR_OFFSET(Field)    \\r
+  ((UINT16) ((UINTN) &(((ISCSI_CONFIG_IFR_NVDATA *) 0)->Field)))\r
+\r
+#define QUESTION_ID(Field)   \\r
+  ((UINT16) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET))\r
+\r
+\r
+#define DYNAMIC_ONE_OF_VAR_OFFSET           VAR_OFFSET  (Enabled)\r
+#define DYNAMIC_ORDERED_LIST_QUESTION_ID    QUESTION_ID (DynamicOrderedList)\r
+#define DYNAMIC_ORDERED_LIST_VAR_OFFSET     VAR_OFFSET  (DynamicOrderedList)\r
+#define ATTEMPT_DEL_QUESTION_ID             QUESTION_ID (DeleteAttemptList)\r
+#define ATTEMPT_DEL_VAR_OFFSET              VAR_OFFSET  (DeleteAttemptList)\r
+\r
+//\r
+// sizeof (EFI_MAC_ADDRESS) * 3\r
+//\r
+#define ISCSI_MAX_MAC_STRING_LEN            96\r
+\r
+#define ISCSI_INITATOR_NAME_VAR_NAME        L"I_NAME"\r
+\r
+#define ISCSI_CONFIG_VAR_ATTR               (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE)\r
+\r
+#define ISCSI_FORM_CALLBACK_INFO_SIGNATURE  SIGNATURE_32 ('I', 'f', 'c', 'i')\r
+\r
+#define ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK(Callback) \\r
+  CR ( \\r
+  Callback, \\r
+  ISCSI_FORM_CALLBACK_INFO, \\r
+  ConfigAccess, \\r
+  ISCSI_FORM_CALLBACK_INFO_SIGNATURE \\r
+  )\r
+\r
+#pragma pack(1)\r
+struct _ISCSI_ATTEMPT_CONFIG_NVDATA {\r
+  LIST_ENTRY                       Link;\r
+  UINT8                            NicIndex;\r
+  UINT8                            AttemptConfigIndex;\r
+  BOOLEAN                          DhcpSuccess;\r
+  BOOLEAN                          ValidiBFTPath;\r
+  BOOLEAN                          ValidPath;\r
+  UINT8                            AutoConfigureMode;\r
+  EFI_STRING_ID                    AttemptTitleToken;\r
+  EFI_STRING_ID                    AttemptTitleHelpToken;\r
+  CHAR8                            AttemptName[ATTEMPT_NAME_MAX_SIZE];\r
+  CHAR8                            MacString[ISCSI_MAX_MAC_STRING_LEN];\r
+  EFI_IP_ADDRESS                   PrimaryDns;\r
+  EFI_IP_ADDRESS                   SecondaryDns;\r
+  EFI_IP_ADDRESS                   DhcpServer;\r
+  ISCSI_SESSION_CONFIG_NVDATA      SessionConfigData;\r
+  UINT8                            AuthenticationType;\r
+  union {\r
+    ISCSI_CHAP_AUTH_CONFIG_NVDATA  CHAP;\r
+  } AuthConfigData;\r
+\r
+};\r
+\r
+///\r
+/// HII specific Vendor Device Path definition.\r
+///\r
+typedef struct {\r
+  VENDOR_DEVICE_PATH               VendorDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL         End;\r
+} HII_VENDOR_DEVICE_PATH;\r
+\r
+#pragma pack()\r
+\r
+struct _ISCSI_FORM_CALLBACK_INFO {\r
+  UINT32                           Signature;\r
+  EFI_HANDLE                       DriverHandle;\r
+  EFI_HII_CONFIG_ACCESS_PROTOCOL   ConfigAccess;\r
+  UINT16                           *KeyList;\r
+  VOID                             *FormBuffer;\r
+  EFI_HII_HANDLE                   RegisteredHandle;\r
+  ISCSI_ATTEMPT_CONFIG_NVDATA      *Current;\r
+};\r
+\r
+/**\r
+  Initialize the iSCSI configuration form.\r
+\r
+  @param[in]  DriverBindingHandle The iSCSI driverbinding handle.\r
+\r
+  @retval EFI_SUCCESS             The iSCSI configuration form is initialized.\r
+  @retval EFI_OUT_OF_RESOURCES    Failed to allocate memory.\r
+\r
+**/\r
+EFI_STATUS\r
+IScsiConfigFormInit (\r
+  IN EFI_HANDLE  DriverBindingHandle\r
+  );\r
+\r
+/**\r
+  Unload the iSCSI configuration form, this includes: delete all the iSCSI\r
+  configuration entries, uninstall the form callback protocol, and\r
+  free the resources used.\r
+\r
+  @param[in]  DriverBindingHandle The iSCSI driverbinding handle.\r
+\r
+  @retval EFI_SUCCESS             The iSCSI configuration form is unloaded.\r
+  @retval Others                  Failed to unload the form.\r
+\r
+**/\r
+EFI_STATUS\r
+IScsiConfigFormUnload (\r
+  IN EFI_HANDLE  DriverBindingHandle\r
+  );\r
+\r
+/**\r
+  Update the MAIN form to display the configured attempts.\r
+\r
+**/\r
+VOID\r
+IScsiConfigUpdateAttempt (\r
+  VOID\r
+  );\r
+\r
+/**\r
+  Get the attempt config data from global structure by the ConfigIndex.\r
+\r
+  @param[in]  AttemptConfigIndex     The unique index indicates the attempt.\r
+\r
+  @return       Pointer to the attempt config data.\r
+  @retval NULL  The attempt configuration data can not be found.\r
+\r
+**/\r
+ISCSI_ATTEMPT_CONFIG_NVDATA *\r
+IScsiConfigGetAttemptByConfigIndex (\r
+  IN UINT8                     AttemptConfigIndex\r
+  );\r
+\r
+#endif\r