[Description]
change the old code style to comply with Doxgen format [Impaction] add comments for every function [Reference Info] add comments to achieve the highest standard of code quality matrix git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5079 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
d16fc3dbb3
commit
12618416ec
@ -1,6 +1,7 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
UEFI Component Name(2) protocol implementation.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -17,7 +18,7 @@ Abstract:
|
|||||||
|
|
||||||
ComponentName protocol for iSCSI.
|
ComponentName protocol for iSCSI.
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#include "IScsiImpl.h"
|
#include "IScsiImpl.h"
|
||||||
|
|
||||||
@ -44,6 +45,44 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mIScsiDriverNameTable[] =
|
|||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the EFI Driver.
|
||||||
|
|
||||||
|
This function retrieves the user readable name of a driver in the form of a
|
||||||
|
Unicode string. If the driver specified by This has a user readable name in
|
||||||
|
the language specified by Language, then a pointer to the driver name is
|
||||||
|
returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
|
||||||
|
by This does not support the language specified by Language,
|
||||||
|
then EFI_UNSUPPORTED is returned.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME_PROTOCOL
|
||||||
|
instance.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a three character ISO 639-2 language
|
||||||
|
identifier.
|
||||||
|
This is the language of the driver name that that
|
||||||
|
the caller is requesting, and it must match one of
|
||||||
|
the languages specified in SupportedLanguages.
|
||||||
|
The number of languages supported by a driver is up
|
||||||
|
to the driver writer.
|
||||||
|
|
||||||
|
@param DriverName[out] A pointer to the Unicode string to return.
|
||||||
|
This Unicode string is the name of the
|
||||||
|
driver specified by This in the language
|
||||||
|
specified by Language.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Unicode string for the Driver specified by
|
||||||
|
This and the language specified by Language was
|
||||||
|
returned in DriverName.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER DriverName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||||
|
the language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiComponentNameGetDriverName (
|
IScsiComponentNameGetDriverName (
|
||||||
@ -51,32 +90,6 @@ IScsiComponentNameGetDriverName (
|
|||||||
IN CHAR8 *Language,
|
IN CHAR8 *Language,
|
||||||
OUT CHAR16 **DriverName
|
OUT CHAR16 **DriverName
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
Retrieves a Unicode string that is the user readable name of the EFI Driver.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
|
|
||||||
Language - A pointer to a three character ISO 639-2 language identifier.
|
|
||||||
This is the language of the driver name that that the caller
|
|
||||||
is requesting, and it must match one of the languages specified
|
|
||||||
in SupportedLanguages. The number of languages supported by a
|
|
||||||
driver is up to the driver writer.
|
|
||||||
DriverName - A pointer to the Unicode string to return. This Unicode string
|
|
||||||
is the name of the driver specified by This in the language
|
|
||||||
specified by Language.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
EFI_SUCCESS - The Unicode string for the Driver specified by This
|
|
||||||
and the language specified by Language was returned
|
|
||||||
in DriverName.
|
|
||||||
EFI_INVALID_PARAMETER - Language is NULL.
|
|
||||||
EFI_INVALID_PARAMETER - DriverName is NULL.
|
|
||||||
EFI_UNSUPPORTED - The driver specified by This does not support the
|
|
||||||
language specified by Language.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
return LookupUnicodeString2 (
|
return LookupUnicodeString2 (
|
||||||
Language,
|
Language,
|
||||||
@ -87,6 +100,55 @@ IScsiComponentNameGetDriverName (
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the controller
|
||||||
|
that is being managed by an EFI Driver.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] The handle of a controller that the driver specified by
|
||||||
|
This is managing. This handle specifies the controller
|
||||||
|
whose name is to be returned.
|
||||||
|
|
||||||
|
@param ChildHandle[in] The handle of the child controller to retrieve the name
|
||||||
|
of. This is an optional parameter that may be NULL. It
|
||||||
|
will be NULL for device drivers. It will also be NULL
|
||||||
|
for a bus drivers that wish to retrieve the name of the
|
||||||
|
bus controller. It will not be NULL for a bus driver
|
||||||
|
that wishes to retrieve the name of a child controller.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a three character ISO 639-2 language
|
||||||
|
identifier. This is the language of the controller name
|
||||||
|
that that the caller is requesting, and it must match one
|
||||||
|
of the languages specified in SupportedLanguages. The
|
||||||
|
number of languages supported by a driver is up to the
|
||||||
|
driver writer.
|
||||||
|
|
||||||
|
@param ControllerName[out] A pointer to the Unicode string to return. This Unicode
|
||||||
|
string is the name of the controller specified by
|
||||||
|
ControllerHandle and ChildHandle in the language
|
||||||
|
specified by Language from the point of view of the
|
||||||
|
driver specified by This.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Unicode string for the user readable name in the
|
||||||
|
language specified by Language for the driver
|
||||||
|
specified by This was returned in DriverName.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This is not currently managing
|
||||||
|
the controller specified by ControllerHandle and ChildHandle.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support the
|
||||||
|
language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiComponentNameGetControllerName (
|
IScsiComponentNameGetControllerName (
|
||||||
@ -96,51 +158,6 @@ IScsiComponentNameGetControllerName (
|
|||||||
IN CHAR8 *Language,
|
IN CHAR8 *Language,
|
||||||
OUT CHAR16 **ControllerName
|
OUT CHAR16 **ControllerName
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
Retrieves a Unicode string that is the user readable name of the controller
|
|
||||||
that is being managed by an EFI Driver.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
|
|
||||||
ControllerHandle - The handle of a controller that the driver specified by
|
|
||||||
This is managing. This handle specifies the controller
|
|
||||||
whose name is to be returned.
|
|
||||||
ChildHandle - The handle of the child controller to retrieve the name
|
|
||||||
of. This is an optional parameter that may be NULL. It
|
|
||||||
will be NULL for device drivers. It will also be NULL
|
|
||||||
for a bus drivers that wish to retrieve the name of the
|
|
||||||
bus controller. It will not be NULL for a bus driver
|
|
||||||
that wishes to retrieve the name of a child controller.
|
|
||||||
Language - A pointer to a three character ISO 639-2 language
|
|
||||||
identifier. This is the language of the controller name
|
|
||||||
that that the caller is requesting, and it must match one
|
|
||||||
of the languages specified in SupportedLanguages. The
|
|
||||||
number of languages supported by a driver is up to the
|
|
||||||
driver writer.
|
|
||||||
ControllerName - A pointer to the Unicode string to return. This Unicode
|
|
||||||
string is the name of the controller specified by
|
|
||||||
ControllerHandle and ChildHandle in the language
|
|
||||||
specified by Language from the point of view of the
|
|
||||||
driver specified by This.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
EFI_SUCCESS - The Unicode string for the user readable name in the
|
|
||||||
language specified by Language for the driver
|
|
||||||
specified by This was returned in DriverName.
|
|
||||||
EFI_INVALID_PARAMETER - ControllerHandle is not a valid EFI_HANDLE.
|
|
||||||
EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid
|
|
||||||
EFI_HANDLE.
|
|
||||||
EFI_INVALID_PARAMETER - Language is NULL.
|
|
||||||
EFI_INVALID_PARAMETER - ControllerName is NULL.
|
|
||||||
EFI_UNSUPPORTED - The driver specified by This is not currently
|
|
||||||
managing the controller specified by
|
|
||||||
ControllerHandle and ChildHandle.
|
|
||||||
EFI_UNSUPPORTED - The driver specified by This does not support the
|
|
||||||
language specified by Language.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
return EFI_UNSUPPORTED;
|
return EFI_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
Challenge-Handshake Authentication Protocol (CHAP) Configuration
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -15,7 +16,9 @@ Module Name:
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
--*/
|
This file is for CHAP configuration
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
#include "IScsiImpl.h"
|
#include "IScsiImpl.h"
|
||||||
#include "Md5.h"
|
#include "Md5.h"
|
||||||
@ -92,30 +95,26 @@ IScsiCHAPAuthTarget (
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function checks the received iSCSI Login Response during the security
|
||||||
|
negotiation stage.
|
||||||
|
|
||||||
|
@param Conn[in] The iSCSI connection.
|
||||||
|
|
||||||
|
@param Transit[in] The transit flag of the latest iSCSI Login Response.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Login Response passed the CHAP validation.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Some kind of protocol error happend.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiCHAPOnRspReceived (
|
IScsiCHAPOnRspReceived (
|
||||||
IN ISCSI_CONNECTION *Conn,
|
IN ISCSI_CONNECTION *Conn,
|
||||||
IN BOOLEAN Transit
|
IN BOOLEAN Transit
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
This function checks the received iSCSI Login Response during the security
|
|
||||||
negotiation stage.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Conn - The iSCSI connection.
|
|
||||||
Transit - The transit flag of the latest iSCSI Login Response.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The Login Response passed the CHAP validation.
|
|
||||||
EFI_OUT_OF_RESOURCES - Failed to allocate memory.
|
|
||||||
EFI_PROTOCOL_ERROR - Some kind of protocol error happend.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
ISCSI_SESSION *Session;
|
ISCSI_SESSION *Session;
|
||||||
@ -288,31 +287,27 @@ ON_EXIT:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function fills the CHAP authentication information into the login PDU
|
||||||
|
during the security negotiation stage in the iSCSI connection login.
|
||||||
|
|
||||||
|
@param Conn[in] The iSCSI connection.
|
||||||
|
|
||||||
|
@param Pdu[in] The PDU to send out.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS All check passed and the phase-related CHAP
|
||||||
|
authentication info is filled into the iSCSI PDU.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Some kind of protocol error happend.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiCHAPToSendReq (
|
IScsiCHAPToSendReq (
|
||||||
IN ISCSI_CONNECTION *Conn,
|
IN ISCSI_CONNECTION *Conn,
|
||||||
IN NET_BUF *Pdu
|
IN NET_BUF *Pdu
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
This function fills the CHAP authentication information into the login PDU
|
|
||||||
during the security negotiation stage in the iSCSI connection login.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Conn - The iSCSI connection.
|
|
||||||
Pdu - The PDU to send out.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - All check passed and the phase-related CHAP authentication
|
|
||||||
info is filled into the iSCSI PDU.
|
|
||||||
EFI_OUT_OF_RESOURCES - Failed to allocate memory.
|
|
||||||
EFI_PROTOCOL_ERROR - Some kind of protocol error happend.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
ISCSI_SESSION *Session;
|
ISCSI_SESSION *Session;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
The header file of CHAP configuration
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2007, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -14,8 +15,8 @@ Module Name:
|
|||||||
IScsiCHAP.h
|
IScsiCHAP.h
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
the header file for CHAP
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_CHAP_H_
|
#ifndef _ISCSI_CHAP_H_
|
||||||
#define _ISCSI_CHAP_H_
|
#define _ISCSI_CHAP_H_
|
||||||
@ -80,12 +81,43 @@ typedef struct _ISCSI_CHAP_AUTH_DATA {
|
|||||||
UINT32 OutChallengeLength;
|
UINT32 OutChallengeLength;
|
||||||
} ISCSI_CHAP_AUTH_DATA;
|
} ISCSI_CHAP_AUTH_DATA;
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function checks the received iSCSI Login Response during the security
|
||||||
|
negotiation stage.
|
||||||
|
|
||||||
|
@param Conn[in] The iSCSI connection.
|
||||||
|
|
||||||
|
@param Transit[in] The transit flag of the latest iSCSI Login Response.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Login Response passed the CHAP validation.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Some kind of protocol error happend.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiCHAPOnRspReceived (
|
IScsiCHAPOnRspReceived (
|
||||||
IN ISCSI_CONNECTION *Conn,
|
IN ISCSI_CONNECTION *Conn,
|
||||||
IN BOOLEAN Transit
|
IN BOOLEAN Transit
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function fills the CHAP authentication information into the login PDU
|
||||||
|
during the security negotiation stage in the iSCSI connection login.
|
||||||
|
|
||||||
|
@param Conn[in] The iSCSI connection.
|
||||||
|
|
||||||
|
@param Pdu[in] The PDU to send out.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS All check passed and the phase-related CHAP
|
||||||
|
authentication info is filled into the iSCSI PDU.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Some kind of protocol error happend.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiCHAPToSendReq (
|
IScsiCHAPToSendReq (
|
||||||
IN ISCSI_CONNECTION *Conn,
|
IN ISCSI_CONNECTION *Conn,
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
The common header file of Iscsi
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -15,7 +16,9 @@ Module Name:
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
--*/
|
The common header file of Iscsi
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_COMMON_H_
|
#ifndef _ISCSI_COMMON_H_
|
||||||
#define _ISCSI_COMMON_H_
|
#define _ISCSI_COMMON_H_
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
Helper functions for configuring or getting the parameters relating to ISCSI
|
||||||
|
|
||||||
Copyright (c) 2004 - 2008, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -15,7 +16,9 @@ Module Name:
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
--*/
|
Helper functions for configuring or getting the parameters relating to ISCSI
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
#include "IScsiImpl.h"
|
#include "IScsiImpl.h"
|
||||||
|
|
||||||
@ -29,76 +32,56 @@ LIST_ENTRY mIScsiConfigFormList = {
|
|||||||
&mIScsiConfigFormList
|
&mIScsiConfigFormList
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the IPv4 address into a dotted string.
|
||||||
|
|
||||||
|
@param Ip[in] The IPv4 address.
|
||||||
|
|
||||||
|
@param Str[out] The dotted IP string.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
VOID
|
VOID
|
||||||
IScsiIpToStr (
|
IScsiIpToStr (
|
||||||
IN EFI_IPv4_ADDRESS *Ip,
|
IN EFI_IPv4_ADDRESS *Ip,
|
||||||
OUT CHAR16 *Str
|
OUT CHAR16 *Str
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Convert the IPv4 address into a dotted string.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Ip - The IPv4 address.
|
|
||||||
Str - The dotted IP string.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UnicodeSPrint ( Str, 2 * IP4_STR_MAX_SIZE, L"%d.%d.%d.%d", Ip->Addr[0], Ip->Addr[1], Ip->Addr[2], Ip->Addr[3]);
|
UnicodeSPrint ( Str, 2 * IP4_STR_MAX_SIZE, L"%d.%d.%d.%d", Ip->Addr[0], Ip->Addr[1], Ip->Addr[2], Ip->Addr[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Pop up an invalid notify which displays the message in Warning.
|
||||||
|
|
||||||
|
@param Warning[in] The warning message.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
PopUpInvalidNotify (
|
PopUpInvalidNotify (
|
||||||
IN CHAR16 *Warning
|
IN CHAR16 *Warning
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Pop up an invalid notify which displays the message in Warning.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Warning - The warning message.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_INPUT_KEY Key;
|
EFI_INPUT_KEY Key;
|
||||||
|
|
||||||
IfrLibCreatePopUp (1, &Key, Warning);
|
IfrLibCreatePopUp (1, &Key, Warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Update the list of iSCSI devices the iSCSI driver is controlling.
|
||||||
|
|
||||||
|
@param None.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiUpdateDeviceList (
|
IScsiUpdateDeviceList (
|
||||||
VOID
|
VOID
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Update the list of iSCSI devices the iSCSI driver is controlling.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
ISCSI_DEVICE_LIST *DeviceList;
|
ISCSI_DEVICE_LIST *DeviceList;
|
||||||
@ -226,26 +209,19 @@ Returns:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the iSCSI configuration form entry by the index of the goto opcode actived.
|
||||||
|
|
||||||
|
@param Index[in] The 0-based index of the goto opcode actived.
|
||||||
|
|
||||||
|
@retval The iSCSI configuration form entry found.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
ISCSI_CONFIG_FORM_ENTRY *
|
ISCSI_CONFIG_FORM_ENTRY *
|
||||||
IScsiGetConfigFormEntryByIndex (
|
IScsiGetConfigFormEntryByIndex (
|
||||||
IN UINT32 Index
|
IN UINT32 Index
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Get the iSCSI configuration form entry by the index of the goto opcode actived.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Index - The 0-based index of the goto opcode actived.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
The iSCSI configuration form entry found.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINT32 CurrentIndex;
|
UINT32 CurrentIndex;
|
||||||
LIST_ENTRY *Entry;
|
LIST_ENTRY *Entry;
|
||||||
@ -266,28 +242,22 @@ Returns:
|
|||||||
return ConfigFormEntry;
|
return ConfigFormEntry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the iSCSI configuration data into the IFR data.
|
||||||
|
|
||||||
|
@param ConfigFormEntry[in] The iSCSI configuration form entry.
|
||||||
|
|
||||||
|
@param IfrNvData[in] The IFR nv data.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
VOID
|
VOID
|
||||||
IScsiConvertDeviceConfigDataToIfrNvData (
|
IScsiConvertDeviceConfigDataToIfrNvData (
|
||||||
IN ISCSI_CONFIG_FORM_ENTRY *ConfigFormEntry,
|
IN ISCSI_CONFIG_FORM_ENTRY *ConfigFormEntry,
|
||||||
IN ISCSI_CONFIG_IFR_NVDATA *IfrNvData
|
IN ISCSI_CONFIG_IFR_NVDATA *IfrNvData
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Convert the iSCSI configuration data into the IFR data.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
ConfigFormEntry - The iSCSI configuration form entry.
|
|
||||||
IfrNvData - The IFR nv data.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ISCSI_SESSION_CONFIG_NVDATA *SessionConfigData;
|
ISCSI_SESSION_CONFIG_NVDATA *SessionConfigData;
|
||||||
ISCSI_CHAP_AUTH_CONFIG_NVDATA *AuthConfigData;
|
ISCSI_CHAP_AUTH_CONFIG_NVDATA *AuthConfigData;
|
||||||
@ -324,7 +294,33 @@ Returns:
|
|||||||
IScsiAsciiStrToUnicodeStr (AuthConfigData->ReverseCHAPSecret, IfrNvData->ReverseCHAPSecret);
|
IScsiAsciiStrToUnicodeStr (AuthConfigData->ReverseCHAPSecret, IfrNvData->ReverseCHAPSecret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function allows a caller to extract the current configuration for one
|
||||||
|
or more named elements from the target driver.
|
||||||
|
|
||||||
|
@param This[in] Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
|
||||||
|
|
||||||
|
@param Request[in] A null-terminated Unicode string in <ConfigRequest> format.
|
||||||
|
|
||||||
|
@param Progress[out] On return, points to a character in the Request string.
|
||||||
|
Points to the string's null terminator if request was successful.
|
||||||
|
Points to the most recent '&' before the first failing name/value
|
||||||
|
pair (or the beginning of the string if the failure is in the
|
||||||
|
first name/value pair) if the request was not successful.
|
||||||
|
|
||||||
|
@param Results[out] A null-terminated Unicode string in <ConfigAltResp> format which
|
||||||
|
has all values filled in for the names in the Request string.
|
||||||
|
String to be allocated by the called function.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Results is filled with the requested values.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Not enough memory to store the results.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Request is NULL, illegal syntax, or unknown name.
|
||||||
|
|
||||||
|
@retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiFormExtractConfig (
|
IScsiFormExtractConfig (
|
||||||
@ -333,31 +329,6 @@ IScsiFormExtractConfig (
|
|||||||
OUT EFI_STRING *Progress,
|
OUT EFI_STRING *Progress,
|
||||||
OUT EFI_STRING *Results
|
OUT EFI_STRING *Results
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
This function allows a caller to extract the current configuration for one
|
|
||||||
or more named elements from the target driver.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
This - Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
|
|
||||||
Request - A null-terminated Unicode string in <ConfigRequest> format.
|
|
||||||
Progress - On return, points to a character in the Request string.
|
|
||||||
Points to the string's null terminator if request was successful.
|
|
||||||
Points to the most recent '&' before the first failing name/value
|
|
||||||
pair (or the beginning of the string if the failure is in the
|
|
||||||
first name/value pair) if the request was not successful.
|
|
||||||
Results - A null-terminated Unicode string in <ConfigAltResp> format which
|
|
||||||
has all values filled in for the names in the Request string.
|
|
||||||
String to be allocated by the called function.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
EFI_SUCCESS - The Results is filled with the requested values.
|
|
||||||
EFI_OUT_OF_RESOURCES - Not enough memory to store the results.
|
|
||||||
EFI_INVALID_PARAMETER - Request is NULL, illegal syntax, or unknown name.
|
|
||||||
EFI_NOT_FOUND - Routing data doesn't match any storage in this driver.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
CHAR8 InitiatorName[ISCSI_NAME_IFR_MAX_SIZE];
|
CHAR8 InitiatorName[ISCSI_NAME_IFR_MAX_SIZE];
|
||||||
@ -406,6 +377,25 @@ IScsiFormExtractConfig (
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function processes the results of changes in configuration.
|
||||||
|
|
||||||
|
@param This[in] Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
|
||||||
|
|
||||||
|
@param Configuration[in] A null-terminated Unicode string in <ConfigResp> format.
|
||||||
|
|
||||||
|
@param Progress[out] A pointer to a string filled in with the offset of the most
|
||||||
|
recent '&' before the first failing name/value pair (or the
|
||||||
|
beginning of the string if the failure is in the first
|
||||||
|
name/value pair) or the terminating NULL if all was successful.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Results is processed successfully.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Configuration is NULL.
|
||||||
|
|
||||||
|
@retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiFormRouteConfig (
|
IScsiFormRouteConfig (
|
||||||
@ -413,29 +403,35 @@ IScsiFormRouteConfig (
|
|||||||
IN CONST EFI_STRING Configuration,
|
IN CONST EFI_STRING Configuration,
|
||||||
OUT EFI_STRING *Progress
|
OUT EFI_STRING *Progress
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
This function processes the results of changes in configuration.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
This - Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
|
|
||||||
Configuration - A null-terminated Unicode string in <ConfigResp> format.
|
|
||||||
Progress - A pointer to a string filled in with the offset of the most
|
|
||||||
recent '&' before the first failing name/value pair (or the
|
|
||||||
beginning of the string if the failure is in the first
|
|
||||||
name/value pair) or the terminating NULL if all was successful.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
EFI_SUCCESS - The Results is processed successfully.
|
|
||||||
EFI_INVALID_PARAMETER - Configuration is NULL.
|
|
||||||
EFI_NOT_FOUND - Routing data doesn't match any storage in this driver.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function processes the results of changes in configuration.
|
||||||
|
|
||||||
|
@param This[in] Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
|
||||||
|
|
||||||
|
@param Action[in] Specifies the type of action taken by the browser.
|
||||||
|
|
||||||
|
@param QuestionId[in] A unique value which is sent to the original exporting driver
|
||||||
|
so that it can identify the type of data to expect.
|
||||||
|
|
||||||
|
@param Type[in] The type of value for the question.
|
||||||
|
|
||||||
|
@param Value[in] A pointer to the data being sent to the original exporting driver.
|
||||||
|
|
||||||
|
@param ActionRequest[out] On return, points to the action requested by the callback function.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The callback successfully handled the action.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the variable and its data.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR The variable could not be saved.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The specified Action is not supported by the callback.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiFormCallback (
|
IScsiFormCallback (
|
||||||
@ -446,27 +442,6 @@ IScsiFormCallback (
|
|||||||
IN EFI_IFR_TYPE_VALUE *Value,
|
IN EFI_IFR_TYPE_VALUE *Value,
|
||||||
OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
|
OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
This function processes the results of changes in configuration.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
This - Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
|
|
||||||
Action - Specifies the type of action taken by the browser.
|
|
||||||
QuestionId - A unique value which is sent to the original exporting driver
|
|
||||||
so that it can identify the type of data to expect.
|
|
||||||
Type - The type of value for the question.
|
|
||||||
Value - A pointer to the data being sent to the original exporting driver.
|
|
||||||
ActionRequest - On return, points to the action requested by the callback function.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
EFI_SUCCESS - The callback successfully handled the action.
|
|
||||||
EFI_OUT_OF_RESOURCES - Not enough storage is available to hold the variable and its data.
|
|
||||||
EFI_DEVICE_ERROR - The variable could not be saved.
|
|
||||||
EFI_UNSUPPORTED - The specified Action is not supported by the callback.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ISCSI_FORM_CALLBACK_INFO *Private;
|
ISCSI_FORM_CALLBACK_INFO *Private;
|
||||||
UINTN BufferSize;
|
UINTN BufferSize;
|
||||||
@ -722,32 +697,27 @@ IScsiFormCallback (
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Updates the iSCSI configuration form to add/delete an entry for the iSCSI
|
||||||
|
device specified by the Controller.
|
||||||
|
|
||||||
|
@param DriverBindingHandle[in] The driverbinding handle.
|
||||||
|
|
||||||
|
@param Controller[in] The controller handle of the iSCSI device.
|
||||||
|
|
||||||
|
@param AddForm[in] Whether to add or delete a form entry.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The iSCSI configuration form is updated.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiConfigUpdateForm (
|
IScsiConfigUpdateForm (
|
||||||
IN EFI_HANDLE DriverBindingHandle,
|
IN EFI_HANDLE DriverBindingHandle,
|
||||||
IN EFI_HANDLE Controller,
|
IN EFI_HANDLE Controller,
|
||||||
IN BOOLEAN AddForm
|
IN BOOLEAN AddForm
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Updates the iSCSI configuration form to add/delete an entry for the iSCSI
|
|
||||||
device specified by the Controller.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
DriverBindingHandle - The driverbinding handle.
|
|
||||||
Controller - The controller handle of the iSCSI device.
|
|
||||||
AddForm - Whether to add or delete a form entry.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The iSCSI configuration form is updated.
|
|
||||||
EFI_OUT_OF_RESOURCES - Failed to allocate memory.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
LIST_ENTRY *Entry;
|
LIST_ENTRY *Entry;
|
||||||
ISCSI_CONFIG_FORM_ENTRY *ConfigFormEntry;
|
ISCSI_CONFIG_FORM_ENTRY *ConfigFormEntry;
|
||||||
@ -887,26 +857,20 @@ Returns:
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize the iSCSI configuration form.
|
||||||
|
|
||||||
|
@param DriverBindingHandle[in] The iSCSI driverbinding handle.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The iSCSI configuration form is initialized.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiConfigFormInit (
|
IScsiConfigFormInit (
|
||||||
IN EFI_HANDLE DriverBindingHandle
|
IN EFI_HANDLE DriverBindingHandle
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Initialize the iSCSI configuration form.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
DriverBindingHandle - The iSCSI driverbinding handle.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The iSCSI configuration form is initialized.
|
|
||||||
EFI_OUT_OF_RESOURCES - Failed to allocate memory.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
|
EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
|
||||||
@ -980,28 +944,22 @@ Returns:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
EFI_STATUS
|
/**
|
||||||
IScsiConfigFormUnload (
|
|
||||||
IN EFI_HANDLE DriverBindingHandle
|
|
||||||
)
|
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Unload the iSCSI configuration form, this includes: delete all the iSCSI
|
Unload the iSCSI configuration form, this includes: delete all the iSCSI
|
||||||
device configuration entries, uninstall the form callback protocol and
|
device configuration entries, uninstall the form callback protocol and
|
||||||
free the resources used.
|
free the resources used.
|
||||||
|
|
||||||
Arguments:
|
@param DriverBindingHandle[in] The iSCSI driverbinding handle.
|
||||||
|
|
||||||
DriverBindingHandle - The iSCSI driverbinding handle.
|
@retval EFI_SUCCESS The iSCSI configuration form is unloaded.
|
||||||
|
|
||||||
Returns:
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
EFI_SUCCESS - The iSCSI configuration form is unloaded.
|
**/
|
||||||
EFI_OUT_OF_RESOURCES - Failed to allocate memory.
|
EFI_STATUS
|
||||||
|
IScsiConfigFormUnload (
|
||||||
--*/
|
IN EFI_HANDLE DriverBindingHandle
|
||||||
|
)
|
||||||
{
|
{
|
||||||
ISCSI_CONFIG_FORM_ENTRY *ConfigFormEntry;
|
ISCSI_CONFIG_FORM_ENTRY *ConfigFormEntry;
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
The header file of IScsiConfig.c
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -15,8 +16,9 @@ Module Name:
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
|
The header file of IScsiConfig.c
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_CONFIG_H_
|
#ifndef _ISCSI_CONFIG_H_
|
||||||
#define _ISCSI_CONFIG_H_
|
#define _ISCSI_CONFIG_H_
|
||||||
@ -84,6 +86,21 @@ typedef struct _ISCSI_FORM_CALLBACK_INFO {
|
|||||||
ISCSI_CONFIG_FORM_ENTRY *Current;
|
ISCSI_CONFIG_FORM_ENTRY *Current;
|
||||||
} ISCSI_FORM_CALLBACK_INFO;
|
} ISCSI_FORM_CALLBACK_INFO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Updates the iSCSI configuration form to add/delete an entry for the iSCSI
|
||||||
|
device specified by the Controller.
|
||||||
|
|
||||||
|
@param DriverBindingHandle[in] The driverbinding handle.
|
||||||
|
|
||||||
|
@param Controller[in] The controller handle of the iSCSI device.
|
||||||
|
|
||||||
|
@param AddForm[in] Whether to add or delete a form entry.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The iSCSI configuration form is updated.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiConfigUpdateForm (
|
IScsiConfigUpdateForm (
|
||||||
IN EFI_HANDLE DriverBindingHandle,
|
IN EFI_HANDLE DriverBindingHandle,
|
||||||
@ -91,11 +108,33 @@ IScsiConfigUpdateForm (
|
|||||||
IN BOOLEAN AddForm
|
IN BOOLEAN AddForm
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize the iSCSI configuration form.
|
||||||
|
|
||||||
|
@param DriverBindingHandle[in] The iSCSI driverbinding handle.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The iSCSI configuration form is initialized.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiConfigFormInit (
|
IScsiConfigFormInit (
|
||||||
IN EFI_HANDLE DriverBindingHandle
|
IN EFI_HANDLE DriverBindingHandle
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Unload the iSCSI configuration form, this includes: delete all the iSCSI
|
||||||
|
device configuration entries, uninstall the form callback protocol and
|
||||||
|
free the resources used.
|
||||||
|
|
||||||
|
@param DriverBindingHandle[in] The iSCSI driverbinding handle.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The iSCSI configuration form is unloaded.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiConfigFormUnload (
|
IScsiConfigFormUnload (
|
||||||
IN EFI_HANDLE DriverBindingHandle
|
IN EFI_HANDLE DriverBindingHandle
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
Define NVData structures used by the iSCSI configuration component
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2007, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -17,7 +18,7 @@ Abstract:
|
|||||||
|
|
||||||
NVData structure used by the iSCSI configuration component.
|
NVData structure used by the iSCSI configuration component.
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_NVDATASTRUC_H_
|
#ifndef _ISCSI_NVDATASTRUC_H_
|
||||||
#define _ISCSI_NVDATASTRUC_H_
|
#define _ISCSI_NVDATASTRUC_H_
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/**
|
||||||
|
ISci DHCP related configuration routines.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2007, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -15,12 +16,30 @@ Module Name:
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
iSCSI DHCP related configuration routines.
|
IScsi DHCP related configuration routines.
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#include "IScsiImpl.h"
|
#include "IScsiImpl.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
Extract the Root Path option and get the required target information.
|
||||||
|
|
||||||
|
@param RootPath[in] The RootPath.
|
||||||
|
|
||||||
|
@param Length[in] Length of the RootPath option payload.
|
||||||
|
|
||||||
|
@param ConfigNvData[in] The iSCSI session configuration data read from nonvolatile device.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS All required information is extracted from the RootPath option.
|
||||||
|
|
||||||
|
@retval EFI_NOT_FOUND The RootPath is not an iSCSI RootPath.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER The RootPath is mal-formatted.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiDhcpExtractRootPath (
|
IScsiDhcpExtractRootPath (
|
||||||
@ -28,26 +47,6 @@ IScsiDhcpExtractRootPath (
|
|||||||
IN UINT8 Length,
|
IN UINT8 Length,
|
||||||
IN ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData
|
IN ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Extract the Root Path option and get the required target information.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
RootPath - The RootPath.
|
|
||||||
Length - Length of the RootPath option payload.
|
|
||||||
ConfigNvData - The iSCSI session configuration data read from nonvolatile device.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - All required information is extracted from the RootPath option.
|
|
||||||
EFI_NOT_FOUND - The RootPath is not an iSCSI RootPath.
|
|
||||||
EFI_OUT_OF_RESOURCES - Failed to allocate memory.
|
|
||||||
EFI_INVALID_PARAMETER - The RootPath is mal-formatted.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
UINT8 IScsiRootPathIdLen;
|
UINT8 IScsiRootPathIdLen;
|
||||||
@ -183,6 +182,28 @@ ON_EXIT:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
The callback function registerd to the DHCP4 instance which is used to select
|
||||||
|
the qualified DHCP OFFER.
|
||||||
|
|
||||||
|
@param This[in] The DHCP4 protocol.
|
||||||
|
|
||||||
|
@param Context[in] The context set when configuring the DHCP4 protocol.
|
||||||
|
|
||||||
|
@param CurrentState[in] The current state of the DHCP4 protocol.
|
||||||
|
|
||||||
|
@param Dhcp4Event[in] The event occurs in the current state.
|
||||||
|
|
||||||
|
@param Packet[in] The DHCP packet that is to be sent or already received.
|
||||||
|
|
||||||
|
@param NewPackt[out] The packet used to replace the above Packet.
|
||||||
|
|
||||||
|
@retval EFI_NOT_READY The DHCP OFFER packet doesn't match our requirements.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS Either the DHCP OFFER is qualified or we're not intereseted
|
||||||
|
in the Dhcp4Event.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiDhcpSelectOffer (
|
IScsiDhcpSelectOffer (
|
||||||
@ -193,29 +214,6 @@ IScsiDhcpSelectOffer (
|
|||||||
IN EFI_DHCP4_PACKET * Packet, OPTIONAL
|
IN EFI_DHCP4_PACKET * Packet, OPTIONAL
|
||||||
OUT EFI_DHCP4_PACKET **NewPacket OPTIONAL
|
OUT EFI_DHCP4_PACKET **NewPacket OPTIONAL
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
The callback function registerd to the DHCP4 instance which is used to select
|
|
||||||
the qualified DHCP OFFER.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - The DHCP4 protocol.
|
|
||||||
Context - The context set when configuring the DHCP4 protocol.
|
|
||||||
CurrentState - The current state of the DHCP4 protocol.
|
|
||||||
Dhcp4Event - The event occurs in the current state.
|
|
||||||
Packet - The DHCP packet that is to be sent or already received.
|
|
||||||
NewPackt - The packet used to replace the above Packet.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_NOT_READY - The DHCP OFFER packet doesn't match our requirements.
|
|
||||||
EFI_SUCCESS - Either the DHCP OFFER is qualified or we're not intereseted
|
|
||||||
in the Dhcp4Event.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
UINT32 OptionCount;
|
UINT32 OptionCount;
|
||||||
@ -267,30 +265,27 @@ Returns:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Parse the DHCP ACK to get the address configuration and DNS information.
|
||||||
|
|
||||||
|
@param Dhcp4[in] The DHCP4 protocol.
|
||||||
|
|
||||||
|
@param ConfigData[in] The session configuration data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The DNS information is got from the DHCP ACK.
|
||||||
|
|
||||||
|
@retval EFI_NO_MAPPING DHCP failed to acquire address and other information.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER The DHCP ACK's DNS option is mal-formatted.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR Some unexpected error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiParseDhcpAck (
|
IScsiParseDhcpAck (
|
||||||
IN EFI_DHCP4_PROTOCOL *Dhcp4,
|
IN EFI_DHCP4_PROTOCOL *Dhcp4,
|
||||||
IN ISCSI_SESSION_CONFIG_DATA *ConfigData
|
IN ISCSI_SESSION_CONFIG_DATA *ConfigData
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Parse the DHCP ACK to get the address configuration and DNS information.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Dhcp4 - The DHCP4 protocol.
|
|
||||||
ConfigData - The session configuration data.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The DNS information is got from the DHCP ACK.
|
|
||||||
EFI_NO_MAPPING - DHCP failed to acquire address and other information.
|
|
||||||
EFI_INVALID_PARAMETER - The DHCP ACK's DNS option is mal-formatted.
|
|
||||||
EFI_DEVICE_ERROR - Some unexpected error happened.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_DHCP4_MODE_DATA Dhcp4ModeData;
|
EFI_DHCP4_MODE_DATA Dhcp4ModeData;
|
||||||
@ -366,32 +361,30 @@ Returns:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Parse the DHCP ACK to get the address configuration and DNS information.
|
||||||
|
|
||||||
|
@param Image[in] The handle of the driver image.
|
||||||
|
|
||||||
|
@param Controller[in] The handle of the controller;
|
||||||
|
|
||||||
|
@param ConfigData[in] The session configuration data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The DNS information is got from the DHCP ACK.
|
||||||
|
|
||||||
|
@retval EFI_NO_MAPPING DHCP failed to acquire address and other information.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER The DHCP ACK's DNS option is mal-formatted.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR Some unexpected error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiDoDhcp (
|
IScsiDoDhcp (
|
||||||
IN EFI_HANDLE Image,
|
IN EFI_HANDLE Image,
|
||||||
IN EFI_HANDLE Controller,
|
IN EFI_HANDLE Controller,
|
||||||
IN ISCSI_SESSION_CONFIG_DATA *ConfigData
|
IN ISCSI_SESSION_CONFIG_DATA *ConfigData
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Parse the DHCP ACK to get the address configuration and DNS information.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Image - The handle of the driver image.
|
|
||||||
Controller - The handle of the controller;
|
|
||||||
ConfigData - The session configuration data.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The DNS information is got from the DHCP ACK.
|
|
||||||
EFI_NO_MAPPING - DHCP failed to acquire address and other information.
|
|
||||||
EFI_INVALID_PARAMETER - The DHCP ACK's DNS option is mal-formatted.
|
|
||||||
EFI_DEVICE_ERROR - Some unexpected error happened.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_HANDLE Dhcp4Handle;
|
EFI_HANDLE Dhcp4Handle;
|
||||||
EFI_DHCP4_PROTOCOL *Dhcp4;
|
EFI_DHCP4_PROTOCOL *Dhcp4;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
Data structure for DHCP support
|
||||||
|
|
||||||
Copyright (c) 2004 - 2008, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -14,8 +15,9 @@ Module Name:
|
|||||||
IScsiDhcp.h
|
IScsiDhcp.h
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
The header file of IScsiDhcp.c
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_DHCP_H_
|
#ifndef _ISCSI_DHCP_H_
|
||||||
#define _ISCSI_DHCP_H_
|
#define _ISCSI_DHCP_H_
|
||||||
@ -45,6 +47,24 @@ typedef struct _ISCSI_ROOT_PATH_FIELD {
|
|||||||
UINT8 Len;
|
UINT8 Len;
|
||||||
} ISCSI_ROOT_PATH_FIELD;
|
} ISCSI_ROOT_PATH_FIELD;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Parse the DHCP ACK to get the address configuration and DNS information.
|
||||||
|
|
||||||
|
@param Image[in] The handle of the driver image.
|
||||||
|
|
||||||
|
@param Controller[in] The handle of the controller;
|
||||||
|
|
||||||
|
@param ConfigData[in] The session configuration data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The DNS information is got from the DHCP ACK.
|
||||||
|
|
||||||
|
@retval EFI_NO_MAPPING DHCP failed to acquire address and other information.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER The DHCP ACK's DNS option is mal-formatted.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR Some unexpected error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiDoDhcp (
|
IScsiDoDhcp (
|
||||||
IN EFI_HANDLE Image,
|
IN EFI_HANDLE Image,
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
The entry point of IScsi driver
|
||||||
|
|
||||||
Copyright (c) 2004 - 2008, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -14,8 +15,9 @@ Module Name:
|
|||||||
IScsiDriver.c
|
IScsiDriver.c
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
The entry point of IScsi driver
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#include "IScsiImpl.h"
|
#include "IScsiImpl.h"
|
||||||
|
|
||||||
@ -30,6 +32,22 @@ EFI_DRIVER_BINDING_PROTOCOL gIScsiDriverBinding = {
|
|||||||
|
|
||||||
EFI_GUID mIScsiPrivateGuid = ISCSI_PRIVATE_GUID;
|
EFI_GUID mIScsiPrivateGuid = ISCSI_PRIVATE_GUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Test to see if IScsi driver supports the given controller.
|
||||||
|
|
||||||
|
@param This[in] Protocol instance pointer.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] Handle of controller to test.
|
||||||
|
|
||||||
|
@param RemainingDevicePath[in] Optional parameter use to pick a specific child device to start.
|
||||||
|
|
||||||
|
@retval EFI_SUCCES This driver supports the controller.
|
||||||
|
|
||||||
|
@retval EFI_ALREADY_STARTED This driver is already running on this device.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED This driver doesn't support the controller.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiDriverBindingSupported (
|
IScsiDriverBindingSupported (
|
||||||
@ -37,25 +55,6 @@ IScsiDriverBindingSupported (
|
|||||||
IN EFI_HANDLE ControllerHandle,
|
IN EFI_HANDLE ControllerHandle,
|
||||||
IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
|
IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Test to see if iSCSI driver supports the given controller.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - Protocol instance pointer.
|
|
||||||
ControllerHandle - Handle of controller to test.
|
|
||||||
RemainingDevicePath - Optional parameter use to pick a specific child device to start.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCES - This driver supports the controller.
|
|
||||||
EFI_ALREADY_STARTED - This driver is already running on this device.
|
|
||||||
EFI_UNSUPPORTED - This driver doesn't support the controller.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_DEVICE_PATH_PROTOCOL *CurrentDevicePath;
|
EFI_DEVICE_PATH_PROTOCOL *CurrentDevicePath;
|
||||||
@ -100,6 +99,20 @@ Returns:
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Start to manage the controller.
|
||||||
|
|
||||||
|
@param This[in] Protocol instance pointer.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] Handle of the controller.
|
||||||
|
|
||||||
|
@param RemainingDevicePath[in] Optional parameter use to pick a specific child device to start.
|
||||||
|
|
||||||
|
@retval EFI_SUCCES This driver supports this device.
|
||||||
|
|
||||||
|
@retval EFI_ALREADY_STARTED This driver is already running on this device.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiDriverBindingStart (
|
IScsiDriverBindingStart (
|
||||||
@ -107,24 +120,6 @@ IScsiDriverBindingStart (
|
|||||||
IN EFI_HANDLE ControllerHandle,
|
IN EFI_HANDLE ControllerHandle,
|
||||||
IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
|
IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Start to manage the controller.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - Protocol instance pointer.
|
|
||||||
ControllerHandle - Handle of the controller.
|
|
||||||
RemainingDevicePath - Optional parameter use to pick a specific child device to start.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCES - This driver supports this device.
|
|
||||||
EFI_ALREADY_STARTED - This driver is already running on this device.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
ISCSI_DRIVER_DATA *Private;
|
ISCSI_DRIVER_DATA *Private;
|
||||||
@ -209,6 +204,20 @@ ON_ERROR:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Release the control of this controller and remove the IScsi functions.
|
||||||
|
|
||||||
|
@param This[in] Protocol instance pointer.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] Handle of controller to stop.
|
||||||
|
|
||||||
|
@param NumberOfChildren[in] Not used.
|
||||||
|
|
||||||
|
@param ChildHandleBuffer[in] Not used.
|
||||||
|
|
||||||
|
@retval EFI_SUCCES This driver supports this device.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiDriverBindingStop (
|
IScsiDriverBindingStop (
|
||||||
@ -217,24 +226,6 @@ IScsiDriverBindingStop (
|
|||||||
IN UINTN NumberOfChildren,
|
IN UINTN NumberOfChildren,
|
||||||
IN EFI_HANDLE *ChildHandleBuffer
|
IN EFI_HANDLE *ChildHandleBuffer
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Release the control of this controller and remove the iSCSI functions.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - Protocol instance pointer.
|
|
||||||
ControllerHandle - Handle of controller to stop.
|
|
||||||
NumberOfChildren - Not used.
|
|
||||||
ChildHandleBuffer - Not used.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCES - This driver supports this device.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_HANDLE IScsiController;
|
EFI_HANDLE IScsiController;
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
@ -315,27 +306,21 @@ Returns:
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Unload the iSCSI driver.
|
||||||
|
|
||||||
|
@param ImageHandle[in] The handle of the driver image.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The driver is unloaded.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR Some unexpected error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
EfiIScsiUnload (
|
EfiIScsiUnload (
|
||||||
IN EFI_HANDLE ImageHandle
|
IN EFI_HANDLE ImageHandle
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Unload the iSCSI driver.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
ImageHandle - The handle of the driver image.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The driver is unloaded.
|
|
||||||
EFI_DEVICE_ERROR - Some unexpected error happened.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
UINTN DeviceHandleCount;
|
UINTN DeviceHandleCount;
|
||||||
@ -389,29 +374,24 @@ Returns:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize the global variables publish the driver binding protocol.
|
||||||
|
|
||||||
|
@param ImageHandle[in] The handle of the driver image.
|
||||||
|
|
||||||
|
@param SystemTable[in] The EFI system table.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The protocols are installed.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR Some unexpected error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiDriverEntryPoint (
|
IScsiDriverEntryPoint (
|
||||||
IN EFI_HANDLE ImageHandle,
|
IN EFI_HANDLE ImageHandle,
|
||||||
IN EFI_SYSTEM_TABLE *SystemTable
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Initialize the global variables publish the driver binding protocol.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
ImageHandle - The handle of the driver image.
|
|
||||||
SystemTable - The EFI system table.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The protocols are installed.
|
|
||||||
EFI_DEVICE_ERROR - Some unexpected error happened.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_ISCSI_INITIATOR_NAME_PROTOCOL *IScsiInitiatorName;
|
EFI_ISCSI_INITIATOR_NAME_PROTOCOL *IScsiInitiatorName;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
The header file of IScsiDriver.c
|
||||||
|
|
||||||
Copyright (c) 2004 - 2008, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -14,8 +15,9 @@ Module Name:
|
|||||||
IScsiDriver.h
|
IScsiDriver.h
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
The header file of IScsiDriver.c
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_DRIVER_H_
|
#ifndef _ISCSI_DRIVER_H_
|
||||||
#define _ISCSI_DRIVER_H_
|
#define _ISCSI_DRIVER_H_
|
||||||
@ -55,6 +57,22 @@ typedef struct _ISCSI_PRIVATE_PROTOCOL {
|
|||||||
//
|
//
|
||||||
// EFI Driver Binding Protocol for iSCSI driver.
|
// EFI Driver Binding Protocol for iSCSI driver.
|
||||||
//
|
//
|
||||||
|
/**
|
||||||
|
Test to see if IScsi driver supports the given controller.
|
||||||
|
|
||||||
|
@param This[in] Protocol instance pointer.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] Handle of controller to test.
|
||||||
|
|
||||||
|
@param RemainingDevicePath[in] Optional parameter use to pick a specific child device to start.
|
||||||
|
|
||||||
|
@retval EFI_SUCCES This driver supports the controller.
|
||||||
|
|
||||||
|
@retval EFI_ALREADY_STARTED This driver is already running on this device.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED This driver doesn't support the controller.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiDriverBindingSupported (
|
IScsiDriverBindingSupported (
|
||||||
@ -63,6 +81,20 @@ IScsiDriverBindingSupported (
|
|||||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Start to manage the controller.
|
||||||
|
|
||||||
|
@param This[in] Protocol instance pointer.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] Handle of the controller.
|
||||||
|
|
||||||
|
@param RemainingDevicePath[in] Optional parameter use to pick a specific child device to start.
|
||||||
|
|
||||||
|
@retval EFI_SUCCES This driver supports this device.
|
||||||
|
|
||||||
|
@retval EFI_ALREADY_STARTED This driver is already running on this device.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiDriverBindingStart (
|
IScsiDriverBindingStart (
|
||||||
@ -71,6 +103,20 @@ IScsiDriverBindingStart (
|
|||||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Release the control of this controller and remove the IScsi functions.
|
||||||
|
|
||||||
|
@param This[in] Protocol instance pointer.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] Handle of controller to stop.
|
||||||
|
|
||||||
|
@param NumberOfChildren[in] Not used.
|
||||||
|
|
||||||
|
@param ChildHandleBuffer[in] Not used.
|
||||||
|
|
||||||
|
@retval EFI_SUCCES This driver supports this device.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiDriverBindingStop (
|
IScsiDriverBindingStop (
|
||||||
@ -81,8 +127,46 @@ IScsiDriverBindingStop (
|
|||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
// EFI Component Name Protocol for iSCSI driver.
|
// EFI Component Name Protocol for IScsi driver.
|
||||||
//
|
//
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the EFI Driver.
|
||||||
|
|
||||||
|
This function retrieves the user readable name of a driver in the form of a
|
||||||
|
Unicode string. If the driver specified by This has a user readable name in
|
||||||
|
the language specified by Language, then a pointer to the driver name is
|
||||||
|
returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
|
||||||
|
by This does not support the language specified by Language,
|
||||||
|
then EFI_UNSUPPORTED is returned.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME_PROTOCOL
|
||||||
|
instance.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a three character ISO 639-2 language
|
||||||
|
identifier.
|
||||||
|
This is the language of the driver name that that
|
||||||
|
the caller is requesting, and it must match one of
|
||||||
|
the languages specified in SupportedLanguages.
|
||||||
|
The number of languages supported by a driver is up
|
||||||
|
to the driver writer.
|
||||||
|
|
||||||
|
@param DriverName[out] A pointer to the Unicode string to return.
|
||||||
|
This Unicode string is the name of the
|
||||||
|
driver specified by This in the language
|
||||||
|
specified by Language.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Unicode string for the Driver specified by
|
||||||
|
This and the language specified by Language was
|
||||||
|
returned in DriverName.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER DriverName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||||
|
the language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiComponentNameGetDriverName (
|
IScsiComponentNameGetDriverName (
|
||||||
@ -91,6 +175,55 @@ IScsiComponentNameGetDriverName (
|
|||||||
OUT CHAR16 **DriverName
|
OUT CHAR16 **DriverName
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the controller
|
||||||
|
that is being managed by an EFI Driver.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] The handle of a controller that the driver specified by
|
||||||
|
This is managing. This handle specifies the controller
|
||||||
|
whose name is to be returned.
|
||||||
|
|
||||||
|
@param ChildHandle[in] The handle of the child controller to retrieve the name
|
||||||
|
of. This is an optional parameter that may be NULL. It
|
||||||
|
will be NULL for device drivers. It will also be NULL
|
||||||
|
for a bus drivers that wish to retrieve the name of the
|
||||||
|
bus controller. It will not be NULL for a bus driver
|
||||||
|
that wishes to retrieve the name of a child controller.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a three character ISO 639-2 language
|
||||||
|
identifier. This is the language of the controller name
|
||||||
|
that that the caller is requesting, and it must match one
|
||||||
|
of the languages specified in SupportedLanguages. The
|
||||||
|
number of languages supported by a driver is up to the
|
||||||
|
driver writer.
|
||||||
|
|
||||||
|
@param ControllerName[out] A pointer to the Unicode string to return. This Unicode
|
||||||
|
string is the name of the controller specified by
|
||||||
|
ControllerHandle and ChildHandle in the language
|
||||||
|
specified by Language from the point of view of the
|
||||||
|
driver specified by This.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Unicode string for the user readable name in the
|
||||||
|
language specified by Language for the driver
|
||||||
|
specified by This was returned in DriverName.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This is not currently managing
|
||||||
|
the controller specified by ControllerHandle and ChildHandle.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support the
|
||||||
|
language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiComponentNameGetControllerName (
|
IScsiComponentNameGetControllerName (
|
||||||
@ -102,8 +235,35 @@ IScsiComponentNameGetControllerName (
|
|||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
// EFI iSCSI Initiator Name Protocol for iSCSI driver.
|
// EFI IScsi Initiator Name Protocol for IScsi driver.
|
||||||
//
|
//
|
||||||
|
/**
|
||||||
|
Retrieves the current set value of iSCSI Initiator Name.
|
||||||
|
|
||||||
|
@param This[in] Pointer to the EFI_ISCSI_INITIATOR_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param BufferSize[in][out] Size of the buffer in bytes pointed to by Buffer / Actual
|
||||||
|
size of the variable data buffer.
|
||||||
|
|
||||||
|
@param Buffer[out] Pointer to the buffer for data to be read.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS Data was successfully retrieved into the provided
|
||||||
|
buffer and the BufferSize was sufficient to handle the
|
||||||
|
iSCSI initiator name.
|
||||||
|
@retval EFI_BUFFER_TOO_SMALL BufferSize is too small for the result. BufferSize will
|
||||||
|
be updated with the size required to complete the request.
|
||||||
|
Buffer will not be affected.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER BufferSize is NULL. BufferSize and Buffer will not be
|
||||||
|
affected.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Buffer is NULL. BufferSize and Buffer will not be
|
||||||
|
affected.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR The iSCSI initiator name could not be retrieved due to
|
||||||
|
a hardware error.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiGetInitiatorName (
|
IScsiGetInitiatorName (
|
||||||
@ -112,6 +272,35 @@ IScsiGetInitiatorName (
|
|||||||
OUT VOID *Buffer
|
OUT VOID *Buffer
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets the iSCSI Initiator Name.
|
||||||
|
|
||||||
|
@param This[in] Pointer to the EFI_ISCSI_INITIATOR_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param BufferSize[in][out] Size of the buffer in bytes pointed to by Buffer.
|
||||||
|
|
||||||
|
@param Buffer[out] Pointer to the buffer for data to be written.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS Data was successfully stored by the protocol.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED Platform policies do not allow for data to be written.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER BufferSize exceeds the maximum allowed limit.
|
||||||
|
BufferSize will be updated with the maximum size
|
||||||
|
required to complete the request.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Buffersize is NULL. BufferSize and Buffer will not be
|
||||||
|
affected.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Buffer is NULL. BufferSize and Buffer will not be affected.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR The data could not be stored due to a hardware error.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the data.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Input iSCSI initiator name does not adhere to RFC 3720.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiSetInitiatorName (
|
IScsiSetInitiatorName (
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
The IScsi's EFI_EXT_SCSI_PASS_THRU_PROTOCOL driver
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2007, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -14,11 +15,29 @@ Module Name:
|
|||||||
IScsiExtScsiPassThru.c
|
IScsiExtScsiPassThru.c
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
The IScsi's EFI_EXT_SCSI_PASS_THRU_PROTOCOL driver
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#include "IScsiImpl.h"
|
#include "IScsiImpl.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function sends out the SCSI command via iSCSI transport layer and returned
|
||||||
|
back the data received from the iSCSI target.
|
||||||
|
|
||||||
|
@param This[in] The EFI_EXT_SCSI_PASS_THRU_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param Target[in] The Target ID of device to send the SCSI Request Packet.
|
||||||
|
|
||||||
|
@param Lun[in] The LUN of the device to send the SCSI Request Packet.
|
||||||
|
|
||||||
|
@param Packet[in][out] The SCSI Request Packet to send to the device.
|
||||||
|
|
||||||
|
@param Event[in] The event used in non-blocking mode, it should be always NULL.
|
||||||
|
|
||||||
|
@retval EFI_STATUS
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiExtScsiPassThruFunction (
|
IScsiExtScsiPassThruFunction (
|
||||||
@ -28,26 +47,6 @@ IScsiExtScsiPassThruFunction (
|
|||||||
IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet,
|
IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet,
|
||||||
IN EFI_EVENT Event OPTIONAL
|
IN EFI_EVENT Event OPTIONAL
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
This function sends out the SCSI command via iSCSI transport layer and returned
|
|
||||||
back the data received from the iSCSI target.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - The EFI_EXT_SCSI_PASS_THRU_PROTOCOL instance.
|
|
||||||
Target - The Target ID of device to send the SCSI Request Packet.
|
|
||||||
Lun - The LUN of the device to send the SCSI Request Packet.
|
|
||||||
Packet - The SCSI Request Packet to send to the device.
|
|
||||||
Event - The event used in non-blocking mode, it should be always NULL.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_STATUS
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
if (Target[0] != 0) {
|
if (Target[0] != 0) {
|
||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
@ -60,6 +59,29 @@ Returns:
|
|||||||
return IScsiExecuteScsiCommand (This, Target, Lun, Packet);
|
return IScsiExecuteScsiCommand (This, Target, Lun, Packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieve the list of legal Target IDs for SCSI devices on a SCSI channel.
|
||||||
|
|
||||||
|
@param This[in] The EFI_EXT_SCSI_PASS_THRU_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param Target[in][out] On input, a pointer to the Target ID of a SCSI device present on the
|
||||||
|
SCSI channel. On output, a pointer to the Target ID of the next SCSI
|
||||||
|
device present on a SCSI channel. An input value of 0xFFFFFFFF retrieves
|
||||||
|
the Target ID of the first SCSI device present on a SCSI channel.
|
||||||
|
|
||||||
|
@param Lun[in][out] On input, a pointer to the LUN of a SCSI device present on the SCSI
|
||||||
|
channel. On output, a pointer to the LUN of the next SCSI device
|
||||||
|
present on a SCSI channel.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Target ID and Lun of the next SCSI device
|
||||||
|
on the SCSI channel was returned in Target and Lun.
|
||||||
|
|
||||||
|
@retval EFI_NOT_FOUND There are no more SCSI devices on this SCSI channel.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Target is not 0xFFFFFFFF,and Target and Lun were not
|
||||||
|
returned on a previous call to GetNextDevice().
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiExtScsiPassThruGetNextTargetLun (
|
IScsiExtScsiPassThruGetNextTargetLun (
|
||||||
@ -67,32 +89,6 @@ IScsiExtScsiPassThruGetNextTargetLun (
|
|||||||
IN OUT UINT8 **Target,
|
IN OUT UINT8 **Target,
|
||||||
IN OUT UINT64 *Lun
|
IN OUT UINT64 *Lun
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Retrieve the list of legal Target IDs for SCSI devices on a SCSI channel.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - The EFI_EXT_SCSI_PASS_THRU_PROTOCOL instance..
|
|
||||||
Target - On input, a pointer to the Target ID of a SCSI device present on the
|
|
||||||
SCSI channel. On output, a pointer to the Target ID of the next SCSI
|
|
||||||
device present on a SCSI channel. An input value of 0xFFFFFFFF
|
|
||||||
retrieves the Target ID of the first SCSI device present on a SCSI channel.
|
|
||||||
Lun - On input, a pointer to the LUN of a SCSI device present on the SCSI
|
|
||||||
channel. On output, a pointer to the LUN of the next SCSI device present on
|
|
||||||
a SCSI channel.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The Target ID and Lun of the next SCSI device
|
|
||||||
on the SCSI channel was returned in Target and Lun.
|
|
||||||
EFI_NOT_FOUND - There are no more SCSI devices on this SCSI channel.
|
|
||||||
EFI_INVALID_PARAMETER - Target is not 0xFFFFFFFF,and Target and Lun were not
|
|
||||||
returned on a previous call to GetNextDevice().
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ISCSI_DRIVER_DATA *Private;
|
ISCSI_DRIVER_DATA *Private;
|
||||||
ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData;
|
ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData;
|
||||||
@ -119,6 +115,38 @@ Returns:
|
|||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Allocate and build a device path node for a SCSI device on a SCSI channel.
|
||||||
|
|
||||||
|
@param This[in] Protocol instance pointer.
|
||||||
|
|
||||||
|
@param Target[in] The Target ID of the SCSI device for which
|
||||||
|
a device path node is to be allocated and built.
|
||||||
|
|
||||||
|
@param Lun[in] The LUN of the SCSI device for which a device
|
||||||
|
path node is to be allocated and built.
|
||||||
|
|
||||||
|
@param DevicePath[in][out] A pointer to a single device path node that
|
||||||
|
describes the SCSI device specified by
|
||||||
|
Target and Lun. This function is responsible
|
||||||
|
for allocating the buffer DevicePath with the boot
|
||||||
|
service AllocatePool(). It is the caller's
|
||||||
|
responsibility to free DevicePath when the caller
|
||||||
|
is finished with DevicePath.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The device path node that describes the SCSI device
|
||||||
|
specified by Target and Lun was allocated and
|
||||||
|
returned in DevicePath.
|
||||||
|
|
||||||
|
@retval EFI_NOT_FOUND The SCSI devices specified by Target and Lun does
|
||||||
|
not exist on the SCSI channel.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER DevicePath is NULL.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES There are not enough resources to allocate
|
||||||
|
DevicePath.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiExtScsiPassThruBuildDevicePath (
|
IScsiExtScsiPassThruBuildDevicePath (
|
||||||
@ -127,39 +155,6 @@ IScsiExtScsiPassThruBuildDevicePath (
|
|||||||
IN UINT64 Lun,
|
IN UINT64 Lun,
|
||||||
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath
|
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Allocate and build a device path node for a SCSI device on a SCSI channel.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - Protocol instance pointer.
|
|
||||||
Target - The Target ID of the SCSI device for which
|
|
||||||
a device path node is to be allocated and built.
|
|
||||||
Lun - The LUN of the SCSI device for which a device
|
|
||||||
path node is to be allocated and built.
|
|
||||||
DevicePath - A pointer to a single device path node that
|
|
||||||
describes the SCSI device specified by
|
|
||||||
Target and Lun. This function is responsible
|
|
||||||
for allocating the buffer DevicePath with the boot
|
|
||||||
service AllocatePool(). It is the caller's
|
|
||||||
responsibility to free DevicePath when the caller
|
|
||||||
is finished with DevicePath.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The device path node that describes the SCSI device
|
|
||||||
specified by Target and Lun was allocated and
|
|
||||||
returned in DevicePath.
|
|
||||||
EFI_NOT_FOUND - The SCSI devices specified by Target and Lun does
|
|
||||||
not exist on the SCSI channel.
|
|
||||||
EFI_INVALID_PARAMETER - DevicePath is NULL.
|
|
||||||
EFI_OUT_OF_RESOURCES - There are not enough resources to allocate
|
|
||||||
DevicePath.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ISCSI_DRIVER_DATA *Private;
|
ISCSI_DRIVER_DATA *Private;
|
||||||
ISCSI_SESSION *Session;
|
ISCSI_SESSION *Session;
|
||||||
@ -223,6 +218,33 @@ Returns:
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Translate a device path node to a Target ID and LUN.
|
||||||
|
|
||||||
|
@param This[in] Protocol instance pointer.
|
||||||
|
|
||||||
|
@param DevicePath[in] A pointer to the device path node that
|
||||||
|
describes a SCSI device on the SCSI channel.
|
||||||
|
|
||||||
|
@param Target[out] A pointer to the Target ID of a SCSI device
|
||||||
|
on the SCSI channel.
|
||||||
|
|
||||||
|
@param Lun[out] A pointer to the LUN of a SCSI device on
|
||||||
|
the SCSI channel.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS DevicePath was successfully translated to a
|
||||||
|
Target ID and LUN, and they were returned
|
||||||
|
in Target and Lun.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER DevicePath/Target/Lun is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED This driver does not support the device path
|
||||||
|
node type in DevicePath.
|
||||||
|
|
||||||
|
@retval EFI_NOT_FOUND A valid translation from DevicePath to a
|
||||||
|
Target ID and LUN does not exist.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiExtScsiPassThruGetTargetLun (
|
IScsiExtScsiPassThruGetTargetLun (
|
||||||
@ -231,33 +253,6 @@ IScsiExtScsiPassThruGetTargetLun (
|
|||||||
OUT UINT8 **Target,
|
OUT UINT8 **Target,
|
||||||
OUT UINT64 *Lun
|
OUT UINT64 *Lun
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Translate a device path node to a Target ID and LUN.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - Protocol instance pointer.
|
|
||||||
DevicePath - A pointer to the device path node that
|
|
||||||
describes a SCSI device on the SCSI channel.
|
|
||||||
Target - A pointer to the Target ID of a SCSI device
|
|
||||||
on the SCSI channel.
|
|
||||||
Lun - A pointer to the LUN of a SCSI device on
|
|
||||||
the SCSI channel.
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - DevicePath was successfully translated to a
|
|
||||||
Target ID and LUN, and they were returned
|
|
||||||
in Target and Lun.
|
|
||||||
EFI_INVALID_PARAMETER - DevicePath/Target/Lun is NULL.
|
|
||||||
EFI_UNSUPPORTED - This driver does not support the device path
|
|
||||||
node type in DevicePath.
|
|
||||||
EFI_NOT_FOUND - A valid translation from DevicePath to a
|
|
||||||
Target ID and LUN does not exist.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ISCSI_DRIVER_DATA *Private;
|
ISCSI_DRIVER_DATA *Private;
|
||||||
ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData;
|
ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData;
|
||||||
@ -287,31 +282,36 @@ Returns:
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Resets a SCSI channel.This operation resets all the SCSI devices connected to
|
||||||
|
the SCSI channel.
|
||||||
|
|
||||||
|
@param This[in] Protocol instance pointer.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED It's not supported.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiExtScsiPassThruResetChannel (
|
IScsiExtScsiPassThruResetChannel (
|
||||||
IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This
|
IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Resets a SCSI channel.This operation resets all the SCSI devices connected to
|
|
||||||
the SCSI channel.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - Protocol instance pointer.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_UNSUPPORTED - It's not supported.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
return EFI_UNSUPPORTED;
|
return EFI_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Resets a SCSI device that is connected to a SCSI channel.
|
||||||
|
|
||||||
|
@param This[in] Protocol instance pointer.
|
||||||
|
|
||||||
|
@param Target[in] The Target ID of the SCSI device to reset.
|
||||||
|
|
||||||
|
@param Lun[in] The LUN of the SCSI device to reset.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED It's not supported.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiExtScsiPassThruResetTargetLun (
|
IScsiExtScsiPassThruResetTargetLun (
|
||||||
@ -319,61 +319,37 @@ IScsiExtScsiPassThruResetTargetLun (
|
|||||||
IN UINT8 *Target,
|
IN UINT8 *Target,
|
||||||
IN UINT64 Lun
|
IN UINT64 Lun
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Resets a SCSI device that is connected to a SCSI channel.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - Protocol instance pointer.
|
|
||||||
Target - The Target ID of the SCSI device to reset.
|
|
||||||
Lun - The LUN of the SCSI device to reset.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_UNSUPPORTED - It's not supported.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
return EFI_UNSUPPORTED;
|
return EFI_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieve the list of legal Target IDs for SCSI devices on a SCSI channel.
|
||||||
|
|
||||||
|
@param This[in] Protocol instance pointer.
|
||||||
|
|
||||||
|
@param Target[in] On input, a pointer to the Target ID of a SCSI
|
||||||
|
device present on the SCSI channel. On output,
|
||||||
|
a pointer to the Target ID of the next SCSI device
|
||||||
|
present on a SCSI channel. An input value of
|
||||||
|
0xFFFFFFFF retrieves the Target ID of the first
|
||||||
|
SCSI device present on a SCSI channel.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Target ID and Lun of the next SCSI device
|
||||||
|
on the SCSI channel was returned in Target and Lun.
|
||||||
|
|
||||||
|
@retval EFI_NOT_FOUND There are no more SCSI devices on this SCSI channel.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Target is not 0xFFFFFFFF,and Target and Lun were not
|
||||||
|
returned on a previous call to GetNextDevice().
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiExtScsiPassThruGetNextTarget (
|
IScsiExtScsiPassThruGetNextTarget (
|
||||||
IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,
|
IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This,
|
||||||
IN OUT UINT8 **Target
|
IN OUT UINT8 **Target
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Retrieve the list of legal Target IDs for SCSI devices on a SCSI channel.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
This - Protocol instance pointer.
|
|
||||||
Target - On input, a pointer to the Target ID of a SCSI
|
|
||||||
device present on the SCSI channel. On output,
|
|
||||||
a pointer to the Target ID of the next SCSI device
|
|
||||||
present on a SCSI channel. An input value of
|
|
||||||
0xFFFFFFFF retrieves the Target ID of the first
|
|
||||||
SCSI device present on a SCSI channel.
|
|
||||||
Lun - On input, a pointer to the LUN of a SCSI device
|
|
||||||
present on the SCSI channel. On output, a pointer
|
|
||||||
to the LUN of the next SCSI device present on
|
|
||||||
a SCSI channel.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The Target ID and Lun of the next SCSI device
|
|
||||||
on the SCSI channel was returned in Target and Lun.
|
|
||||||
EFI_NOT_FOUND - There are no more SCSI devices on this SCSI channel.
|
|
||||||
EFI_INVALID_PARAMETER - Target is not 0xFFFFFFFF,and Target and Lun were not
|
|
||||||
returned on a previous call to GetNextDevice().
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINT8 TargetId[TARGET_MAX_BYTES];
|
UINT8 TargetId[TARGET_MAX_BYTES];
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
The header file of IScsiExtScsiPassThru.c
|
||||||
|
|
||||||
Copyright (c) 2004 - 2008, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -14,8 +15,9 @@ Module Name:
|
|||||||
IScsiExtScsiPassThru.h
|
IScsiExtScsiPassThru.h
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
The header file of IScsiExtScsiPassThru.c
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_EXT_SCSI_PASS_THRU_H_
|
#ifndef _ISCSI_EXT_SCSI_PASS_THRU_H_
|
||||||
#define _ISCSI_EXT_SCSI_PASS_THRU_H_
|
#define _ISCSI_EXT_SCSI_PASS_THRU_H_
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
Implementation for iSCSI Boot Firmware Table publication.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -17,30 +18,23 @@ Abstract:
|
|||||||
|
|
||||||
Implementation for iSCSI Boot Firmware Table publication.
|
Implementation for iSCSI Boot Firmware Table publication.
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#include "IScsiImpl.h"
|
#include "IScsiImpl.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize the header of the iSCSI Boot Firmware Table.
|
||||||
|
|
||||||
|
@param Header[in] The header of the iSCSI Boot Firmware Table.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
VOID
|
VOID
|
||||||
IScsiInitIbfTableHeader (
|
IScsiInitIbfTableHeader (
|
||||||
IN EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER *Header
|
IN EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER *Header
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Initialize the header of the iSCSI Boot Firmware Table.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Header - The header of the iSCSI Boot Firmware Table.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ZeroMem (Header, sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER));
|
ZeroMem (Header, sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER));
|
||||||
|
|
||||||
@ -56,29 +50,23 @@ Returns:
|
|||||||
Header->OemId[4] = 'L';
|
Header->OemId[4] = 'L';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize the control section of the iSCSI Boot Firmware Table.
|
||||||
|
|
||||||
|
@param Table[in] The ACPI table.
|
||||||
|
|
||||||
|
@param HandleCount[in] The number of the handles associated with iSCSI sessions, it's
|
||||||
|
equal to the number of iSCSI sessions.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
VOID
|
VOID
|
||||||
IScsiInitControlSection (
|
IScsiInitControlSection (
|
||||||
IN EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER *Table,
|
IN EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER *Table,
|
||||||
IN UINTN HandleCount
|
IN UINTN HandleCount
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Initialize the control section of the iSCSI Boot Firmware Table.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Table - The ACPI table.
|
|
||||||
HandleCount - The number of the handles associated with iSCSI sessions, it's
|
|
||||||
equal to the number of iSCSI sessions.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *Control;
|
EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *Control;
|
||||||
UINTN NumOffset;
|
UINTN NumOffset;
|
||||||
@ -105,6 +93,19 @@ Returns:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add one item into the heap.
|
||||||
|
|
||||||
|
@param Heap[in][out] On input, the current address of the heap; On output, the address of
|
||||||
|
the heap after the item is added.
|
||||||
|
|
||||||
|
@param Data[in] The data to add into the heap.
|
||||||
|
|
||||||
|
@param Len[in] Length of the Data in byte.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
VOID
|
VOID
|
||||||
IScsiAddHeapItem (
|
IScsiAddHeapItem (
|
||||||
@ -112,24 +113,6 @@ IScsiAddHeapItem (
|
|||||||
IN VOID *Data,
|
IN VOID *Data,
|
||||||
IN UINTN Len
|
IN UINTN Len
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Add one item into the heap.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Heap - On input, the current address of the heap; On output, the address of
|
|
||||||
the heap after the item is added.
|
|
||||||
Data - The data to add into the heap.
|
|
||||||
Len - Length of the Data in byte.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Add one byte for the NULL delimiter.
|
// Add one byte for the NULL delimiter.
|
||||||
@ -140,6 +123,18 @@ Returns:
|
|||||||
*(*Heap + Len) = 0;
|
*(*Heap + Len) = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Fill the Initiator section of the iSCSI Boot Firmware Table.
|
||||||
|
|
||||||
|
@param Table[in] The ACPI table.
|
||||||
|
|
||||||
|
@param Heap[in][out] The heap.
|
||||||
|
|
||||||
|
@param Handle[in] The handle associated with the iSCSI session.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
VOID
|
VOID
|
||||||
IScsiFillInitiatorSection (
|
IScsiFillInitiatorSection (
|
||||||
@ -147,23 +142,6 @@ IScsiFillInitiatorSection (
|
|||||||
IN OUT UINT8 **Heap,
|
IN OUT UINT8 **Heap,
|
||||||
IN EFI_HANDLE Handle
|
IN EFI_HANDLE Handle
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Fill the Initiator section of the iSCSI Boot Firmware Table.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Table - The ACPI table.
|
|
||||||
Heap - The heap.
|
|
||||||
Handle - The handle associated with the iSCSI session.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *Control;
|
EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *Control;
|
||||||
EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE *Initiator;
|
EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE *Initiator;
|
||||||
@ -209,28 +187,22 @@ Returns:
|
|||||||
Initiator->IScsiNameOffset = (UINT16) ((UINTN) *Heap - (UINTN) Table);
|
Initiator->IScsiNameOffset = (UINT16) ((UINTN) *Heap - (UINTN) Table);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Map the v4 IP address into v6 IP address.
|
||||||
|
|
||||||
|
@param V4 The v4 IP address.
|
||||||
|
|
||||||
|
@param V6 The v6 IP address.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
VOID
|
VOID
|
||||||
IScsiMapV4ToV6Addr (
|
IScsiMapV4ToV6Addr (
|
||||||
IN EFI_IPv4_ADDRESS *V4,
|
IN EFI_IPv4_ADDRESS *V4,
|
||||||
OUT EFI_IPv6_ADDRESS *V6
|
OUT EFI_IPv6_ADDRESS *V6
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Map the v4 IP address into v6 IP address.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
V4 - The v4 IP address.
|
|
||||||
V6 - The v6 IP address.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
|
|
||||||
@ -244,27 +216,20 @@ Returns:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the NIC's PCI location and return it accroding to the composited
|
||||||
|
format defined in iSCSI Boot Firmware Table.
|
||||||
|
|
||||||
|
@param Controller[in] The handle of the controller.
|
||||||
|
|
||||||
|
@retval UINT16 The composited representation of the NIC PCI location.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
UINT16
|
UINT16
|
||||||
IScsiGetNICPciLocation (
|
IScsiGetNICPciLocation (
|
||||||
IN EFI_HANDLE Controller
|
IN EFI_HANDLE Controller
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Get the NIC's PCI location and return it accroding to the composited
|
|
||||||
format defined in iSCSI Boot Firmware Table.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Controller - The handle of the controller.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
UINT16 - The composited representation of the NIC PCI location.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||||
@ -306,26 +271,19 @@ Returns:
|
|||||||
return (UINT16) ((Bus << 8) | (Device << 3) | Function);
|
return (UINT16) ((Bus << 8) | (Device << 3) | Function);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the MAC address of the controller.
|
||||||
|
|
||||||
|
@param Controller[in] The handle of the controller.
|
||||||
|
|
||||||
|
@retval EFI_MAC_ADDRESS * The mac address.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
EFI_MAC_ADDRESS *
|
EFI_MAC_ADDRESS *
|
||||||
IScsiGetMacAddress (
|
IScsiGetMacAddress (
|
||||||
IN EFI_HANDLE Controller
|
IN EFI_HANDLE Controller
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Get the MAC address of the controller.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Controller - The handle of the controller.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_MAC_ADDRESS * - The mac address.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_SIMPLE_NETWORK_PROTOCOL *Snp;
|
EFI_SIMPLE_NETWORK_PROTOCOL *Snp;
|
||||||
@ -340,6 +298,20 @@ Returns:
|
|||||||
return &Snp->Mode->PermanentAddress;
|
return &Snp->Mode->PermanentAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Fill the NIC and target sections in iSCSI Boot Firmware Table.
|
||||||
|
|
||||||
|
@param Table[in] The buffer of the ACPI table.
|
||||||
|
|
||||||
|
@param Heap[in][out] The heap buffer used to store the variable length parameters such as iSCSI name.
|
||||||
|
|
||||||
|
@param HandleCount[in] The number of handles having iSCSI private protocol installed.
|
||||||
|
|
||||||
|
@param Handles[in] The handle buffer.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
VOID
|
VOID
|
||||||
IScsiFillNICAndTargetSections (
|
IScsiFillNICAndTargetSections (
|
||||||
@ -348,24 +320,6 @@ IScsiFillNICAndTargetSections (
|
|||||||
IN UINTN HandleCount,
|
IN UINTN HandleCount,
|
||||||
IN EFI_HANDLE *Handles
|
IN EFI_HANDLE *Handles
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Fill the NIC and target sections in iSCSI Boot Firmware Table.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Table - The buffer of the ACPI table.
|
|
||||||
Heap - The heap buffer used to store the variable length parameters such as iSCSI name.
|
|
||||||
HandleCount - The number of handles having iSCSI private protocol installed.
|
|
||||||
Handles - The handle buffer.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *Control;
|
EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *Control;
|
||||||
EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE *Nic;
|
EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE *Nic;
|
||||||
@ -520,26 +474,19 @@ Returns:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Publish and remove the iSCSI Boot Firmware Table according to the iSCSI
|
||||||
|
session status.
|
||||||
|
|
||||||
|
@param None.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiPublishIbft (
|
IScsiPublishIbft (
|
||||||
IN VOID
|
IN VOID
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Publish and remove the iSCSI Boot Firmware Table according to the iSCSI
|
|
||||||
session status.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
UINTN TableHandle;
|
UINTN TableHandle;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
Some extra definitions for iBFT
|
||||||
|
|
||||||
Copyright (c) 2004 - 2008, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -17,7 +18,7 @@ Abstract:
|
|||||||
|
|
||||||
Some extra definitions for iBFT.
|
Some extra definitions for iBFT.
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_IBFT_H_
|
#ifndef _ISCSI_IBFT_H_
|
||||||
#define _ISCSI_IBFT_H_
|
#define _ISCSI_IBFT_H_
|
||||||
@ -32,6 +33,15 @@ Abstract:
|
|||||||
|
|
||||||
#define IBFT_ROUNDUP(size) NET_ROUNDUP ((size), EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_ALIGNMENT)
|
#define IBFT_ROUNDUP(size) NET_ROUNDUP ((size), EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_ALIGNMENT)
|
||||||
|
|
||||||
|
/**
|
||||||
|
Publish and remove the iSCSI Boot Firmware Table according to the iSCSI
|
||||||
|
session status.
|
||||||
|
|
||||||
|
@param None.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiPublishIbft (
|
IScsiPublishIbft (
|
||||||
IN VOID
|
IN VOID
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
The header file of IScsiImpl.c
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -14,8 +15,9 @@ Module Name:
|
|||||||
IScsiImpl.h
|
IScsiImpl.h
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
The header file of IScsiImpl.c
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_IMPL_H_
|
#ifndef _ISCSI_IMPL_H_
|
||||||
#define _ISCSI_IMPL_H_
|
#define _ISCSI_IMPL_H_
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
Implementation for EFI iSCSI Initiator Name Protocol.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -17,7 +18,7 @@ Abstract:
|
|||||||
|
|
||||||
Implementation for EFI iSCSI Initiator Name Protocol.
|
Implementation for EFI iSCSI Initiator Name Protocol.
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#include "IScsiImpl.h"
|
#include "IScsiImpl.h"
|
||||||
|
|
||||||
@ -26,6 +27,33 @@ EFI_ISCSI_INITIATOR_NAME_PROTOCOL gIScsiInitiatorName = {
|
|||||||
IScsiSetInitiatorName
|
IScsiSetInitiatorName
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves the current set value of iSCSI Initiator Name.
|
||||||
|
|
||||||
|
@param This[in] Pointer to the EFI_ISCSI_INITIATOR_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param BufferSize[in][out] Size of the buffer in bytes pointed to by Buffer / Actual
|
||||||
|
size of the variable data buffer.
|
||||||
|
|
||||||
|
@param Buffer[out] Pointer to the buffer for data to be read.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS Data was successfully retrieved into the provided
|
||||||
|
buffer and the BufferSize was sufficient to handle the
|
||||||
|
iSCSI initiator name.
|
||||||
|
@retval EFI_BUFFER_TOO_SMALL BufferSize is too small for the result. BufferSize will
|
||||||
|
be updated with the size required to complete the request.
|
||||||
|
Buffer will not be affected.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER BufferSize is NULL. BufferSize and Buffer will not be
|
||||||
|
affected.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Buffer is NULL. BufferSize and Buffer will not be
|
||||||
|
affected.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR The iSCSI initiator name could not be retrieved due to
|
||||||
|
a hardware error.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiGetInitiatorName (
|
IScsiGetInitiatorName (
|
||||||
@ -33,35 +61,6 @@ IScsiGetInitiatorName (
|
|||||||
IN OUT UINTN *BufferSize,
|
IN OUT UINTN *BufferSize,
|
||||||
OUT VOID *Buffer
|
OUT VOID *Buffer
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Retrieves the current set value of iSCSI Initiator Name.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - Pointer to the EFI_ISCSI_INITIATOR_NAME_PROTOCOL instance.
|
|
||||||
BufferSize - Size of the buffer in bytes pointed to by Buffer / Actual size of
|
|
||||||
the variable data buffer.
|
|
||||||
Buffer - Pointer to the buffer for data to be read.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - Data was successfully retrieved into the provided
|
|
||||||
buffer and the BufferSize was sufficient to handle the
|
|
||||||
iSCSI initiator name.
|
|
||||||
EFI_BUFFER_TOO_SMALL - BufferSize is too small for the result. BufferSize will
|
|
||||||
be updated with the size required to complete the request.
|
|
||||||
Buffer will not be affected.
|
|
||||||
EFI_INVALID_PARAMETER - BufferSize is NULL. BufferSize and Buffer will not be
|
|
||||||
affected.
|
|
||||||
EFI_INVALID_PARAMETER - Buffer is NULL. BufferSize and Buffer will not be
|
|
||||||
affected.
|
|
||||||
EFI_DEVICE_ERROR - The iSCSI initiator name could not be retrieved due to
|
|
||||||
a hardware error.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
|
||||||
@ -80,6 +79,35 @@ Returns:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets the iSCSI Initiator Name.
|
||||||
|
|
||||||
|
@param This[in] Pointer to the EFI_ISCSI_INITIATOR_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param BufferSize[in][out] Size of the buffer in bytes pointed to by Buffer.
|
||||||
|
|
||||||
|
@param Buffer[out] Pointer to the buffer for data to be written.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS Data was successfully stored by the protocol.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED Platform policies do not allow for data to be written.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER BufferSize exceeds the maximum allowed limit.
|
||||||
|
BufferSize will be updated with the maximum size
|
||||||
|
required to complete the request.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Buffersize is NULL. BufferSize and Buffer will not be
|
||||||
|
affected.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Buffer is NULL. BufferSize and Buffer will not be affected.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR The data could not be stored due to a hardware error.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the data.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Input iSCSI initiator name does not adhere to RFC 3720.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiSetInitiatorName (
|
IScsiSetInitiatorName (
|
||||||
@ -87,33 +115,6 @@ IScsiSetInitiatorName (
|
|||||||
IN OUT UINTN *BufferSize,
|
IN OUT UINTN *BufferSize,
|
||||||
OUT VOID *Buffer
|
OUT VOID *Buffer
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Sets the iSSI Initiator Name.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
This - Pointer to the EFI_ISCSI_INITIATOR_NAME_PROTOCOL instance.
|
|
||||||
BufferSize - Size of the buffer in bytes pointed to by Buffer.
|
|
||||||
Buffer - Pointer to the buffer for data to be written.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - Data was successfully stored by the protocol.
|
|
||||||
EFI_UNSUPPORTED - Platform policies do not allow for data to be written.
|
|
||||||
EFI_INVALID_PARAMETER - BufferSize exceeds the maximum allowed limit.
|
|
||||||
BufferSize will be updated with the maximum size
|
|
||||||
required to complete the request.
|
|
||||||
EFI_INVALID_PARAMETER - Buffersize is NULL. BufferSize and Buffer will not be
|
|
||||||
affected.
|
|
||||||
EFI_INVALID_PARAMETER - Buffer is NULL. BufferSize and Buffer will not be affected.
|
|
||||||
EFI_DEVICE_ERROR - The data could not be stored due to a hardware error.
|
|
||||||
EFI_OUT_OF_RESOURCES - Not enough storage is available to hold the data
|
|
||||||
EFI_PROTOCOL_ERROR - Input iSCSI initiator name does not adhere to RFC 3720
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
Miscellaneous routines for IScsi driver.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -15,35 +16,33 @@ Module Name:
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
Miscellaneous routines for iSCSI driver.
|
Miscellaneous routines for IScsi driver.
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#include "IScsiImpl.h"
|
#include "IScsiImpl.h"
|
||||||
|
|
||||||
STATIC CONST CHAR8 IScsiHexString[] = "0123456789ABCDEFabcdef";
|
STATIC CONST CHAR8 IScsiHexString[] = "0123456789ABCDEFabcdef";
|
||||||
|
|
||||||
|
/**
|
||||||
|
Determines if a Unicode character is a hexadecimal digit.
|
||||||
|
The test is case insensitive.
|
||||||
|
|
||||||
|
@param Digit[out] Pointer to byte that receives the value of the hex character.
|
||||||
|
|
||||||
|
@param Char[in] Unicode character to test.
|
||||||
|
|
||||||
|
@retval TRUE If the character is a hexadecimal digit.
|
||||||
|
|
||||||
|
@retval FALSE Otherwise.
|
||||||
|
|
||||||
|
**/
|
||||||
static
|
static
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
IsHexDigit (
|
IsHexDigit (
|
||||||
OUT UINT8 *Digit,
|
OUT UINT8 *Digit,
|
||||||
IN CHAR16 Char
|
IN CHAR16 Char
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
Determines if a Unicode character is a hexadecimal digit.
|
|
||||||
The test is case insensitive.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
Digit - Pointer to byte that receives the value of the hex character.
|
|
||||||
Char - Unicode character to test.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
TRUE - If the character is a hexadecimal digit.
|
|
||||||
FALSE - Otherwise.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
if ((Char >= L'0') && (Char <= L'9')) {
|
if ((Char >= L'0') && (Char <= L'9')) {
|
||||||
*Digit = (UINT8) (Char - L'0');
|
*Digit = (UINT8) (Char - L'0');
|
||||||
@ -63,27 +62,23 @@ IsHexDigit (
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Removes (trims) specified leading and trailing characters from a string.
|
||||||
|
|
||||||
|
@param str[in][out] Pointer to the null-terminated string to be trimmed. On return,
|
||||||
|
str will hold the trimmed string.
|
||||||
|
|
||||||
|
@param CharC[in] Character will be trimmed from str.
|
||||||
|
|
||||||
|
@retval NONE.
|
||||||
|
|
||||||
|
**/
|
||||||
static
|
static
|
||||||
VOID
|
VOID
|
||||||
StrTrim (
|
StrTrim (
|
||||||
IN OUT CHAR16 *str,
|
IN OUT CHAR16 *str,
|
||||||
IN CHAR16 CharC
|
IN CHAR16 CharC
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Removes (trims) specified leading and trailing characters from a string.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
str - Pointer to the null-terminated string to be trimmed. On return,
|
|
||||||
str will hold the trimmed string.
|
|
||||||
CharC - Character will be trimmed from str.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
CHAR16 *p1;
|
CHAR16 *p1;
|
||||||
CHAR16 *p2;
|
CHAR16 *p2;
|
||||||
@ -123,25 +118,18 @@ Returns:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Calculate the prefix length of the IPv4 subnet mask.
|
||||||
|
|
||||||
|
@param SubnetMask[in] The IPv4 subnet mask.
|
||||||
|
|
||||||
|
@retval The prefix length of the subnet mask.
|
||||||
|
|
||||||
|
**/
|
||||||
UINT8
|
UINT8
|
||||||
IScsiGetSubnetMaskPrefixLength (
|
IScsiGetSubnetMaskPrefixLength (
|
||||||
IN EFI_IPv4_ADDRESS *SubnetMask
|
IN EFI_IPv4_ADDRESS *SubnetMask
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Calculate the prefix length of the IPv4 subnet mask.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
SubnetMask - The IPv4 subnet mask.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
The prefix length of the subnet mask.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINT8 Len;
|
UINT8 Len;
|
||||||
UINT32 ReverseMask;
|
UINT32 ReverseMask;
|
||||||
@ -170,28 +158,23 @@ Returns:
|
|||||||
return (UINT8) (32 - Len);
|
return (UINT8) (32 - Len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the hexadecimal encoded LUN string into the 64-bit LUN.
|
||||||
|
|
||||||
|
@param Str[in] The hexadecimal encoded LUN string.
|
||||||
|
|
||||||
|
@param Lun[out] Storage to return the 64-bit LUN.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The 64-bit LUN is stored in Lun.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER The string is malformatted.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiAsciiStrToLun (
|
IScsiAsciiStrToLun (
|
||||||
IN CHAR8 *Str,
|
IN CHAR8 *Str,
|
||||||
OUT UINT8 *Lun
|
OUT UINT8 *Lun
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Convert the hexadecimal encoded LUN string into the 64-bit LUN.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Str - The hexadecimal encoded LUN string.
|
|
||||||
Lun - Storage to return the 64-bit LUN.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The 64-bit LUN is stored in Lun.
|
|
||||||
EFI_INVALID_PARAMETER - The string is malformatted.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINT32 Index;
|
UINT32 Index;
|
||||||
CHAR8 *LunUnitStr[4];
|
CHAR8 *LunUnitStr[4];
|
||||||
@ -245,27 +228,21 @@ Returns:
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the 64-bit LUN into the hexadecimal encoded LUN string.
|
||||||
|
|
||||||
|
@param Lun[in] The 64-bit LUN.
|
||||||
|
|
||||||
|
@param Str[out] The storage to return the hexadecimal encoded LUN string.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiLunToUnicodeStr (
|
IScsiLunToUnicodeStr (
|
||||||
IN UINT8 *Lun,
|
IN UINT8 *Lun,
|
||||||
OUT CHAR16 *Str
|
OUT CHAR16 *Str
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Convert the 64-bit LUN into the hexadecimal encoded LUN string.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Lun - The 64-bit LUN.
|
|
||||||
Str - The storage to return the hexadecimal encoded LUN string.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
CHAR16 *TempStr;
|
CHAR16 *TempStr;
|
||||||
@ -301,27 +278,21 @@ Returns:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the ASCII string into a UNICODE string.
|
||||||
|
|
||||||
|
@param Source[out] The ASCII string.
|
||||||
|
|
||||||
|
@param Destination[out] The storage to return the UNICODE string.
|
||||||
|
|
||||||
|
@retval CHAR16 * Pointer to the UNICODE string.
|
||||||
|
|
||||||
|
**/
|
||||||
CHAR16 *
|
CHAR16 *
|
||||||
IScsiAsciiStrToUnicodeStr (
|
IScsiAsciiStrToUnicodeStr (
|
||||||
IN CHAR8 *Source,
|
IN CHAR8 *Source,
|
||||||
OUT CHAR16 *Destination
|
OUT CHAR16 *Destination
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Convert the ASCII string into a UNICODE string.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Source - The ASCII string.
|
|
||||||
Destination - The storage to return the UNICODE string.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
Pointer to the UNICODE string.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ASSERT (Destination != NULL);
|
ASSERT (Destination != NULL);
|
||||||
ASSERT (Source != NULL);
|
ASSERT (Source != NULL);
|
||||||
@ -335,27 +306,21 @@ Returns:
|
|||||||
return Destination;
|
return Destination;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the UNICODE string into an ASCII string.
|
||||||
|
|
||||||
|
@param Source[in] The UNICODE string.
|
||||||
|
|
||||||
|
@param Destination[out] The storage to return the ASCII string.
|
||||||
|
|
||||||
|
@retval CHAR8 * Pointer to the ASCII string.
|
||||||
|
|
||||||
|
**/
|
||||||
CHAR8 *
|
CHAR8 *
|
||||||
IScsiUnicodeStrToAsciiStr (
|
IScsiUnicodeStrToAsciiStr (
|
||||||
IN CHAR16 *Source,
|
IN CHAR16 *Source,
|
||||||
OUT CHAR8 *Destination
|
OUT CHAR8 *Destination
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Convert the UNICODE string into an ASCII string.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Source - The UNICODE string.
|
|
||||||
Destination - The storage to return the ASCII string.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
Pointer to the ASCII string.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ASSERT (Destination != NULL);
|
ASSERT (Destination != NULL);
|
||||||
ASSERT (Source != NULL);
|
ASSERT (Source != NULL);
|
||||||
@ -374,28 +339,23 @@ Returns:
|
|||||||
return Destination;
|
return Destination;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the decimal dotted IPv4 address into the binary IPv4 address.
|
||||||
|
|
||||||
|
@param Str[in] The UNICODE string.
|
||||||
|
|
||||||
|
@param Ip[out] The storage to return the ASCII string.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The binary IP address is returned in Ip.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER The IP string is malformatted.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiAsciiStrToIp (
|
IScsiAsciiStrToIp (
|
||||||
IN CHAR8 *Str,
|
IN CHAR8 *Str,
|
||||||
OUT EFI_IPv4_ADDRESS *Ip
|
OUT EFI_IPv4_ADDRESS *Ip
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Convert the decimal dotted IPv4 address into the binary IPv4 address.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Str - The UNICODE string.
|
|
||||||
Ip - The storage to return the ASCII string.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The binary IP address is returned in Ip.
|
|
||||||
EFI_INVALID_PARAMETER - The IP string is malformatted.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
UINTN Number;
|
UINTN Number;
|
||||||
@ -445,29 +405,24 @@ Returns:
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the mac address into a hexadecimal encoded "-" seperated string.
|
||||||
|
|
||||||
|
@param Mac[in] The mac address.
|
||||||
|
|
||||||
|
@param Len[in] Length in bytes of the mac address.
|
||||||
|
|
||||||
|
@param Str[out] The storage to return the mac string.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiMacAddrToStr (
|
IScsiMacAddrToStr (
|
||||||
IN EFI_MAC_ADDRESS *Mac,
|
IN EFI_MAC_ADDRESS *Mac,
|
||||||
IN UINT32 Len,
|
IN UINT32 Len,
|
||||||
OUT CHAR16 *Str
|
OUT CHAR16 *Str
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Convert the mac address into a hexadecimal encoded "-" seperated string.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Mac - The mac address.
|
|
||||||
Len - Length in bytes of the mac address.
|
|
||||||
Str - The storage to return the mac string.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINT32 Index;
|
UINT32 Index;
|
||||||
|
|
||||||
@ -480,6 +435,23 @@ Returns:
|
|||||||
Str[3 * Index - 1] = L'\0';
|
Str[3 * Index - 1] = L'\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the binary encoded buffer into a hexadecimal encoded string.
|
||||||
|
|
||||||
|
@param BinBuffer[in] The buffer containing the binary data.
|
||||||
|
|
||||||
|
@param BinLength[in] Length of the binary buffer.
|
||||||
|
|
||||||
|
@param HexStr[in][out] Pointer to the string.
|
||||||
|
|
||||||
|
@param HexLength[in][out] The length of the string.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The binary data is converted to the hexadecimal string
|
||||||
|
and the length of the string is updated.
|
||||||
|
|
||||||
|
@retval EFI_BUFFER_TOO_SMALL The string is too small.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiBinToHex (
|
IScsiBinToHex (
|
||||||
IN UINT8 *BinBuffer,
|
IN UINT8 *BinBuffer,
|
||||||
@ -487,26 +459,6 @@ IScsiBinToHex (
|
|||||||
IN OUT CHAR8 *HexStr,
|
IN OUT CHAR8 *HexStr,
|
||||||
IN OUT UINT32 *HexLength
|
IN OUT UINT32 *HexLength
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Convert the binary encoded buffer into a hexadecimal encoded string.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
BinBuffer - The buffer containing the binary data.
|
|
||||||
BinLength - Length of the binary buffer.
|
|
||||||
HexStr - Pointer to the string.
|
|
||||||
HexLength - The length of the string.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The binary data is converted to the hexadecimal string
|
|
||||||
and the length of the string is updated.
|
|
||||||
EFI_BUFFER_TOO_SMALL - The string is too small.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
|
|
||||||
@ -536,31 +488,27 @@ Returns:
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the hexadecimal string into a binary encoded buffer.
|
||||||
|
|
||||||
|
@param BinBuffer[in][out] The binary buffer.
|
||||||
|
|
||||||
|
@param BinLength[in][out] Length of the binary buffer.
|
||||||
|
|
||||||
|
@param HexStr[in] The hexadecimal string.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The hexadecimal string is converted into a binary
|
||||||
|
encoded buffer.
|
||||||
|
|
||||||
|
@retval EFI_BUFFER_TOO_SMALL The binary buffer is too small to hold the converted data.s
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiHexToBin (
|
IScsiHexToBin (
|
||||||
IN OUT UINT8 *BinBuffer,
|
IN OUT UINT8 *BinBuffer,
|
||||||
IN OUT UINT32 *BinLength,
|
IN OUT UINT32 *BinLength,
|
||||||
IN CHAR8 *HexStr
|
IN CHAR8 *HexStr
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Convert the hexadecimal string into a binary encoded buffer.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
BinBuffer - The binary buffer.
|
|
||||||
BinLength - Length of the binary buffer.
|
|
||||||
HexStr - The hexadecimal string.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The hexadecimal string is converted into a binary
|
|
||||||
encoded buffer.
|
|
||||||
EFI_BUFFER_TOO_SMALL - The binary buffer is too small to hold the converted data.s
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
UINT32 HexCount;
|
UINT32 HexCount;
|
||||||
@ -613,27 +561,21 @@ Returns:
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Generate random numbers.
|
||||||
|
|
||||||
|
@param Rand[in][out] The buffer to contain random numbers.
|
||||||
|
|
||||||
|
@param RandLength[in] The length of the Rand buffer.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiGenRandom (
|
IScsiGenRandom (
|
||||||
IN OUT UINT8 *Rand,
|
IN OUT UINT8 *Rand,
|
||||||
IN UINTN RandLength
|
IN UINTN RandLength
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Generate random numbers.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Rand - The buffer to contain random numbers.
|
|
||||||
RandLength - The length of the Rand buffer.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINT32 Random;
|
UINT32 Random;
|
||||||
|
|
||||||
@ -644,27 +586,21 @@ Returns:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create the iSCSI driver data..
|
||||||
|
|
||||||
|
@param Image[in] The handle of the driver image.
|
||||||
|
|
||||||
|
@param Controller[in] The handle of the controller.
|
||||||
|
|
||||||
|
@retval The iSCSI driver data created.
|
||||||
|
|
||||||
|
**/
|
||||||
ISCSI_DRIVER_DATA *
|
ISCSI_DRIVER_DATA *
|
||||||
IScsiCreateDriverData (
|
IScsiCreateDriverData (
|
||||||
IN EFI_HANDLE Image,
|
IN EFI_HANDLE Image,
|
||||||
IN EFI_HANDLE Controller
|
IN EFI_HANDLE Controller
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Create the iSCSI driver data..
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Image - The handle of the driver image.
|
|
||||||
Controller - The handle of the controller.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
The iSCSI driver data created.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ISCSI_DRIVER_DATA *Private;
|
ISCSI_DRIVER_DATA *Private;
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
@ -725,25 +661,18 @@ Returns:
|
|||||||
return Private;
|
return Private;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Clean the iSCSI driver data.
|
||||||
|
|
||||||
|
@param Private[in] The iSCSI driver data.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiCleanDriverData (
|
IScsiCleanDriverData (
|
||||||
IN ISCSI_DRIVER_DATA *Private
|
IN ISCSI_DRIVER_DATA *Private
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Clean the iSCSI driver data.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Private - The iSCSI driver data.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
if (Private->DevicePath != NULL) {
|
if (Private->DevicePath != NULL) {
|
||||||
gBS->UninstallProtocolInterface (
|
gBS->UninstallProtocolInterface (
|
||||||
@ -768,26 +697,21 @@ Returns:
|
|||||||
gBS->FreePool (Private);
|
gBS->FreePool (Private);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
Get the various configuration data of this iSCSI instance.
|
||||||
|
|
||||||
|
@param Private[in] The iSCSI driver data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The configuration of this instance is got.
|
||||||
|
|
||||||
|
@retval EFI_NOT_FOUND This iSCSI instance is not configured yet.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiGetConfigData (
|
IScsiGetConfigData (
|
||||||
IN ISCSI_DRIVER_DATA *Private
|
IN ISCSI_DRIVER_DATA *Private
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Get the various configuration data of this iSCSI instance.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Private - The iSCSI driver data.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The configuration of this instance is got.
|
|
||||||
EFI_NOT_FOUND - This iSCSI instance is not configured yet.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
ISCSI_SESSION *Session;
|
ISCSI_SESSION *Session;
|
||||||
@ -866,25 +790,18 @@ Returns:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the device path of the iSCSI tcp connection and update it.
|
||||||
|
|
||||||
|
@param Private[in] The iSCSI driver data.
|
||||||
|
|
||||||
|
@retval The updated device path.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_DEVICE_PATH_PROTOCOL *
|
EFI_DEVICE_PATH_PROTOCOL *
|
||||||
IScsiGetTcpConnDevicePath (
|
IScsiGetTcpConnDevicePath (
|
||||||
IN ISCSI_DRIVER_DATA *Private
|
IN ISCSI_DRIVER_DATA *Private
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Get the device path of the iSCSI tcp connection and update it.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Private - The iSCSI driver data.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
The updated device path.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ISCSI_SESSION *Session;
|
ISCSI_SESSION *Session;
|
||||||
ISCSI_CONNECTION *Conn;
|
ISCSI_CONNECTION *Conn;
|
||||||
@ -937,28 +854,22 @@ Returns:
|
|||||||
return DevicePath;
|
return DevicePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Abort the session when the transition from BS to RT is initiated.
|
||||||
|
|
||||||
|
@param Event[in] The event signaled.
|
||||||
|
|
||||||
|
@param Context[in] The iSCSI driver data.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiOnExitBootService (
|
IScsiOnExitBootService (
|
||||||
IN EFI_EVENT Event,
|
IN EFI_EVENT Event,
|
||||||
IN VOID *Context
|
IN VOID *Context
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Abort the session when the transition from BS to RT is initiated.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Event - The event signaled.
|
|
||||||
Context - The iSCSI driver data.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ISCSI_DRIVER_DATA *Private;
|
ISCSI_DRIVER_DATA *Private;
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
Miscellaneous definitions for IScsi driver.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -15,9 +16,9 @@ Module Name:
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
Miscellaneous definitions for iSCSI driver.
|
Miscellaneous definitions for IScsi driver.
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_MISC_H_
|
#ifndef _ISCSI_MISC_H_
|
||||||
#define _ISCSI_MISC_H_
|
#define _ISCSI_MISC_H_
|
||||||
@ -47,35 +48,97 @@ struct _ISCSI_SESSION_CONFIG_DATA {
|
|||||||
EFI_IPv4_ADDRESS DhcpServer;
|
EFI_IPv4_ADDRESS DhcpServer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Calculate the prefix length of the IPv4 subnet mask.
|
||||||
|
|
||||||
|
@param SubnetMask[in] The IPv4 subnet mask.
|
||||||
|
|
||||||
|
@retval UINT8 The prefix length of the subnet mask.
|
||||||
|
|
||||||
|
**/
|
||||||
UINT8
|
UINT8
|
||||||
IScsiGetSubnetMaskPrefixLength (
|
IScsiGetSubnetMaskPrefixLength (
|
||||||
IN EFI_IPv4_ADDRESS *SubnetMask
|
IN EFI_IPv4_ADDRESS *SubnetMask
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the hexadecimal encoded LUN string into the 64-bit LUN.
|
||||||
|
|
||||||
|
@param Str[in] The hexadecimal encoded LUN string.
|
||||||
|
|
||||||
|
@param Lun[out] Storage to return the 64-bit LUN.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The 64-bit LUN is stored in Lun.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER The string is malformatted.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiAsciiStrToLun (
|
IScsiAsciiStrToLun (
|
||||||
IN CHAR8 *Str,
|
IN CHAR8 *Str,
|
||||||
OUT UINT8 *Lun
|
OUT UINT8 *Lun
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the 64-bit LUN into the hexadecimal encoded LUN string.
|
||||||
|
|
||||||
|
@param Lun[in] The 64-bit LUN.
|
||||||
|
|
||||||
|
@param Str[out] The storage to return the hexadecimal encoded LUN string.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiLunToUnicodeStr (
|
IScsiLunToUnicodeStr (
|
||||||
IN UINT8 *Lun,
|
IN UINT8 *Lun,
|
||||||
OUT CHAR16 *String
|
OUT CHAR16 *String
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the ASCII string into a UNICODE string.
|
||||||
|
|
||||||
|
@param Source[out] The ASCII string.
|
||||||
|
|
||||||
|
@param Destination[out] The storage to return the UNICODE string.
|
||||||
|
|
||||||
|
@retval CHAR16 * Pointer to the UNICODE string.
|
||||||
|
|
||||||
|
**/
|
||||||
CHAR16 *
|
CHAR16 *
|
||||||
IScsiAsciiStrToUnicodeStr (
|
IScsiAsciiStrToUnicodeStr (
|
||||||
IN CHAR8 *Source,
|
IN CHAR8 *Source,
|
||||||
OUT CHAR16 *Destination
|
OUT CHAR16 *Destination
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the UNICODE string into an ASCII string.
|
||||||
|
|
||||||
|
@param Source[in] The UNICODE string.
|
||||||
|
|
||||||
|
@param Destination[out] The storage to return the ASCII string.
|
||||||
|
|
||||||
|
@retval CHAR8 * Pointer to the ASCII string.
|
||||||
|
|
||||||
|
**/
|
||||||
CHAR8 *
|
CHAR8 *
|
||||||
IScsiUnicodeStrToAsciiStr (
|
IScsiUnicodeStrToAsciiStr (
|
||||||
IN CHAR16 *Source,
|
IN CHAR16 *Source,
|
||||||
OUT CHAR8 *Destination
|
OUT CHAR8 *Destination
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the mac address into a hexadecimal encoded "-" seperated string.
|
||||||
|
|
||||||
|
@param Mac[in] The mac address.
|
||||||
|
|
||||||
|
@param Len[in] Length in bytes of the mac address.
|
||||||
|
|
||||||
|
@param Str[out] The storage to return the mac string.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiMacAddrToStr (
|
IScsiMacAddrToStr (
|
||||||
IN EFI_MAC_ADDRESS *Mac,
|
IN EFI_MAC_ADDRESS *Mac,
|
||||||
@ -83,12 +146,41 @@ IScsiMacAddrToStr (
|
|||||||
OUT CHAR16 *Str
|
OUT CHAR16 *Str
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the decimal dotted IPv4 address into the binary IPv4 address.
|
||||||
|
|
||||||
|
@param Str[in] The UNICODE string.
|
||||||
|
|
||||||
|
@param Ip[out] The storage to return the ASCII string.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The binary IP address is returned in Ip.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER The IP string is malformatted.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiAsciiStrToIp (
|
IScsiAsciiStrToIp (
|
||||||
IN CHAR8 *Str,
|
IN CHAR8 *Str,
|
||||||
OUT EFI_IPv4_ADDRESS *Ip
|
OUT EFI_IPv4_ADDRESS *Ip
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the binary encoded buffer into a hexadecimal encoded string.
|
||||||
|
|
||||||
|
@param BinBuffer[in] The buffer containing the binary data.
|
||||||
|
|
||||||
|
@param BinLength[in] Length of the binary buffer.
|
||||||
|
|
||||||
|
@param HexStr[in][out] Pointer to the string.
|
||||||
|
|
||||||
|
@param HexLength[in][out] The length of the string.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The binary data is converted to the hexadecimal string
|
||||||
|
and the length of the string is updated.
|
||||||
|
|
||||||
|
@retval EFI_BUFFER_TOO_SMALL The string is too small.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiBinToHex (
|
IScsiBinToHex (
|
||||||
IN UINT8 *BinBuffer,
|
IN UINT8 *BinBuffer,
|
||||||
@ -97,6 +189,21 @@ IScsiBinToHex (
|
|||||||
IN OUT UINT32 *HexLength
|
IN OUT UINT32 *HexLength
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert the hexadecimal string into a binary encoded buffer.
|
||||||
|
|
||||||
|
@param BinBuffer[in][out] The binary buffer.
|
||||||
|
|
||||||
|
@param BinLength[in][out] Length of the binary buffer.
|
||||||
|
|
||||||
|
@param HexStr[in] The hexadecimal string.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The hexadecimal string is converted into a binary
|
||||||
|
encoded buffer.
|
||||||
|
|
||||||
|
@retval EFI_BUFFER_TOO_SMALL The binary buffer is too small to hold the converted data.s
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiHexToBin (
|
IScsiHexToBin (
|
||||||
IN OUT UINT8 *BinBuffer,
|
IN OUT UINT8 *BinBuffer,
|
||||||
@ -104,33 +211,90 @@ IScsiHexToBin (
|
|||||||
IN CHAR8 *HexStr
|
IN CHAR8 *HexStr
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Generate random numbers.
|
||||||
|
|
||||||
|
@param Rand[in][out] The buffer to contain random numbers.
|
||||||
|
|
||||||
|
@param RandLength[in] The length of the Rand buffer.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiGenRandom (
|
IScsiGenRandom (
|
||||||
IN OUT UINT8 *Rand,
|
IN OUT UINT8 *Rand,
|
||||||
IN UINTN RandLength
|
IN UINTN RandLength
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create the iSCSI driver data..
|
||||||
|
|
||||||
|
@param Image[in] The handle of the driver image.
|
||||||
|
|
||||||
|
@param Controller[in] The handle of the controller.
|
||||||
|
|
||||||
|
@retval The iSCSI driver data created.
|
||||||
|
|
||||||
|
**/
|
||||||
ISCSI_DRIVER_DATA *
|
ISCSI_DRIVER_DATA *
|
||||||
IScsiCreateDriverData (
|
IScsiCreateDriverData (
|
||||||
IN EFI_HANDLE Image,
|
IN EFI_HANDLE Image,
|
||||||
IN EFI_HANDLE Controller
|
IN EFI_HANDLE Controller
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Clean the iSCSI driver data.
|
||||||
|
|
||||||
|
@param Private[in] The iSCSI driver data.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiCleanDriverData (
|
IScsiCleanDriverData (
|
||||||
IN ISCSI_DRIVER_DATA *Private
|
IN ISCSI_DRIVER_DATA *Private
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
Get the various configuration data of this iSCSI instance.
|
||||||
|
|
||||||
|
@param Private[in] The iSCSI driver data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The configuration of this instance is got.
|
||||||
|
|
||||||
|
@retval EFI_NOT_FOUND This iSCSI instance is not configured yet.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiGetConfigData (
|
IScsiGetConfigData (
|
||||||
IN ISCSI_DRIVER_DATA *Private
|
IN ISCSI_DRIVER_DATA *Private
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the device path of the iSCSI tcp connection and update it.
|
||||||
|
|
||||||
|
@param Private[in] The iSCSI driver data.
|
||||||
|
|
||||||
|
@retval The updated device path.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_DEVICE_PATH_PROTOCOL *
|
EFI_DEVICE_PATH_PROTOCOL *
|
||||||
IScsiGetTcpConnDevicePath (
|
IScsiGetTcpConnDevicePath (
|
||||||
IN ISCSI_DRIVER_DATA *Private
|
IN ISCSI_DRIVER_DATA *Private
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Abort the session when the transition from BS to RT is initiated.
|
||||||
|
|
||||||
|
@param Event[in] The event signaled.
|
||||||
|
|
||||||
|
@param Context[in] The iSCSI driver data.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
EFIAPI
|
EFIAPI
|
||||||
IScsiOnExitBootService (
|
IScsiOnExitBootService (
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
The header file of IScsi Protocol that defines many specific data structures.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2008, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -15,9 +16,9 @@ Module Name:
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
Protocol definitions for iSCSI driver, mainly from RFC3720.
|
Protocol definitions for IScsi driver, mainly from RFC3720.
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_PROTO_H_
|
#ifndef _ISCSI_PROTO_H_
|
||||||
#define _ISCSI_PROTO_H_
|
#define _ISCSI_PROTO_H_
|
||||||
@ -636,48 +637,153 @@ typedef struct _ISCSI_KEY_VALUE_PAIR {
|
|||||||
//
|
//
|
||||||
// function prototypes.
|
// function prototypes.
|
||||||
//
|
//
|
||||||
|
/**
|
||||||
|
Attach the iSCSI connection to the iSCSI session.
|
||||||
|
|
||||||
|
@param Session[in] The iSCSI session.
|
||||||
|
|
||||||
|
@param Conn[in] The iSCSI connection.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiAttatchConnection (
|
IScsiAttatchConnection (
|
||||||
IN ISCSI_SESSION *Session,
|
IN ISCSI_SESSION *Session,
|
||||||
IN ISCSI_CONNECTION *Conn
|
IN ISCSI_CONNECTION *Conn
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Detach the iSCSI connection from the session it belongs to.
|
||||||
|
|
||||||
|
@param Conn[in] The iSCSI connection.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiDetatchConnection (
|
IScsiDetatchConnection (
|
||||||
IN ISCSI_CONNECTION *Conn
|
IN ISCSI_CONNECTION *Conn
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function does the iSCSI connection login.
|
||||||
|
|
||||||
|
@param Conn[in] The iSCSI connection to login.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The iSCSI connection is logged into the iSCSI target.
|
||||||
|
|
||||||
|
@retval EFI_TIMEOUT Timeout happened during the login procedure.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Some kind of iSCSI protocol error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiConnLogin (
|
IScsiConnLogin (
|
||||||
IN ISCSI_CONNECTION *Conn
|
IN ISCSI_CONNECTION *Conn
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a TCP connection for the iSCSI session.
|
||||||
|
|
||||||
|
@param Private[in] The iSCSI driver data.
|
||||||
|
|
||||||
|
@param Session[in] Maximum CmdSN from the target.
|
||||||
|
|
||||||
|
@retval The newly created iSCSI connection.
|
||||||
|
|
||||||
|
**/
|
||||||
ISCSI_CONNECTION *
|
ISCSI_CONNECTION *
|
||||||
IScsiCreateConnection (
|
IScsiCreateConnection (
|
||||||
IN ISCSI_DRIVER_DATA *Private,
|
IN ISCSI_DRIVER_DATA *Private,
|
||||||
IN ISCSI_SESSION *Session
|
IN ISCSI_SESSION *Session
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Destroy an iSCSI connection.
|
||||||
|
|
||||||
|
@param Conn[in] The connection to destroy.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiDestroyConnection (
|
IScsiDestroyConnection (
|
||||||
IN ISCSI_CONNECTION *Conn
|
IN ISCSI_CONNECTION *Conn
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Login the iSCSI session.
|
||||||
|
|
||||||
|
@param Private[in] The iSCSI driver data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The iSCSI session login procedure finished.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Some kind of iSCSI protocol error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiSessionLogin (
|
IScsiSessionLogin (
|
||||||
IN ISCSI_DRIVER_DATA *Private
|
IN ISCSI_DRIVER_DATA *Private
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Build and send the iSCSI login request to the iSCSI target according to
|
||||||
|
the current login stage.
|
||||||
|
|
||||||
|
@param Conn[in] The connection in the iSCSI login phase.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The iSCSI login request PDU is built and sent on this
|
||||||
|
connection.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Some kind of iSCSI protocol error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiSendLoginReq (
|
IScsiSendLoginReq (
|
||||||
IN ISCSI_CONNECTION *Conn
|
IN ISCSI_CONNECTION *Conn
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Receive and process the iSCSI login response.
|
||||||
|
|
||||||
|
@param Conn[in] The connection in the iSCSI login phase.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The iSCSI login response PDU is received and processed.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Some kind of iSCSI protocol error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiReceiveLoginRsp (
|
IScsiReceiveLoginRsp (
|
||||||
IN ISCSI_CONNECTION *Conn
|
IN ISCSI_CONNECTION *Conn
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add an iSCSI key-value pair as a string into the data segment of the Login Request PDU.
|
||||||
|
The DataSegmentLength and the actual size of the net buffer containing this PDU will be
|
||||||
|
updated.
|
||||||
|
|
||||||
|
@param Pdu[in] The iSCSI PDU whose data segment the key-value pair will
|
||||||
|
be added to.
|
||||||
|
|
||||||
|
@param Key[in] The key name string.
|
||||||
|
|
||||||
|
@param Value[in] The value string.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The key-valu pair is added to the PDU's datasegment and
|
||||||
|
the correspondence length fields are updated.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES There is not enough space in the PDU to add the key-value
|
||||||
|
pair.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiAddKeyValuePair (
|
IScsiAddKeyValuePair (
|
||||||
IN NET_BUF *Pdu,
|
IN NET_BUF *Pdu,
|
||||||
@ -685,17 +791,55 @@ IScsiAddKeyValuePair (
|
|||||||
IN CHAR8 *Value
|
IN CHAR8 *Value
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Prepare the iSCSI login request to be sent according to the current login status.
|
||||||
|
|
||||||
|
@param Conn[in] The connection in the iSCSI login phase.
|
||||||
|
|
||||||
|
@retval The pointer to the net buffer containing the iSCSI login request built.
|
||||||
|
|
||||||
|
**/
|
||||||
NET_BUF *
|
NET_BUF *
|
||||||
IScsiPrepareLoginReq (
|
IScsiPrepareLoginReq (
|
||||||
IN ISCSI_CONNECTION *Conn
|
IN ISCSI_CONNECTION *Conn
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Process the iSCSI Login Response.
|
||||||
|
|
||||||
|
@param Conn[in] The connection on which the iSCSI login response is received.
|
||||||
|
|
||||||
|
@param Pdu[in] The iSCSI login response PDU.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The iSCSI login response PDU is processed and all check are passed.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Some kind of iSCSI protocol error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiProcessLoginRsp (
|
IScsiProcessLoginRsp (
|
||||||
IN ISCSI_CONNECTION *Conn,
|
IN ISCSI_CONNECTION *Conn,
|
||||||
IN NET_BUF *Pdu
|
IN NET_BUF *Pdu
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Updated the target information according the data received in the iSCSI
|
||||||
|
login response with an target redirection status.
|
||||||
|
|
||||||
|
@param Session[in] The iSCSI session.
|
||||||
|
|
||||||
|
@param Data[in] The data segment which should contain the
|
||||||
|
TargetAddress key-value list.
|
||||||
|
|
||||||
|
@param Len[in] Length of the data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The target address is updated.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
@retval EFI_NOT_FOUND The TargetAddress key is not found.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiUpdateTargetAddress (
|
IScsiUpdateTargetAddress (
|
||||||
IN ISCSI_SESSION *Session,
|
IN ISCSI_SESSION *Session,
|
||||||
@ -703,11 +847,43 @@ IScsiUpdateTargetAddress (
|
|||||||
IN UINT32 Len
|
IN UINT32 Len
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
The callback function to free the net buffer list.
|
||||||
|
|
||||||
|
@param Arg[in] The opaque parameter.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiFreeNbufList (
|
IScsiFreeNbufList (
|
||||||
VOID *Arg
|
VOID *Arg
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Receive an iSCSI response PDU. An iSCSI response PDU contains an iSCSI PDU header and
|
||||||
|
an optional data segment. The two parts will be put into two blocks of buffers in the
|
||||||
|
net buffer. The digest check will be conducted in this function if needed and the digests
|
||||||
|
will be trimmed from the PDU buffer.
|
||||||
|
|
||||||
|
@param Conn[in] The iSCSI connection to receive data from.
|
||||||
|
|
||||||
|
@param Pdu[out] The received iSCSI pdu.
|
||||||
|
|
||||||
|
@param Context[in] The context used to describe information on the caller provided
|
||||||
|
buffer to receive data segment of the iSCSI pdu, it's optional.
|
||||||
|
|
||||||
|
@param HeaderDigest[in] Whether there will be header digest received.
|
||||||
|
|
||||||
|
@param DataDigest[in] Whether there will be data digest.
|
||||||
|
|
||||||
|
@param TimeoutEvent[in] The timeout event, it's optional.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS An iSCSI pdu is received.
|
||||||
|
|
||||||
|
@retval EFI_TIMEOUT Timeout happenend.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiReceivePdu (
|
IScsiReceivePdu (
|
||||||
IN ISCSI_CONNECTION *Conn,
|
IN ISCSI_CONNECTION *Conn,
|
||||||
@ -718,47 +894,143 @@ IScsiReceivePdu (
|
|||||||
IN EFI_EVENT TimeoutEvent OPTIONAL
|
IN EFI_EVENT TimeoutEvent OPTIONAL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Check and get the result of the prameter negotiation.
|
||||||
|
|
||||||
|
@param Conn[in] The connection in iSCSI login.
|
||||||
|
|
||||||
|
@param Pdu[in] The iSCSI response PDU containing the parameter list.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The parmeter check is passed and negotiation is finished.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR Some kind of iSCSI protocol error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiCheckOpParams (
|
IScsiCheckOpParams (
|
||||||
IN ISCSI_CONNECTION *Conn,
|
IN ISCSI_CONNECTION *Conn,
|
||||||
IN BOOLEAN Transit
|
IN BOOLEAN Transit
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Fill the oprational prameters.
|
||||||
|
|
||||||
|
@param Conn[in] The connection in iSCSI login.
|
||||||
|
|
||||||
|
@param Pdu[in] The iSCSI login request PDU to fill the parameters.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The parmeters are filled into the iSCSI login request PDU.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES There is not enough space in the PDU to hold the parameters.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiFillOpParams (
|
IScsiFillOpParams (
|
||||||
IN ISCSI_CONNECTION *Conn,
|
IN ISCSI_CONNECTION *Conn,
|
||||||
IN NET_BUF *Pdu
|
IN NET_BUF *Pdu
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Pad the iSCSI AHS or data segment to an integer number of 4 byte words.
|
||||||
|
|
||||||
|
@param Pdu[in] The iSCSI pdu which contains segments to pad.
|
||||||
|
|
||||||
|
@param Len[in] The length of the last semgnet in the PDU.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The segment is padded or no need to pad it.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES There is not enough remaining free space to add the
|
||||||
|
padding bytes.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiPadSegment (
|
IScsiPadSegment (
|
||||||
IN NET_BUF *Pdu,
|
IN NET_BUF *Pdu,
|
||||||
IN UINT32 Len
|
IN UINT32 Len
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Build a key-value list from the data segment.
|
||||||
|
|
||||||
|
@param Data[in] The data segment containing the key-value pairs.
|
||||||
|
|
||||||
|
@param Len[in] Length of the data segment.
|
||||||
|
|
||||||
|
@retval The key-value list.
|
||||||
|
|
||||||
|
**/
|
||||||
LIST_ENTRY *
|
LIST_ENTRY *
|
||||||
IScsiBuildKeyValueList (
|
IScsiBuildKeyValueList (
|
||||||
IN CHAR8 *Data,
|
IN CHAR8 *Data,
|
||||||
IN UINT32 Len
|
IN UINT32 Len
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the value string by the key name from the key-value list. If found,
|
||||||
|
the key-value entry will be removed from the list.
|
||||||
|
|
||||||
|
@param KeyValueList[in] The key-value list.
|
||||||
|
|
||||||
|
@param Key[in] The key name to find.
|
||||||
|
|
||||||
|
@retval The value string.
|
||||||
|
|
||||||
|
**/
|
||||||
CHAR8 *
|
CHAR8 *
|
||||||
IScsiGetValueByKeyFromList (
|
IScsiGetValueByKeyFromList (
|
||||||
IN LIST_ENTRY *KeyValueList,
|
IN LIST_ENTRY *KeyValueList,
|
||||||
IN CHAR8 *Key
|
IN CHAR8 *Key
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Free the key-value list.
|
||||||
|
|
||||||
|
@param KeyValueList[in] The key-value list.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiFreeKeyValueList (
|
IScsiFreeKeyValueList (
|
||||||
IN LIST_ENTRY *KeyValueList
|
IN LIST_ENTRY *KeyValueList
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Normalize the iSCSI name according to RFC.
|
||||||
|
|
||||||
|
@param Name[in] The iSCSI name.
|
||||||
|
|
||||||
|
@param Len[in] length of the iSCSI name.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The iSCSI name is valid and normalized.
|
||||||
|
|
||||||
|
@retval EFI_PROTOCOL_ERROR The iSCSI name is mal-formatted or not in the IQN format.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiNormalizeName (
|
IScsiNormalizeName (
|
||||||
IN CHAR8 *Name,
|
IN CHAR8 *Name,
|
||||||
IN UINTN Len
|
IN UINTN Len
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Execute the SCSI command issued through the EXT SCSI PASS THRU protocol.
|
||||||
|
|
||||||
|
@param PassThru[in] The EXT SCSI PASS THRU protocol.
|
||||||
|
|
||||||
|
@param Target[in] The target ID.
|
||||||
|
|
||||||
|
@param Lun[in] The LUN.
|
||||||
|
|
||||||
|
@param Packet[in][out] The request packet containing IO request, SCSI command
|
||||||
|
buffer and buffers to read/write.
|
||||||
|
|
||||||
|
@retval EFI_SUCCES The SCSI command is executed and the result is updated to
|
||||||
|
the Packet.
|
||||||
|
|
||||||
|
@retval EFI_DEVICE_ERROR Some unexpected error happened.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiExecuteScsiCommand (
|
IScsiExecuteScsiCommand (
|
||||||
IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *PassThru,
|
IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *PassThru,
|
||||||
@ -767,17 +1039,46 @@ IScsiExecuteScsiCommand (
|
|||||||
IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet
|
IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Reinstate the session on some error.
|
||||||
|
|
||||||
|
@param Private[in] The iSCSI driver data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCES The session is reinstated from some error.
|
||||||
|
|
||||||
|
@retval other Reinstatement failed.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiSessionReinstatement (
|
IScsiSessionReinstatement (
|
||||||
IN ISCSI_DRIVER_DATA *Private
|
IN ISCSI_DRIVER_DATA *Private
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize some session parameters before login.
|
||||||
|
|
||||||
|
@param Session[in] The iSCSI session.
|
||||||
|
|
||||||
|
@param Recovery[in] Whether the request is from a fresh new start or recovery.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
IScsiSessionInit (
|
IScsiSessionInit (
|
||||||
IN ISCSI_SESSION *Session,
|
IN ISCSI_SESSION *Session,
|
||||||
IN BOOLEAN Recovery
|
IN BOOLEAN Recovery
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Abort the iSCSI session, that is, reset all the connection and free the
|
||||||
|
resources.
|
||||||
|
|
||||||
|
@param Session[in] The iSCSI session.
|
||||||
|
|
||||||
|
@retval EFI_SUCCES The session is aborted.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
IScsiSessionAbort (
|
IScsiSessionAbort (
|
||||||
IN ISCSI_SESSION *Session
|
IN ISCSI_SESSION *Session
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
The wrap of TCP/IP Socket interface
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2007, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -14,37 +15,48 @@ Module Name:
|
|||||||
IScsiTcp4Io.c
|
IScsiTcp4Io.c
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
The wrap of TCP/IP Socket interface
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#include "IScsiImpl.h"
|
#include "IScsiImpl.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
The common notify function associated with various Tcp4Io events.
|
||||||
|
|
||||||
|
@param Event[in] The event signaled.
|
||||||
|
|
||||||
|
@param Contect[in] The context.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
EFIAPI
|
EFIAPI
|
||||||
Tcp4IoCommonNotify (
|
Tcp4IoCommonNotify (
|
||||||
IN EFI_EVENT Event,
|
IN EFI_EVENT Event,
|
||||||
IN VOID *Context
|
IN VOID *Context
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
The common notify function associated with various Tcp4Io events.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Event - The event signaled.
|
|
||||||
Contect - The context.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
*((BOOLEAN *) Context) = TRUE;
|
*((BOOLEAN *) Context) = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a TCP socket with the specified configuration data.
|
||||||
|
|
||||||
|
@param Image[in] The handle of the driver image.
|
||||||
|
|
||||||
|
@param Controller[in] The handle of the controller.
|
||||||
|
|
||||||
|
@param ConfigData[in] The Tcp4 configuration data.
|
||||||
|
|
||||||
|
@param Tcp4Io[in] The Tcp4Io.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The TCP socket is created and configured.
|
||||||
|
|
||||||
|
@retval Other Failed to create the TCP socket or configure it.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
Tcp4IoCreateSocket (
|
Tcp4IoCreateSocket (
|
||||||
IN EFI_HANDLE Image,
|
IN EFI_HANDLE Image,
|
||||||
@ -52,25 +64,6 @@ Tcp4IoCreateSocket (
|
|||||||
IN TCP4_IO_CONFIG_DATA *ConfigData,
|
IN TCP4_IO_CONFIG_DATA *ConfigData,
|
||||||
IN TCP4_IO *Tcp4Io
|
IN TCP4_IO *Tcp4Io
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Create a TCP socket with the specified configuration data.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Image - The handle of the driver image.
|
|
||||||
Controller - The handle of the controller.
|
|
||||||
ConfigData - The Tcp4 configuration data.
|
|
||||||
Tcp4Io - The Tcp4Io.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The TCP socket is created and configured.
|
|
||||||
other - Failed to create the TCP socket or configure it.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_TCP4_PROTOCOL *Tcp4;
|
EFI_TCP4_PROTOCOL *Tcp4;
|
||||||
@ -252,25 +245,18 @@ ON_ERROR:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Destroy the socket.
|
||||||
|
|
||||||
|
@param[in] Tcp4Io The Tcp4Io which wraps the socket to be destroyeds.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
Tcp4IoDestroySocket (
|
Tcp4IoDestroySocket (
|
||||||
IN TCP4_IO *Tcp4Io
|
IN TCP4_IO *Tcp4Io
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Destroy the socket.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Tcp4Io - The Tcp4Io which wraps the socket to be destroyeds.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_TCP4_PROTOCOL *Tcp4;
|
EFI_TCP4_PROTOCOL *Tcp4;
|
||||||
|
|
||||||
@ -297,27 +283,21 @@ Returns:
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Connect to the other endpoint of the TCP socket.
|
||||||
|
|
||||||
|
@param Tcp4Io[in] The Tcp4Io wrapping the TCP socket.
|
||||||
|
|
||||||
|
@param Timeout[in] The time to wait for connection done.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
Tcp4IoConnect (
|
Tcp4IoConnect (
|
||||||
IN TCP4_IO *Tcp4Io,
|
IN TCP4_IO *Tcp4Io,
|
||||||
IN EFI_EVENT Timeout
|
IN EFI_EVENT Timeout
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Connect to the other endpoint of the TCP socket.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Tcp4Io - The Tcp4Io wrapping the TCP socket.
|
|
||||||
Timeout - The time to wait for connection done.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_TCP4_PROTOCOL *Tcp4;
|
EFI_TCP4_PROTOCOL *Tcp4;
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
@ -342,25 +322,18 @@ Returns:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Reset the socket.
|
||||||
|
|
||||||
|
@param Tcp4Io[in] The Tcp4Io wrapping the TCP socket.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
Tcp4IoReset (
|
Tcp4IoReset (
|
||||||
IN TCP4_IO *Tcp4Io
|
IN TCP4_IO *Tcp4Io
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Reset the socket.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Tcp4Io - The Tcp4Io wrapping the TCP socket.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_TCP4_PROTOCOL *Tcp4;
|
EFI_TCP4_PROTOCOL *Tcp4;
|
||||||
@ -379,28 +352,23 @@ Returns:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Transmit the Packet to the other endpoint of the socket.
|
||||||
|
|
||||||
|
@param Tcp4Io[in] The Tcp4Io wrapping the TCP socket.
|
||||||
|
|
||||||
|
@param Packet[in] The packet to transmit
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The packet is trasmitted.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
Tcp4IoTransmit (
|
Tcp4IoTransmit (
|
||||||
IN TCP4_IO *Tcp4Io,
|
IN TCP4_IO *Tcp4Io,
|
||||||
IN NET_BUF *Packet
|
IN NET_BUF *Packet
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Transmit the Packet to the other endpoint of the socket.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Tcp4Io - The Tcp4Io wrapping the TCP socket.
|
|
||||||
Packet - The packet to transmit
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The packet is trasmitted.
|
|
||||||
EFI_OUT_OF_RESOURCES - Failed to allocate memory.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_TCP4_TRANSMIT_DATA *TxData;
|
EFI_TCP4_TRANSMIT_DATA *TxData;
|
||||||
EFI_TCP4_PROTOCOL *Tcp4;
|
EFI_TCP4_PROTOCOL *Tcp4;
|
||||||
@ -447,6 +415,26 @@ ON_EXIT:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Receive data from the socket.
|
||||||
|
|
||||||
|
@param Tcp4Io[in] The Tcp4Io which wraps the socket to be destroyeds.
|
||||||
|
|
||||||
|
@param Packet[in] The buffer to hold the data copy from the soket rx buffer.
|
||||||
|
|
||||||
|
@param AsyncMode[in] Is this receive asyncronous or not.
|
||||||
|
|
||||||
|
@param Timeout[in] The time to wait for receiving the amount of data the Packet
|
||||||
|
can hold.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The required amount of data is received from the socket.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate momery.
|
||||||
|
|
||||||
|
@retval EFI_TIMEOUT Failed to receive the required amount of data in the
|
||||||
|
specified time period.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
Tcp4IoReceive (
|
Tcp4IoReceive (
|
||||||
IN TCP4_IO *Tcp4Io,
|
IN TCP4_IO *Tcp4Io,
|
||||||
@ -454,28 +442,6 @@ Tcp4IoReceive (
|
|||||||
IN BOOLEAN AsyncMode,
|
IN BOOLEAN AsyncMode,
|
||||||
IN EFI_EVENT Timeout
|
IN EFI_EVENT Timeout
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Receive data from the socket.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Tcp4Io - The Tcp4Io which wraps the socket to be destroyeds.
|
|
||||||
Packet - The buffer to hold the data copy from the soket rx buffer.
|
|
||||||
AsyncMode - Is this receive asyncronous or not.
|
|
||||||
Timeout - The time to wait for receiving the amount of data the Packet
|
|
||||||
can hold.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - The required amount of data is received from the socket.
|
|
||||||
EFI_OUT_OF_RESOURCES - Failed to allocate momery.
|
|
||||||
EFI_TIMEOUT - Failed to receive the required amount of data in the
|
|
||||||
specified time period.
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
EFI_TCP4_PROTOCOL *Tcp4;
|
EFI_TCP4_PROTOCOL *Tcp4;
|
||||||
EFI_TCP4_RECEIVE_DATA RxData;
|
EFI_TCP4_RECEIVE_DATA RxData;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/**
|
||||||
|
IScsi Tcp4 IO related definitions.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2008, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -15,9 +16,9 @@ Module Name:
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
iSCSI Tcp4 IO related definitions.
|
IScsi Tcp4 IO related definitions.
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _ISCSI_TCP4_IO_H_
|
#ifndef _ISCSI_TCP4_IO_H_
|
||||||
#define _ISCSI_TCP4_IO_H_
|
#define _ISCSI_TCP4_IO_H_
|
||||||
@ -52,6 +53,22 @@ typedef struct _TCP4_IO {
|
|||||||
BOOLEAN IsCloseDone;
|
BOOLEAN IsCloseDone;
|
||||||
} TCP4_IO;
|
} TCP4_IO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a TCP socket with the specified configuration data.
|
||||||
|
|
||||||
|
@param Image[in] The handle of the driver image.
|
||||||
|
|
||||||
|
@param Controller[in] The handle of the controller.
|
||||||
|
|
||||||
|
@param ConfigData[in] The Tcp4 configuration data.
|
||||||
|
|
||||||
|
@param Tcp4Io[in] The Tcp4Io.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The TCP socket is created and configured.
|
||||||
|
|
||||||
|
@retval Other Failed to create the TCP socket or configure it.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
Tcp4IoCreateSocket (
|
Tcp4IoCreateSocket (
|
||||||
IN EFI_HANDLE Image,
|
IN EFI_HANDLE Image,
|
||||||
@ -60,28 +77,86 @@ Tcp4IoCreateSocket (
|
|||||||
IN TCP4_IO *Tcp4Io
|
IN TCP4_IO *Tcp4Io
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Destroy the socket.
|
||||||
|
|
||||||
|
@param[in] Tcp4Io The Tcp4Io which wraps the socket to be destroyeds.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
Tcp4IoDestroySocket (
|
Tcp4IoDestroySocket (
|
||||||
IN TCP4_IO *Tcp4Io
|
IN TCP4_IO *Tcp4Io
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Connect to the other endpoint of the TCP socket.
|
||||||
|
|
||||||
|
@param Tcp4Io[in] The Tcp4Io wrapping the TCP socket.
|
||||||
|
|
||||||
|
@param Timeout[in] The time to wait for connection done.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
Tcp4IoConnect (
|
Tcp4IoConnect (
|
||||||
IN TCP4_IO *Tcp4Io,
|
IN TCP4_IO *Tcp4Io,
|
||||||
IN EFI_EVENT Timeout
|
IN EFI_EVENT Timeout
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Reset the socket.
|
||||||
|
|
||||||
|
@param Tcp4Io[in] The Tcp4Io wrapping the TCP socket.
|
||||||
|
|
||||||
|
@retval None.
|
||||||
|
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
Tcp4IoReset (
|
Tcp4IoReset (
|
||||||
IN TCP4_IO *Tcp4Io
|
IN TCP4_IO *Tcp4Io
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Transmit the Packet to the other endpoint of the socket.
|
||||||
|
|
||||||
|
@param Tcp4Io[in] The Tcp4Io wrapping the TCP socket.
|
||||||
|
|
||||||
|
@param Packet[in] The packet to transmit
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The packet is trasmitted.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
Tcp4IoTransmit (
|
Tcp4IoTransmit (
|
||||||
IN TCP4_IO *Tcp4Io,
|
IN TCP4_IO *Tcp4Io,
|
||||||
IN NET_BUF *Packet
|
IN NET_BUF *Packet
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Receive data from the socket.
|
||||||
|
|
||||||
|
@param Tcp4Io[in] The Tcp4Io which wraps the socket to be destroyeds.
|
||||||
|
|
||||||
|
@param Packet[in] The buffer to hold the data copy from the soket rx buffer.
|
||||||
|
|
||||||
|
@param AsyncMode[in] Is this receive asyncronous or not.
|
||||||
|
|
||||||
|
@param Timeout[in] The time to wait for receiving the amount of data the Packet
|
||||||
|
can hold.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The required amount of data is received from the socket.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate momery.
|
||||||
|
|
||||||
|
@retval EFI_TIMEOUT Failed to receive the required amount of data in the
|
||||||
|
specified time period.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
Tcp4IoReceive (
|
Tcp4IoReceive (
|
||||||
IN TCP4_IO *Tcp4Io,
|
IN TCP4_IO *Tcp4Io,
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
Implementation of MD5 algorithm
|
||||||
|
|
||||||
Copyright (c) 2004 - 2007, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -17,7 +18,7 @@ Abstract:
|
|||||||
|
|
||||||
Implementation of MD5 algorithm
|
Implementation of MD5 algorithm
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#include "Md5.h"
|
#include "Md5.h"
|
||||||
|
|
||||||
@ -122,26 +123,19 @@ STATIC CONST MD5_TRANSFORM_FUNC MD5_F[] = {
|
|||||||
TF4
|
TF4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Perform the MD5 transform on 64 bytes data segment
|
||||||
|
|
||||||
|
@param Md5Ctx[in] it includes the data segment for Md5 transform
|
||||||
|
|
||||||
|
@retval NONE.
|
||||||
|
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
VOID
|
VOID
|
||||||
MD5Transform (
|
MD5Transform (
|
||||||
IN MD5_CTX *Md5Ctx
|
IN MD5_CTX *Md5Ctx
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
GC_TODO: Add function description
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Md5Ctx - GC_TODO: add argument description
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
GC_TODO: add return values
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINT32 i;
|
UINT32 i;
|
||||||
UINT32 j;
|
UINT32 j;
|
||||||
@ -177,6 +171,23 @@ Returns:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Copy data segment into the M field of MD5_CTX structure for later transform.
|
||||||
|
If the length of data segment is larger than 64 bytes, then does the transform
|
||||||
|
immediately and the generated Md5 code is stored in the States field of MD5_CTX
|
||||||
|
data struct for later accumulation.
|
||||||
|
All of Md5 code generated for the sequential 64-bytes data segaments are be
|
||||||
|
accumulated in MD5Final() function.
|
||||||
|
|
||||||
|
@param Md5Ctx[in] the data structure of storing the original data
|
||||||
|
segment and the final result.
|
||||||
|
|
||||||
|
@param Data[in] the data wanted to be transformed
|
||||||
|
|
||||||
|
@param DataLen[in] the length of data
|
||||||
|
|
||||||
|
@retval NONE.
|
||||||
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
VOID
|
VOID
|
||||||
MD5UpdateBlock (
|
MD5UpdateBlock (
|
||||||
@ -184,23 +195,6 @@ MD5UpdateBlock (
|
|||||||
IN CONST UINT8 *Data,
|
IN CONST UINT8 *Data,
|
||||||
IN UINTN DataLen
|
IN UINTN DataLen
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
GC_TODO: Add function description
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Md5Ctx - GC_TODO: add argument description
|
|
||||||
Data - GC_TODO: add argument description
|
|
||||||
DataLen - GC_TODO: add argument description
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
GC_TODO: add return values
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINTN Limit;
|
UINTN Limit;
|
||||||
|
|
||||||
@ -217,25 +211,18 @@ Returns:
|
|||||||
Md5Ctx->Count += DataLen;
|
Md5Ctx->Count += DataLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize four 32-bits chaining variables and use them to do the Md5 transform.
|
||||||
|
|
||||||
|
@param Md5Ctx[in] the data structure of Md5
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS initialization is ok
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
MD5Init (
|
MD5Init (
|
||||||
IN MD5_CTX *Md5Ctx
|
IN MD5_CTX *Md5Ctx
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
GC_TODO: Add function description
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Md5Ctx - GC_TODO: add argument description
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - GC_TODO: Add description for return value
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
ZeroMem (Md5Ctx, sizeof (*Md5Ctx));
|
ZeroMem (Md5Ctx, sizeof (*Md5Ctx));
|
||||||
|
|
||||||
@ -250,29 +237,25 @@ Returns:
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
the external interface of Md5 algorithm
|
||||||
|
|
||||||
|
@param Md5Ctx[in] the data structure of storing the original data
|
||||||
|
segment and the final result.
|
||||||
|
|
||||||
|
@param Data[in] the data wanted to be transformed.
|
||||||
|
|
||||||
|
@param DataLen[in] the length of data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS the transform is ok.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
MD5Update (
|
MD5Update (
|
||||||
IN MD5_CTX *Md5Ctx,
|
IN MD5_CTX *Md5Ctx,
|
||||||
IN VOID *Data,
|
IN VOID *Data,
|
||||||
IN UINTN DataLen
|
IN UINTN DataLen
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
GC_TODO: Add function description
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Md5Ctx - GC_TODO: add argument description
|
|
||||||
Data - GC_TODO: add argument description
|
|
||||||
DataLen - GC_TODO: add argument description
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - GC_TODO: Add description for return value
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
if (EFI_ERROR (Md5Ctx->Status)) {
|
if (EFI_ERROR (Md5Ctx->Status)) {
|
||||||
return Md5Ctx->Status;
|
return Md5Ctx->Status;
|
||||||
@ -283,27 +266,23 @@ Returns:
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
accumulate the MD5 value of every data segment and generate the finial
|
||||||
|
result according to MD5 algorithm
|
||||||
|
|
||||||
|
@param Md5Ctx[in] the data structure of storing the original data
|
||||||
|
segment and the final result.
|
||||||
|
|
||||||
|
@param HashVal[out] the final 128-bits output.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS the transform is ok.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
MD5Final (
|
MD5Final (
|
||||||
IN MD5_CTX *Md5Ctx,
|
IN MD5_CTX *Md5Ctx,
|
||||||
OUT UINT8 *HashVal
|
OUT UINT8 *HashVal
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
GC_TODO: Add function description
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Md5Ctx - GC_TODO: add argument description
|
|
||||||
HashVal - GC_TODO: add argument description
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - GC_TODO: Add description for return value
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
{
|
||||||
UINTN PadLength;
|
UINTN PadLength;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*++
|
/** @file
|
||||||
|
Header file for Md5
|
||||||
|
|
||||||
Copyright (c) 2004 - 2008, Intel Corporation
|
Copyright (c) 2004 - 2008, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -17,7 +18,7 @@ Abstract:
|
|||||||
|
|
||||||
Header file for Md5
|
Header file for Md5
|
||||||
|
|
||||||
--*/
|
**/
|
||||||
|
|
||||||
#ifndef _MD5_H_
|
#ifndef _MD5_H_
|
||||||
#define _MD5_H_
|
#define _MD5_H_
|
||||||
@ -36,73 +37,58 @@ typedef struct _MD5_CTX {
|
|||||||
UINTN Count;
|
UINTN Count;
|
||||||
} MD5_CTX;
|
} MD5_CTX;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize four 32-bits chaining variables and use them to do the Md5 transform.
|
||||||
|
|
||||||
|
@param Md5Ctx[in] the data structure of Md5
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS initialization is ok
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
MD5Init (
|
MD5Init (
|
||||||
IN MD5_CTX *Md5Ctx
|
IN MD5_CTX *Md5Ctx
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
GC_TODO: Add function description
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Md5Ctx - GC_TODO: add argument description
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - GC_TODO: Add description for return value
|
|
||||||
|
|
||||||
--*/
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
the external interface of Md5 algorithm
|
||||||
|
|
||||||
|
@param Md5Ctx[in] the data structure of storing the original data
|
||||||
|
segment and the final result.
|
||||||
|
|
||||||
|
@param Data[in] the data wanted to be transformed.
|
||||||
|
|
||||||
|
@param DataLen[in] the length of data.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS the transform is ok.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
MD5Update (
|
MD5Update (
|
||||||
IN MD5_CTX *Md5Ctx,
|
IN MD5_CTX *Md5Ctx,
|
||||||
IN VOID *Data,
|
IN VOID *Data,
|
||||||
IN UINTN DataLen
|
IN UINTN DataLen
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
GC_TODO: Add function description
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Md5Ctx - GC_TODO: add argument description
|
|
||||||
Data - GC_TODO: add argument description
|
|
||||||
DataLen - GC_TODO: add argument description
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - GC_TODO: Add description for return value
|
|
||||||
|
|
||||||
--*/
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
accumulate the MD5 value of every data segment and generate the finial
|
||||||
|
result according to MD5 algorithm
|
||||||
|
|
||||||
|
@param Md5Ctx[in] the data structure of storing the original data
|
||||||
|
segment and the final result.
|
||||||
|
|
||||||
|
@param HashVal[out] the final 128-bits output.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS the transform is ok.
|
||||||
|
|
||||||
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
MD5Final (
|
MD5Final (
|
||||||
IN MD5_CTX *Md5Ctx,
|
IN MD5_CTX *Md5Ctx,
|
||||||
OUT UINT8 *HashVal
|
OUT UINT8 *HashVal
|
||||||
)
|
)
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
GC_TODO: Add function description
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Md5Ctx - GC_TODO: add argument description
|
|
||||||
HashVal - GC_TODO: add argument description
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
EFI_SUCCESS - GC_TODO: Add description for return value
|
|
||||||
|
|
||||||
--*/
|
|
||||||
;
|
;
|
||||||
|
|
||||||
#endif // _MD5_H
|
#endif // _MD5_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user