]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/IScsiDxe/IScsiMisc.h
NetworkPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiMisc.h
index e2a27806ac8eccefcd362a696a98ba2d53f5c28f..92f42e140ace0e4f449fa19f8c7d11d612ae7a52 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
   Miscellaneous definitions for iSCSI driver.\r
 \r
-Copyright (c) 2004 - 2013, 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
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -17,6 +11,23 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 typedef struct _ISCSI_DRIVER_DATA ISCSI_DRIVER_DATA;\r
 \r
+///\r
+/// IPv4 Device Path Node Length\r
+///\r
+#define IP4_NODE_LEN_NEW_VERSIONS    27\r
+\r
+///\r
+/// IPv6 Device Path Node Length\r
+///\r
+#define IP6_NODE_LEN_OLD_VERSIONS    43\r
+#define IP6_NODE_LEN_NEW_VERSIONS    60\r
+\r
+///\r
+/// The ignored field StaticIpAddress's offset in old IPv6 Device Path\r
+///\r
+#define IP6_OLD_IPADDRESS_OFFSET      42\r
+\r
+\r
 #pragma pack(1)\r
 typedef struct _ISCSI_SESSION_CONFIG_NVDATA {\r
   UINT16            TargetPort;\r
@@ -29,14 +40,23 @@ typedef struct _ISCSI_SESSION_CONFIG_NVDATA {
 \r
   BOOLEAN           InitiatorInfoFromDhcp;\r
   BOOLEAN           TargetInfoFromDhcp;\r
+\r
   CHAR8             TargetName[ISCSI_NAME_MAX_SIZE];\r
   EFI_IP_ADDRESS    TargetIp;\r
   UINT8             PrefixLength;\r
   UINT8             BootLun[8];\r
 \r
-  UINT16            ConnectTimeout; ///< timout value in milliseconds\r
+  UINT16            ConnectTimeout; ///< timout value in milliseconds.\r
   UINT8             ConnectRetryCount;\r
   UINT8             IsId[6];\r
+\r
+  BOOLEAN           RedirectFlag;\r
+  UINT16            OriginalTargetPort;     // The port of proxy/virtual target.\r
+  EFI_IP_ADDRESS    OriginalTargetIp;       // The address of proxy/virtual target.\r
+\r
+  BOOLEAN           DnsMode;  // Flag indicate whether the Target address is expressed as URL format.\r
+  CHAR8             TargetUrl[ISCSI_TARGET_URI_MAX_SIZE];\r
+\r
 } ISCSI_SESSION_CONFIG_NVDATA;\r
 #pragma pack()\r
 \r
@@ -55,7 +75,7 @@ IScsiGetSubnetMaskPrefixLength (
   );\r
 \r
 /**\r
-  Convert the hexadecimal encoded LUN string into the 64-bit LUN. \r
+  Convert the hexadecimal encoded LUN string into the 64-bit LUN.\r
 \r
   @param[in]   Str             The hexadecimal encoded LUN string.\r
   @param[out]  Lun             Storage to return the 64-bit LUN.\r
@@ -127,7 +147,7 @@ IScsiAsciiStrToIp (
   @param[in, out]  HexStr      Pointer to the string.\r
   @param[in, out]  HexLength   The length of the string.\r
 \r
-  @retval EFI_SUCCESS          The binary data is converted to the hexadecimal string \r
+  @retval EFI_SUCCESS          The binary data is converted to the hexadecimal string\r
                                and the length of the string is updated.\r
   @retval EFI_BUFFER_TOO_SMALL The string is too small.\r
   @retval EFI_INVALID_PARAMETER The IP string is malformatted.\r
@@ -191,6 +211,7 @@ IScsiGenRandom (
   Record the NIC information in a global structure.\r
 \r
   @param[in]  Controller         The handle of the controller.\r
+  @param[in]  Image              Handle of the image.\r
 \r
   @retval EFI_SUCCESS            The operation is completed.\r
   @retval EFI_OUT_OF_RESOURCES   Do not have sufficient resource to finish this\r
@@ -199,7 +220,8 @@ IScsiGenRandom (
 **/\r
 EFI_STATUS\r
 IScsiAddNic (\r
-  IN EFI_HANDLE  Controller\r
+  IN EFI_HANDLE  Controller,\r
+  IN EFI_HANDLE  Image\r
   );\r
 \r
 /**\r
@@ -217,6 +239,44 @@ IScsiRemoveNic (
   IN EFI_HANDLE  Controller\r
   );\r
 \r
+/**\r
+  Create and initialize the Attempts.\r
+\r
+  @param[in]  AttemptNum          The number of Attempts will be created.\r
+\r
+  @retval EFI_SUCCESS             The Attempts have been created successfully.\r
+  @retval Others                  Failed to create the Attempt.\r
+\r
+**/\r
+EFI_STATUS\r
+IScsiCreateAttempts (\r
+  IN UINTN            AttemptNum\r
+  );\r
+\r
+/**\r
+  Create the iSCSI configuration Keywords for each attempt.\r
+\r
+  @param[in]  KeywordNum          The number Sets of Keywords will be created.\r
+\r
+  @retval EFI_SUCCESS             The operation is completed.\r
+  @retval Others                  Failed to create the Keywords.\r
+\r
+**/\r
+EFI_STATUS\r
+IScsiCreateKeywords (\r
+  IN UINTN            KeywordNum\r
+  );\r
+\r
+/**\r
+\r
+  Free the attempt configure data variable.\r
+\r
+**/\r
+VOID\r
+IScsiCleanAttemptVariable (\r
+  IN   VOID\r
+  );\r
+\r
 /**\r
   Get the recorded NIC information from a global structure by the Index.\r
 \r
@@ -232,7 +292,7 @@ IScsiGetNicInfoByIndex (
 \r
 \r
 /**\r
-  Get the NIC's PCI location and return it accroding to the composited\r
+  Get the NIC's PCI location and return it according to the composited\r
   format defined in iSCSI Boot Firmware Table.\r
 \r
   @param[in]   Controller        The handle of the controller.\r
@@ -290,10 +350,13 @@ IScsiCreateDriverData (
 /**\r
   Clean the iSCSI driver data.\r
 \r
-  @param[in]  Private The iSCSI driver data.\r
+  @param[in]              Private The iSCSI driver data.\r
+\r
+  @retval EFI_SUCCES      The clean operation is successful.\r
+  @retval Others          Other errors as indicated.\r
 \r
 **/\r
-VOID\r
+EFI_STATUS\r
 IScsiCleanDriverData (\r
   IN ISCSI_DRIVER_DATA  *Private\r
   );\r
@@ -303,10 +366,10 @@ IScsiCleanDriverData (
 \r
   @param[in]  Controller           The handle of the controller.\r
   @param[in]  IpVersion            IP_VERSION_4 or IP_VERSION_6.\r
-  \r
+\r
   @retval TRUE                     The handle of the controller need the Dhcp protocol.\r
   @retval FALSE                    The handle of the controller does not need the Dhcp protocol.\r
-  \r
+\r
 **/\r
 BOOLEAN\r
 IScsiDhcpIsConfigured (\r
@@ -314,6 +377,20 @@ IScsiDhcpIsConfigured (
   IN UINT8       IpVersion\r
   );\r
 \r
+/**\r
+  Check wheather the Controller handle is configured to use DNS protocol.\r
+\r
+  @param[in]  Controller           The handle of the controller.\r
+\r
+  @retval TRUE                     The handle of the controller need the DNS protocol.\r
+  @retval FALSE                    The handle of the controller does not need the DNS protocol.\r
+\r
+**/\r
+BOOLEAN\r
+IScsiDnsIsConfigured (\r
+  IN EFI_HANDLE  Controller\r
+  );\r
+\r
 /**\r
   Get the various configuration data of this iSCSI instance.\r
 \r
@@ -357,4 +434,34 @@ IScsiOnExitBootService (
   IN VOID       *Context\r
   );\r
 \r
+/**\r
+  Tests whether a controller handle is being managed by IScsi driver.\r
+\r
+  This function tests whether the driver specified by DriverBindingHandle is\r
+  currently managing the controller specified by ControllerHandle.  This test\r
+  is performed by evaluating if the the protocol specified by ProtocolGuid is\r
+  present on ControllerHandle and is was opened by DriverBindingHandle and Nic\r
+  Device handle with an attribute of EFI_OPEN_PROTOCOL_BY_DRIVER.\r
+  If ProtocolGuid is NULL, then ASSERT().\r
+\r
+  @param  ControllerHandle     A handle for a controller to test.\r
+  @param  DriverBindingHandle  Specifies the driver binding handle for the\r
+                               driver.\r
+  @param  ProtocolGuid         Specifies the protocol that the driver specified\r
+                               by DriverBindingHandle opens in its Start()\r
+                               function.\r
+\r
+  @retval EFI_SUCCESS          ControllerHandle is managed by the driver\r
+                               specified by DriverBindingHandle.\r
+  @retval EFI_UNSUPPORTED      ControllerHandle is not managed by the driver\r
+                               specified by DriverBindingHandle.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IScsiTestManagedDevice (\r
+  IN  EFI_HANDLE       ControllerHandle,\r
+  IN  EFI_HANDLE       DriverBindingHandle,\r
+  IN  EFI_GUID         *ProtocolGuid\r
+  );\r
 #endif\r