/** @file\r
Miscellaneous definitions for iSCSI driver.\r
\r
-Copyright (c) 2004 - 2012, 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
\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
\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
);\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
@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
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
**/\r
EFI_STATUS\r
IScsiAddNic (\r
- IN EFI_HANDLE Controller\r
+ IN EFI_HANDLE Controller,\r
+ IN EFI_HANDLE Image\r
);\r
\r
/**\r
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
\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
/**\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
\r
+/**\r
+ Check wheather the Controller handle is configured to use DHCP protocol.\r
+\r
+ @param[in] Controller The handle of the controller.\r
+ @param[in] IpVersion IP_VERSION_4 or IP_VERSION_6.\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
+BOOLEAN\r
+IScsiDhcpIsConfigured (\r
+ IN EFI_HANDLE Controller,\r
+ 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
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