1. Fix a bug in PXE driver that the PXE boot do not restart if a new boot option on the different IP stack is selected.
2. Retrieve the IP information after iSCSI TCPv6 connection established and fill it into iBFT table. 3. Generate a random IAID for each NIC port to require different IPv6 address in PXE driver. 4. Update function EfiMtftp6Configure() and Mtftp6RrqHandleOack() to allocate at most one UdpIo. 5. Fix a typo from “destory” to “destroy” in network code. Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Ouyang Qian <qian.ouyang@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13859 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
e98e59c237
commit
75dce34062
@ -2,7 +2,7 @@
|
|||||||
This library is used to share code between UEFI network stack modules.
|
This library is used to share code between UEFI network stack modules.
|
||||||
It provides the helper routines to access UDP service. It is used by both DHCP and MTFTP.
|
It provides the helper routines to access UDP service. It is used by both DHCP and MTFTP.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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<BR>
|
which accompanies this distribution. The full text of the license may be found at<BR>
|
||||||
@ -137,7 +137,7 @@ struct _UDP_IO {
|
|||||||
UINT8 UdpVersion;
|
UINT8 UdpVersion;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Handle used to create/destory UDP child
|
// Handle used to create/destroy UDP child
|
||||||
//
|
//
|
||||||
EFI_HANDLE Controller;
|
EFI_HANDLE Controller;
|
||||||
EFI_HANDLE Image;
|
EFI_HANDLE Image;
|
||||||
|
@ -1829,7 +1829,7 @@ NetLibCreateServiceChild (
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory a child of the service that is identified by ServiceBindingGuid.
|
Destroy a child of the service that is identified by ServiceBindingGuid.
|
||||||
|
|
||||||
Get the ServiceBinding Protocol first, then use it to destroy a child.
|
Get the ServiceBinding Protocol first, then use it to destroy a child.
|
||||||
|
|
||||||
@ -1838,10 +1838,10 @@ NetLibCreateServiceChild (
|
|||||||
@param[in] Controller The controller which has the service installed.
|
@param[in] Controller The controller which has the service installed.
|
||||||
@param[in] Image The image handle used to open service.
|
@param[in] Image The image handle used to open service.
|
||||||
@param[in] ServiceBindingGuid The service's Guid.
|
@param[in] ServiceBindingGuid The service's Guid.
|
||||||
@param[in] ChildHandle The child to destory.
|
@param[in] ChildHandle The child to destroy.
|
||||||
|
|
||||||
@retval EFI_SUCCESS The child is successfully destoried.
|
@retval EFI_SUCCESS The child is successfully destroyed.
|
||||||
@retval Others Failed to destory the child.
|
@retval Others Failed to destroy the child.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
@ -1875,7 +1875,7 @@ NetLibDestroyServiceChild (
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// destory the child
|
// destroy the child
|
||||||
//
|
//
|
||||||
Status = Service->DestroyChild (Service, ChildHandle);
|
Status = Service->DestroyChild (Service, ChildHandle);
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Help functions to access UDP service, it is used by both the DHCP and MTFTP.
|
Help functions to access UDP service, it is used by both the DHCP and MTFTP.
|
||||||
|
|
||||||
Copyright (c) 2005 - 2009, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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<BR>
|
which accompanies this distribution. The full text of the license may be found at<BR>
|
||||||
@ -804,7 +804,7 @@ UdpIoFreeIo (
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Close then destory the Udp4 child
|
// Close then destroy the Udp4 child
|
||||||
//
|
//
|
||||||
gBS->CloseProtocol (
|
gBS->CloseProtocol (
|
||||||
UdpIo->UdpHandle,
|
UdpIo->UdpHandle,
|
||||||
@ -827,7 +827,7 @@ UdpIoFreeIo (
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Close then destory the Udp6 child
|
// Close then destroy the Udp6 child
|
||||||
//
|
//
|
||||||
gBS->CloseProtocol (
|
gBS->CloseProtocol (
|
||||||
UdpIo->UdpHandle,
|
UdpIo->UdpHandle,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/** @file
|
/** @file
|
||||||
|
|
||||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -146,11 +146,11 @@ DhcpConfigUdpIo (
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory the DHCP service. The Dhcp4 service may be partly initialized,
|
Destroy the DHCP service. The Dhcp4 service may be partly initialized,
|
||||||
or partly destroyed. If a resource is destroyed, it is marked as so in
|
or partly destroyed. If a resource is destroyed, it is marked as so in
|
||||||
case the destroy failed and being called again later.
|
case the destroy failed and being called again later.
|
||||||
|
|
||||||
@param[in] DhcpSb The DHCP service instance to destory.
|
@param[in] DhcpSb The DHCP service instance to destroy.
|
||||||
|
|
||||||
@retval EFI_SUCCESS Always return success.
|
@retval EFI_SUCCESS Always return success.
|
||||||
|
|
||||||
@ -212,7 +212,7 @@ Dhcp4CreateService (
|
|||||||
|
|
||||||
DhcpSb->Signature = DHCP_SERVICE_SIGNATURE;
|
DhcpSb->Signature = DHCP_SERVICE_SIGNATURE;
|
||||||
DhcpSb->ServiceState = DHCP_UNCONFIGED;
|
DhcpSb->ServiceState = DHCP_UNCONFIGED;
|
||||||
DhcpSb->InDestory = FALSE;
|
DhcpSb->InDestroy = FALSE;
|
||||||
DhcpSb->Controller = Controller;
|
DhcpSb->Controller = Controller;
|
||||||
DhcpSb->Image = ImageHandle;
|
DhcpSb->Image = ImageHandle;
|
||||||
InitializeListHead (&DhcpSb->Children);
|
InitializeListHead (&DhcpSb->Children);
|
||||||
@ -414,7 +414,7 @@ Dhcp4DriverBindingStop (
|
|||||||
|
|
||||||
DhcpSb = DHCP_SERVICE_FROM_THIS (ServiceBinding);
|
DhcpSb = DHCP_SERVICE_FROM_THIS (ServiceBinding);
|
||||||
|
|
||||||
if (DhcpSb->InDestory) {
|
if (DhcpSb->InDestroy) {
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -422,8 +422,8 @@ Dhcp4DriverBindingStop (
|
|||||||
|
|
||||||
if (NumberOfChildren == 0) {
|
if (NumberOfChildren == 0) {
|
||||||
|
|
||||||
DhcpSb->InDestory = TRUE;
|
DhcpSb->InDestroy = TRUE;
|
||||||
DhcpSb->ServiceState = DHCP_DESTORY;
|
DhcpSb->ServiceState = DHCP_DESTROY;
|
||||||
|
|
||||||
gBS->UninstallProtocolInterface (
|
gBS->UninstallProtocolInterface (
|
||||||
NicHandle,
|
NicHandle,
|
||||||
@ -436,7 +436,7 @@ Dhcp4DriverBindingStop (
|
|||||||
FreePool (DhcpSb);
|
FreePool (DhcpSb);
|
||||||
} else {
|
} else {
|
||||||
//
|
//
|
||||||
// Don't use NET_LIST_FOR_EACH_SAFE here, Dhcp4ServiceBindingDestoryChild
|
// Don't use NET_LIST_FOR_EACH_SAFE here, Dhcp4ServiceBindingDestroyChild
|
||||||
// may cause other child to be deleted.
|
// may cause other child to be deleted.
|
||||||
//
|
//
|
||||||
while (!IsListEmpty (&DhcpSb->Children)) {
|
while (!IsListEmpty (&DhcpSb->Children)) {
|
||||||
@ -473,7 +473,7 @@ DhcpInitProtocol (
|
|||||||
InitializeListHead (&Instance->Link);
|
InitializeListHead (&Instance->Link);
|
||||||
Instance->Handle = NULL;
|
Instance->Handle = NULL;
|
||||||
Instance->Service = DhcpSb;
|
Instance->Service = DhcpSb;
|
||||||
Instance->InDestory = FALSE;
|
Instance->InDestroy = FALSE;
|
||||||
Instance->CompletionEvent = NULL;
|
Instance->CompletionEvent = NULL;
|
||||||
Instance->RenewRebindEvent = NULL;
|
Instance->RenewRebindEvent = NULL;
|
||||||
Instance->Token = NULL;
|
Instance->Token = NULL;
|
||||||
@ -640,15 +640,15 @@ Dhcp4ServiceBindingDestroyChild (
|
|||||||
//
|
//
|
||||||
// A child can be destroyed more than once. For example,
|
// A child can be destroyed more than once. For example,
|
||||||
// Dhcp4DriverBindingStop will destroy all of its children.
|
// Dhcp4DriverBindingStop will destroy all of its children.
|
||||||
// when caller driver is being stopped, it will destory the
|
// when caller driver is being stopped, it will destroy the
|
||||||
// dhcp child it opens.
|
// dhcp child it opens.
|
||||||
//
|
//
|
||||||
if (Instance->InDestory) {
|
if (Instance->InDestroy) {
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
Instance->InDestory = TRUE;
|
Instance->InDestroy = TRUE;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Close the Udp4 protocol.
|
// Close the Udp4 protocol.
|
||||||
@ -670,7 +670,7 @@ Dhcp4ServiceBindingDestroyChild (
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
Instance->InDestory = FALSE;
|
Instance->InDestroy = FALSE;
|
||||||
|
|
||||||
gBS->RestoreTPL (OldTpl);
|
gBS->RestoreTPL (OldTpl);
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
RFC 1534: Interoperation Between DHCP and BOOTP
|
RFC 1534: Interoperation Between DHCP and BOOTP
|
||||||
RFC 3396: Encoding Long Options in DHCP.
|
RFC 3396: Encoding Long Options in DHCP.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -48,12 +48,12 @@ typedef struct _DHCP_PROTOCOL DHCP_PROTOCOL;
|
|||||||
// The state of the DHCP service. It starts as UNCONFIGED. If
|
// The state of the DHCP service. It starts as UNCONFIGED. If
|
||||||
// and active child configures the service successfully, it
|
// and active child configures the service successfully, it
|
||||||
// goes to CONFIGED. If the active child configures NULL, it
|
// goes to CONFIGED. If the active child configures NULL, it
|
||||||
// goes back to UNCONFIGED. It becomes DESTORY if it is (partly)
|
// goes back to UNCONFIGED. It becomes DESTROY if it is (partly)
|
||||||
// destoried.
|
// destroyed.
|
||||||
//
|
//
|
||||||
#define DHCP_UNCONFIGED 0
|
#define DHCP_UNCONFIGED 0
|
||||||
#define DHCP_CONFIGED 1
|
#define DHCP_CONFIGED 1
|
||||||
#define DHCP_DESTORY 2
|
#define DHCP_DESTROY 2
|
||||||
|
|
||||||
|
|
||||||
struct _DHCP_PROTOCOL {
|
struct _DHCP_PROTOCOL {
|
||||||
@ -63,7 +63,7 @@ struct _DHCP_PROTOCOL {
|
|||||||
EFI_HANDLE Handle;
|
EFI_HANDLE Handle;
|
||||||
DHCP_SERVICE *Service;
|
DHCP_SERVICE *Service;
|
||||||
|
|
||||||
BOOLEAN InDestory;
|
BOOLEAN InDestroy;
|
||||||
|
|
||||||
EFI_EVENT CompletionEvent;
|
EFI_EVENT CompletionEvent;
|
||||||
EFI_EVENT RenewRebindEvent;
|
EFI_EVENT RenewRebindEvent;
|
||||||
@ -83,8 +83,8 @@ struct _DHCP_SERVICE {
|
|||||||
UINT32 Signature;
|
UINT32 Signature;
|
||||||
EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;
|
EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;
|
||||||
|
|
||||||
INTN ServiceState; // CONFIGED, UNCONFIGED, and DESTORY
|
INTN ServiceState; // CONFIGED, UNCONFIGED, and DESTROY
|
||||||
BOOLEAN InDestory;
|
BOOLEAN InDestroy;
|
||||||
|
|
||||||
EFI_HANDLE Controller;
|
EFI_HANDLE Controller;
|
||||||
EFI_HANDLE Image;
|
EFI_HANDLE Image;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
EFI DHCP protocol implementation.
|
EFI DHCP protocol implementation.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -972,11 +972,11 @@ DhcpInput (
|
|||||||
DhcpSb = (DHCP_SERVICE *) Context;
|
DhcpSb = (DHCP_SERVICE *) Context;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Don't restart receive if error occurs or DHCP is destoried.
|
// Don't restart receive if error occurs or DHCP is destroyed.
|
||||||
//
|
//
|
||||||
if (EFI_ERROR (IoStatus)) {
|
if (EFI_ERROR (IoStatus)) {
|
||||||
return ;
|
return ;
|
||||||
} else if (DhcpSb->ServiceState == DHCP_DESTORY) {
|
} else if (DhcpSb->ServiceState == DHCP_DESTROY) {
|
||||||
NetbufFree (UdpPacket);
|
NetbufFree (UdpPacket);
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
The driver binding and service binding protocol for IP4 driver.
|
The driver binding and service binding protocol for IP4 driver.
|
||||||
|
|
||||||
Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -118,7 +118,7 @@ Ip4DriverBindingSupported (
|
|||||||
Clean up a IP4 service binding instance. It will release all
|
Clean up a IP4 service binding instance. It will release all
|
||||||
the resource allocated by the instance. The instance may be
|
the resource allocated by the instance. The instance may be
|
||||||
partly initialized, or partly destroyed. If a resource is
|
partly initialized, or partly destroyed. If a resource is
|
||||||
destroyed, it is marked as that in case the destory failed and
|
destroyed, it is marked as that in case the destroy failed and
|
||||||
being called again later.
|
being called again later.
|
||||||
|
|
||||||
@param[in] IpSb The IP4 serviceing binding instance to clean up
|
@param[in] IpSb The IP4 serviceing binding instance to clean up
|
||||||
@ -176,7 +176,7 @@ Ip4CreateService (
|
|||||||
IpSb->ServiceBinding.CreateChild = Ip4ServiceBindingCreateChild;
|
IpSb->ServiceBinding.CreateChild = Ip4ServiceBindingCreateChild;
|
||||||
IpSb->ServiceBinding.DestroyChild = Ip4ServiceBindingDestroyChild;
|
IpSb->ServiceBinding.DestroyChild = Ip4ServiceBindingDestroyChild;
|
||||||
IpSb->State = IP4_SERVICE_UNSTARTED;
|
IpSb->State = IP4_SERVICE_UNSTARTED;
|
||||||
IpSb->InDestory = FALSE;
|
IpSb->InDestroy = FALSE;
|
||||||
|
|
||||||
IpSb->NumChildren = 0;
|
IpSb->NumChildren = 0;
|
||||||
InitializeListHead (&IpSb->Children);
|
InitializeListHead (&IpSb->Children);
|
||||||
@ -315,7 +315,7 @@ ON_ERROR:
|
|||||||
Clean up a IP4 service binding instance. It will release all
|
Clean up a IP4 service binding instance. It will release all
|
||||||
the resource allocated by the instance. The instance may be
|
the resource allocated by the instance. The instance may be
|
||||||
partly initialized, or partly destroyed. If a resource is
|
partly initialized, or partly destroyed. If a resource is
|
||||||
destroyed, it is marked as that in case the destory failed and
|
destroyed, it is marked as that in case the destroy failed and
|
||||||
being called again later.
|
being called again later.
|
||||||
|
|
||||||
@param[in] IpSb The IP4 serviceing binding instance to clean up
|
@param[in] IpSb The IP4 serviceing binding instance to clean up
|
||||||
@ -581,7 +581,7 @@ Ip4DriverBindingStop (
|
|||||||
|
|
||||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
if (IpSb->Ip4Config != NULL && (IpSb->State != IP4_SERVICE_DESTORY)) {
|
if (IpSb->Ip4Config != NULL && (IpSb->State != IP4_SERVICE_DESTROY)) {
|
||||||
|
|
||||||
IpSb->Ip4Config->Stop (IpSb->Ip4Config);
|
IpSb->Ip4Config->Stop (IpSb->Ip4Config);
|
||||||
|
|
||||||
@ -651,7 +651,7 @@ Ip4DriverBindingStop (
|
|||||||
|
|
||||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
if (IpSb->InDestory) {
|
if (IpSb->InDestroy) {
|
||||||
gBS->RestoreTPL (OldTpl);
|
gBS->RestoreTPL (OldTpl);
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -668,10 +668,10 @@ Ip4DriverBindingStop (
|
|||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
IpSb->InDestory = TRUE;
|
IpSb->InDestroy = TRUE;
|
||||||
|
|
||||||
State = IpSb->State;
|
State = IpSb->State;
|
||||||
IpSb->State = IP4_SERVICE_DESTORY;
|
IpSb->State = IP4_SERVICE_DESTROY;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Clear the variable data.
|
// Clear the variable data.
|
||||||
@ -696,10 +696,10 @@ Ip4DriverBindingStop (
|
|||||||
|
|
||||||
FreePool (IpSb);
|
FreePool (IpSb);
|
||||||
} else if (NumberOfChildren == 0) {
|
} else if (NumberOfChildren == 0) {
|
||||||
IpSb->InDestory = TRUE;
|
IpSb->InDestroy = TRUE;
|
||||||
|
|
||||||
State = IpSb->State;
|
State = IpSb->State;
|
||||||
IpSb->State = IP4_SERVICE_DESTORY;
|
IpSb->State = IP4_SERVICE_DESTROY;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Clear the variable data.
|
// Clear the variable data.
|
||||||
@ -912,18 +912,18 @@ Ip4ServiceBindingDestroyChild (
|
|||||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
//
|
//
|
||||||
// A child can be destoried more than once. For example,
|
// A child can be destroyed more than once. For example,
|
||||||
// Ip4DriverBindingStop will destory all of its children.
|
// Ip4DriverBindingStop will destroy all of its children.
|
||||||
// when UDP driver is being stopped, it will destory all
|
// when UDP driver is being stopped, it will destroy all
|
||||||
// the IP child it opens.
|
// the IP child it opens.
|
||||||
//
|
//
|
||||||
if (IpInstance->State == IP4_STATE_DESTORY) {
|
if (IpInstance->State == IP4_STATE_DESTROY) {
|
||||||
gBS->RestoreTPL (OldTpl);
|
gBS->RestoreTPL (OldTpl);
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
State = IpInstance->State;
|
State = IpInstance->State;
|
||||||
IpInstance->State = IP4_STATE_DESTORY;
|
IpInstance->State = IP4_STATE_DESTROY;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Close the Managed Network protocol.
|
// Close the Managed Network protocol.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Implement IP4 pesudo interface.
|
Implement IP4 pesudo interface.
|
||||||
|
|
||||||
Copyright (c) 2005 - 2009, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -745,10 +745,10 @@ Ip4FreeInterface (
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Destory the interface if this is the last IP instance that
|
// Destroy the interface if this is the last IP instance that
|
||||||
// has the address. Remove all the system transmitted packets
|
// has the address. Remove all the system transmitted packets
|
||||||
// from this interface, cancel the receive request if there is
|
// from this interface, cancel the receive request if there is
|
||||||
// one, and destory the ARP requests.
|
// one, and destroy the ARP requests.
|
||||||
//
|
//
|
||||||
Ip4CancelFrames (Interface, EFI_ABORTED, Ip4CancelInstanceFrame, NULL);
|
Ip4CancelFrames (Interface, EFI_ABORTED, Ip4CancelInstanceFrame, NULL);
|
||||||
Ip4CancelReceive (Interface);
|
Ip4CancelReceive (Interface);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Definition for IP4 pesudo interface structure.
|
Definition for IP4 pesudo interface structure.
|
||||||
|
|
||||||
Copyright (c) 2005 - 2009, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -154,7 +154,7 @@ struct _IP4_INTERFACE {
|
|||||||
BOOLEAN Configured;
|
BOOLEAN Configured;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Handle used to create/destory ARP child. All the IP children
|
// Handle used to create/destroy ARP child. All the IP children
|
||||||
// share one MNP which is owned by IP service binding.
|
// share one MNP which is owned by IP service binding.
|
||||||
//
|
//
|
||||||
EFI_HANDLE Controller;
|
EFI_HANDLE Controller;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/** @file
|
/** @file
|
||||||
|
|
||||||
Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -1256,7 +1256,7 @@ EfiIp4Configure (
|
|||||||
Status = Ip4CleanProtocol (IpInstance);
|
Status = Ip4CleanProtocol (IpInstance);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Don't change the state if it is DESTORY, consider the following
|
// Don't change the state if it is DESTROY, consider the following
|
||||||
// valid sequence: Mnp is unloaded-->Ip Stopped-->Udp Stopped,
|
// valid sequence: Mnp is unloaded-->Ip Stopped-->Udp Stopped,
|
||||||
// Configure (ThisIp, NULL). If the state is changed to UNCONFIGED,
|
// Configure (ThisIp, NULL). If the state is changed to UNCONFIGED,
|
||||||
// the unload fails miserably.
|
// the unload fails miserably.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Ip4 internal functions and type defintions.
|
Ip4 internal functions and type defintions.
|
||||||
|
|
||||||
Copyright (c) 2005 - 2009, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -50,23 +50,23 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
//
|
//
|
||||||
// The state of IP4 protocol. It starts from UNCONFIGED. if it is
|
// The state of IP4 protocol. It starts from UNCONFIGED. if it is
|
||||||
// successfully configured, it goes to CONFIGED. if configure NULL
|
// successfully configured, it goes to CONFIGED. if configure NULL
|
||||||
// is called, it becomes UNCONFIGED again. If (partly) destoried, it
|
// is called, it becomes UNCONFIGED again. If (partly) destroyed, it
|
||||||
// becomes DESTORY.
|
// becomes DESTROY.
|
||||||
//
|
//
|
||||||
#define IP4_STATE_UNCONFIGED 0
|
#define IP4_STATE_UNCONFIGED 0
|
||||||
#define IP4_STATE_CONFIGED 1
|
#define IP4_STATE_CONFIGED 1
|
||||||
#define IP4_STATE_DESTORY 2
|
#define IP4_STATE_DESTROY 2
|
||||||
|
|
||||||
//
|
//
|
||||||
// The state of IP4 service. It starts from UNSTARTED. It transits
|
// The state of IP4 service. It starts from UNSTARTED. It transits
|
||||||
// to STARTED if autoconfigure is started. If default address is
|
// to STARTED if autoconfigure is started. If default address is
|
||||||
// configured, it becomes CONFIGED. and if partly destoried, it goes
|
// configured, it becomes CONFIGED. and if partly destroyed, it goes
|
||||||
// to DESTORY.
|
// to DESTROY.
|
||||||
//
|
//
|
||||||
#define IP4_SERVICE_UNSTARTED 0
|
#define IP4_SERVICE_UNSTARTED 0
|
||||||
#define IP4_SERVICE_STARTED 1
|
#define IP4_SERVICE_STARTED 1
|
||||||
#define IP4_SERVICE_CONFIGED 2
|
#define IP4_SERVICE_CONFIGED 2
|
||||||
#define IP4_SERVICE_DESTORY 3
|
#define IP4_SERVICE_DESTROY 3
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
@ -160,7 +160,7 @@ struct _IP4_SERVICE {
|
|||||||
UINT32 Signature;
|
UINT32 Signature;
|
||||||
EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;
|
EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;
|
||||||
INTN State;
|
INTN State;
|
||||||
BOOLEAN InDestory;
|
BOOLEAN InDestroy;
|
||||||
|
|
||||||
//
|
//
|
||||||
// List of all the IP instances and interfaces, and default
|
// List of all the IP instances and interfaces, and default
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
IP4 input process.
|
IP4 input process.
|
||||||
|
|
||||||
Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -845,7 +845,7 @@ Ip4AccpetFrame (
|
|||||||
IpSb = (IP4_SERVICE *) Context;
|
IpSb = (IP4_SERVICE *) Context;
|
||||||
Option = NULL;
|
Option = NULL;
|
||||||
|
|
||||||
if (EFI_ERROR (IoStatus) || (IpSb->State == IP4_SERVICE_DESTORY)) {
|
if (EFI_ERROR (IoStatus) || (IpSb->State == IP4_SERVICE_DESTROY)) {
|
||||||
goto DROP;
|
goto DROP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Implementation of Mtftp drivers.
|
Implementation of Mtftp drivers.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -159,7 +159,7 @@ Mtftp4CreateService (
|
|||||||
|
|
||||||
MtftpSb->Signature = MTFTP4_SERVICE_SIGNATURE;
|
MtftpSb->Signature = MTFTP4_SERVICE_SIGNATURE;
|
||||||
MtftpSb->ServiceBinding = gMtftp4ServiceBindingTemplete;
|
MtftpSb->ServiceBinding = gMtftp4ServiceBindingTemplete;
|
||||||
MtftpSb->InDestory = FALSE;
|
MtftpSb->InDestroy = FALSE;
|
||||||
MtftpSb->ChildrenNum = 0;
|
MtftpSb->ChildrenNum = 0;
|
||||||
InitializeListHead (&MtftpSb->Children);
|
InitializeListHead (&MtftpSb->Children);
|
||||||
|
|
||||||
@ -374,7 +374,7 @@ Mtftp4DriverBindingStop (
|
|||||||
|
|
||||||
MtftpSb = MTFTP4_SERVICE_FROM_THIS (ServiceBinding);
|
MtftpSb = MTFTP4_SERVICE_FROM_THIS (ServiceBinding);
|
||||||
|
|
||||||
if (MtftpSb->InDestory) {
|
if (MtftpSb->InDestroy) {
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,7 +382,7 @@ Mtftp4DriverBindingStop (
|
|||||||
|
|
||||||
if (NumberOfChildren == 0) {
|
if (NumberOfChildren == 0) {
|
||||||
|
|
||||||
MtftpSb->InDestory = TRUE;
|
MtftpSb->InDestroy = TRUE;
|
||||||
|
|
||||||
gBS->UninstallProtocolInterface (
|
gBS->UninstallProtocolInterface (
|
||||||
NicHandle,
|
NicHandle,
|
||||||
@ -429,7 +429,7 @@ Mtftp4InitProtocol (
|
|||||||
InitializeListHead (&Instance->Link);
|
InitializeListHead (&Instance->Link);
|
||||||
CopyMem (&Instance->Mtftp4, &gMtftp4ProtocolTemplate, sizeof (Instance->Mtftp4));
|
CopyMem (&Instance->Mtftp4, &gMtftp4ProtocolTemplate, sizeof (Instance->Mtftp4));
|
||||||
Instance->State = MTFTP4_STATE_UNCONFIGED;
|
Instance->State = MTFTP4_STATE_UNCONFIGED;
|
||||||
Instance->InDestory = FALSE;
|
Instance->InDestroy = FALSE;
|
||||||
Instance->Service = MtftpSb;
|
Instance->Service = MtftpSb;
|
||||||
|
|
||||||
InitializeListHead (&Instance->Blocks);
|
InitializeListHead (&Instance->Blocks);
|
||||||
@ -548,14 +548,14 @@ ON_ERROR:
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory one of the service binding's child.
|
Destroy one of the service binding's child.
|
||||||
|
|
||||||
@param This The service binding instance
|
@param This The service binding instance
|
||||||
@param ChildHandle The child handle to destory
|
@param ChildHandle The child handle to destroy
|
||||||
|
|
||||||
@retval EFI_INVALID_PARAMETER The parameter is invaid.
|
@retval EFI_INVALID_PARAMETER The parameter is invaid.
|
||||||
@retval EFI_UNSUPPORTED The child may have already been destoried.
|
@retval EFI_UNSUPPORTED The child may have already been destroyed.
|
||||||
@retval EFI_SUCCESS The child is destoried and removed from the
|
@retval EFI_SUCCESS The child is destroyed and removed from the
|
||||||
parent's child list.
|
parent's child list.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
@ -599,11 +599,11 @@ Mtftp4ServiceBindingDestroyChild (
|
|||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Instance->InDestory) {
|
if (Instance->InDestroy) {
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
Instance->InDestory = TRUE;
|
Instance->InDestroy = TRUE;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Close the Udp4 protocol.
|
// Close the Udp4 protocol.
|
||||||
@ -625,7 +625,7 @@ Mtftp4ServiceBindingDestroyChild (
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
Instance->InDestory = FALSE;
|
Instance->InDestroy = FALSE;
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Mtftp drivers function header.
|
Mtftp drivers function header.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -113,14 +113,14 @@ Mtftp4ServiceBindingCreateChild (
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory one of the service binding's child.
|
Destroy one of the service binding's child.
|
||||||
|
|
||||||
@param This The service binding instance
|
@param This The service binding instance
|
||||||
@param ChildHandle The child handle to destory
|
@param ChildHandle The child handle to destroy
|
||||||
|
|
||||||
@retval EFI_INVALID_PARAMETER The parameter is invaid.
|
@retval EFI_INVALID_PARAMETER The parameter is invaid.
|
||||||
@retval EFI_UNSUPPORTED The child may have already been destoried.
|
@retval EFI_UNSUPPORTED The child may have already been destroyed.
|
||||||
@retval EFI_SUCCESS The child is destoried and removed from the
|
@retval EFI_SUCCESS The child is destroyed and removed from the
|
||||||
parent's child list.
|
parent's child list.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Interface routine for Mtftp4.
|
Interface routine for Mtftp4.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -1073,7 +1073,7 @@ EfiMtftp4Poll (
|
|||||||
|
|
||||||
if (Instance->State == MTFTP4_STATE_UNCONFIGED) {
|
if (Instance->State == MTFTP4_STATE_UNCONFIGED) {
|
||||||
return EFI_NOT_STARTED;
|
return EFI_NOT_STARTED;
|
||||||
} else if (Instance->State == MTFTP4_STATE_DESTORY) {
|
} else if (Instance->State == MTFTP4_STATE_DESTROY) {
|
||||||
return EFI_DEVICE_ERROR;
|
return EFI_DEVICE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
RFC2348 - TFTP Blocksize Option
|
RFC2348 - TFTP Blocksize Option
|
||||||
RFC2349 - TFTP Timeout Interval and Transfer Size Options
|
RFC2349 - TFTP Timeout Interval and Transfer Size Options
|
||||||
|
|
||||||
Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -59,7 +59,7 @@ typedef struct _MTFTP4_PROTOCOL MTFTP4_PROTOCOL;
|
|||||||
|
|
||||||
#define MTFTP4_STATE_UNCONFIGED 0
|
#define MTFTP4_STATE_UNCONFIGED 0
|
||||||
#define MTFTP4_STATE_CONFIGED 1
|
#define MTFTP4_STATE_CONFIGED 1
|
||||||
#define MTFTP4_STATE_DESTORY 2
|
#define MTFTP4_STATE_DESTROY 2
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Mtftp service block
|
/// Mtftp service block
|
||||||
@ -68,7 +68,7 @@ struct _MTFTP4_SERVICE {
|
|||||||
UINT32 Signature;
|
UINT32 Signature;
|
||||||
EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;
|
EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;
|
||||||
|
|
||||||
BOOLEAN InDestory;
|
BOOLEAN InDestroy;
|
||||||
|
|
||||||
UINT16 ChildrenNum;
|
UINT16 ChildrenNum;
|
||||||
LIST_ENTRY Children;
|
LIST_ENTRY Children;
|
||||||
@ -99,7 +99,7 @@ struct _MTFTP4_PROTOCOL {
|
|||||||
EFI_MTFTP4_PROTOCOL Mtftp4;
|
EFI_MTFTP4_PROTOCOL Mtftp4;
|
||||||
|
|
||||||
INTN State;
|
INTN State;
|
||||||
BOOLEAN InDestory;
|
BOOLEAN InDestroy;
|
||||||
|
|
||||||
MTFTP4_SERVICE *Service;
|
MTFTP4_SERVICE *Service;
|
||||||
EFI_HANDLE Handle;
|
EFI_HANDLE Handle;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Implementation of the Socket.
|
Implementation of the Socket.
|
||||||
|
|
||||||
Copyright (c) 2005 - 2009, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -739,7 +739,7 @@ SockDestroy (
|
|||||||
|
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// Destory the RcvBuffer Queue and SendBuffer Queue
|
// Destroy the RcvBuffer Queue and SendBuffer Queue
|
||||||
//
|
//
|
||||||
NetbufQueFree (Sock->RcvBuffer.DataQueue);
|
NetbufQueFree (Sock->RcvBuffer.DataQueue);
|
||||||
NetbufQueFree (Sock->SndBuffer.DataQueue);
|
NetbufQueFree (Sock->SndBuffer.DataQueue);
|
||||||
@ -754,7 +754,7 @@ SockDestroy (
|
|||||||
|
|
||||||
DEBUG (
|
DEBUG (
|
||||||
(EFI_D_INFO,
|
(EFI_D_INFO,
|
||||||
"SockDestory: Delete a unaccepted socket from parent"
|
"SockDestroy: Delete a unaccepted socket from parent"
|
||||||
"now conncnt is %d\n",
|
"now conncnt is %d\n",
|
||||||
Sock->Parent->ConnCnt)
|
Sock->Parent->ConnCnt)
|
||||||
);
|
);
|
||||||
|
@ -131,7 +131,7 @@ SockBufferToken (
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory the socket Sock and its associated protocol control block.
|
Destroy the socket Sock and its associated protocol control block.
|
||||||
|
|
||||||
@param Sock The socket to be destroyed.
|
@param Sock The socket to be destroyed.
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Socket header file.
|
Socket header file.
|
||||||
|
|
||||||
Copyright (c) 2005 - 2009, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -723,7 +723,7 @@ SockCreateChild (
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory the socket Sock and its associated protocol control block.
|
Destroy the socket Sock and its associated protocol control block.
|
||||||
|
|
||||||
@param Sock The socket to be destroyed.
|
@param Sock The socket to be destroyed.
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Support for PxeBc dhcp functions.
|
Support for PxeBc dhcp functions.
|
||||||
|
|
||||||
Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -203,7 +203,7 @@ PxeBcParseCachedDhcpPacket (
|
|||||||
(Offer->Dhcp4.Header.BootFileName[0] != 0)) {
|
(Offer->Dhcp4.Header.BootFileName[0] != 0)) {
|
||||||
//
|
//
|
||||||
// If the bootfile is not present and bootfilename is present in dhcp packet, just parse it.
|
// If the bootfile is not present and bootfilename is present in dhcp packet, just parse it.
|
||||||
// And do not count dhcp option header, or else will destory the serverhostname.
|
// And do not count dhcp option header, or else will destroy the serverhostname.
|
||||||
//
|
//
|
||||||
Options[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] = (EFI_DHCP4_PACKET_OPTION *) (&Offer->Dhcp4.Header.BootFileName[0] -
|
Options[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] = (EFI_DHCP4_PACKET_OPTION *) (&Offer->Dhcp4.Header.BootFileName[0] -
|
||||||
OFFSET_OF (EFI_DHCP4_PACKET_OPTION, Data[0]));
|
OFFSET_OF (EFI_DHCP4_PACKET_OPTION, Data[0]));
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
The implementation for Ping6 application.
|
The implementation for Ping6 application.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -802,13 +802,13 @@ ON_ERROR:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory the IP6 instance.
|
Destroy the IP6 instance.
|
||||||
|
|
||||||
@param[in] Private The pointer of PING6_PRIVATE_DATA.
|
@param[in] Private The pointer of PING6_PRIVATE_DATA.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
Ping6DestoryIp6Instance (
|
Ping6DestroyIp6Instance (
|
||||||
IN PING6_PRIVATE_DATA *Private
|
IN PING6_PRIVATE_DATA *Private
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -1019,7 +1019,7 @@ ON_EXIT:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Private->Ip6ChildHandle != NULL) {
|
if (Private->Ip6ChildHandle != NULL) {
|
||||||
Ping6DestoryIp6Instance (Private);
|
Ping6DestroyIp6Instance (Private);
|
||||||
}
|
}
|
||||||
|
|
||||||
FreePool (Private);
|
FreePool (Private);
|
||||||
|
@ -82,7 +82,7 @@ Dhcp6ConfigureUdpIo (
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory the Dhcp6 service. The Dhcp6 service may be partly initialized,
|
Destroy the Dhcp6 service. The Dhcp6 service may be partly initialized,
|
||||||
or partly destroyed. If a resource is destroyed, it is marked as such in
|
or partly destroyed. If a resource is destroyed, it is marked as such in
|
||||||
case the destroy failed and being called again later.
|
case the destroy failed and being called again later.
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ Dhcp6DestroyService (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// All children instances should have been already destoryed here.
|
// All children instances should have been already destroyed here.
|
||||||
//
|
//
|
||||||
ASSERT (Service->NumOfChild == 0);
|
ASSERT (Service->NumOfChild == 0);
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ Dhcp6CreateService (
|
|||||||
// Initialize the fields of the new Dhcp6 service.
|
// Initialize the fields of the new Dhcp6 service.
|
||||||
//
|
//
|
||||||
Dhcp6Srv->Signature = DHCP6_SERVICE_SIGNATURE;
|
Dhcp6Srv->Signature = DHCP6_SERVICE_SIGNATURE;
|
||||||
Dhcp6Srv->InDestory = FALSE;
|
Dhcp6Srv->InDestroy = FALSE;
|
||||||
Dhcp6Srv->Controller = Controller;
|
Dhcp6Srv->Controller = Controller;
|
||||||
Dhcp6Srv->Image = ImageHandle;
|
Dhcp6Srv->Image = ImageHandle;
|
||||||
Dhcp6Srv->Xid = (0xffffff & NET_RANDOM (NetRandomInitSeed ()));
|
Dhcp6Srv->Xid = (0xffffff & NET_RANDOM (NetRandomInitSeed ()));
|
||||||
@ -294,7 +294,7 @@ Dhcp6CreateInstance (
|
|||||||
Dhcp6Ins->Signature = DHCP6_INSTANCE_SIGNATURE;
|
Dhcp6Ins->Signature = DHCP6_INSTANCE_SIGNATURE;
|
||||||
Dhcp6Ins->UdpSts = EFI_ALREADY_STARTED;
|
Dhcp6Ins->UdpSts = EFI_ALREADY_STARTED;
|
||||||
Dhcp6Ins->Service = Service;
|
Dhcp6Ins->Service = Service;
|
||||||
Dhcp6Ins->InDestory = FALSE;
|
Dhcp6Ins->InDestroy = FALSE;
|
||||||
Dhcp6Ins->MediaPresent = TRUE;
|
Dhcp6Ins->MediaPresent = TRUE;
|
||||||
|
|
||||||
CopyMem (
|
CopyMem (
|
||||||
@ -528,7 +528,7 @@ Dhcp6DriverBindingStop (
|
|||||||
|
|
||||||
Service = DHCP6_SERVICE_FROM_THIS (ServiceBinding);
|
Service = DHCP6_SERVICE_FROM_THIS (ServiceBinding);
|
||||||
|
|
||||||
if (Service->InDestory) {
|
if (Service->InDestroy) {
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -536,9 +536,9 @@ Dhcp6DriverBindingStop (
|
|||||||
|
|
||||||
if (NumberOfChildren == 0) {
|
if (NumberOfChildren == 0) {
|
||||||
//
|
//
|
||||||
// Destory the service itself if no child instance left.
|
// Destroy the service itself if no child instance left.
|
||||||
//
|
//
|
||||||
Service->InDestory = TRUE;
|
Service->InDestroy = TRUE;
|
||||||
|
|
||||||
Status = gBS->UninstallProtocolInterface (
|
Status = gBS->UninstallProtocolInterface (
|
||||||
NicHandle,
|
NicHandle,
|
||||||
@ -547,7 +547,7 @@ Dhcp6DriverBindingStop (
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
Service->InDestory = FALSE;
|
Service->InDestroy = FALSE;
|
||||||
goto ON_EXIT;
|
goto ON_EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -555,7 +555,7 @@ Dhcp6DriverBindingStop (
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
//
|
//
|
||||||
// Destory all the children instances before destory the service.
|
// Destroy all the children instances before destroy the service.
|
||||||
//
|
//
|
||||||
while (!IsListEmpty (&Service->Child)) {
|
while (!IsListEmpty (&Service->Child)) {
|
||||||
Instance = NET_LIST_HEAD (&Service->Child, DHCP6_INSTANCE, Link);
|
Instance = NET_LIST_HEAD (&Service->Child, DHCP6_INSTANCE, Link);
|
||||||
@ -747,13 +747,13 @@ Dhcp6ServiceBindingDestroyChild (
|
|||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Instance->InDestory) {
|
if (Instance->InDestroy) {
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
Instance->InDestory = TRUE;
|
Instance->InDestroy = TRUE;
|
||||||
|
|
||||||
Status = gBS->CloseProtocol (
|
Status = gBS->CloseProtocol (
|
||||||
Service->UdpIo->UdpHandle,
|
Service->UdpIo->UdpHandle,
|
||||||
@ -763,7 +763,7 @@ Dhcp6ServiceBindingDestroyChild (
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
Instance->InDestory = FALSE;
|
Instance->InDestroy = FALSE;
|
||||||
gBS->RestoreTPL (OldTpl);
|
gBS->RestoreTPL (OldTpl);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
@ -778,7 +778,7 @@ Dhcp6ServiceBindingDestroyChild (
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
Instance->InDestory = FALSE;
|
Instance->InDestroy = FALSE;
|
||||||
gBS->RestoreTPL (OldTpl);
|
gBS->RestoreTPL (OldTpl);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -246,7 +246,7 @@ struct _DHCP6_INSTANCE {
|
|||||||
UINT8 AdPref;
|
UINT8 AdPref;
|
||||||
EFI_IPv6_ADDRESS *Unicast;
|
EFI_IPv6_ADDRESS *Unicast;
|
||||||
EFI_STATUS UdpSts;
|
EFI_STATUS UdpSts;
|
||||||
BOOLEAN InDestory;
|
BOOLEAN InDestroy;
|
||||||
BOOLEAN MediaPresent;
|
BOOLEAN MediaPresent;
|
||||||
UINT64 StartTime;
|
UINT64 StartTime;
|
||||||
};
|
};
|
||||||
@ -266,7 +266,7 @@ struct _DHCP6_SERVICE {
|
|||||||
UINT32 Xid;
|
UINT32 Xid;
|
||||||
LIST_ENTRY Child;
|
LIST_ENTRY Child;
|
||||||
UINTN NumOfChild;
|
UINTN NumOfChild;
|
||||||
BOOLEAN InDestory;
|
BOOLEAN InDestroy;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -52,7 +52,7 @@ Dhcp6EnqueueRetry (
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Save tx packet pointer, and it will be destoryed when reply received.
|
// Save tx packet pointer, and it will be destroyed when reply received.
|
||||||
//
|
//
|
||||||
TxCb->TxPacket = Packet;
|
TxCb->TxPacket = Packet;
|
||||||
TxCb->Xid = Packet->Dhcp6.Header.TransactionId;
|
TxCb->Xid = Packet->Dhcp6.Header.TransactionId;
|
||||||
@ -2510,7 +2510,7 @@ Dhcp6HandleStateful (
|
|||||||
ClientId = Service->ClientId;
|
ClientId = Service->ClientId;
|
||||||
Status = EFI_SUCCESS;
|
Status = EFI_SUCCESS;
|
||||||
|
|
||||||
if (Instance->InDestory || Instance->Config == NULL) {
|
if (Instance->InDestroy || Instance->Config == NULL) {
|
||||||
goto ON_CONTINUE;
|
goto ON_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2624,7 +2624,7 @@ Dhcp6HandleStateless (
|
|||||||
IsMatched = FALSE;
|
IsMatched = FALSE;
|
||||||
InfCb = NULL;
|
InfCb = NULL;
|
||||||
|
|
||||||
if (Instance->InDestory) {
|
if (Instance->InDestroy) {
|
||||||
goto ON_EXIT;
|
goto ON_EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Implementation for iSCSI Boot Firmware Table publication.
|
Implementation for iSCSI Boot Firmware Table publication.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -310,17 +310,17 @@ IScsiFillNICAndTargetSections (
|
|||||||
//
|
//
|
||||||
// Map the various v4 addresses into v6 addresses.
|
// Map the various v4 addresses into v6 addresses.
|
||||||
//
|
//
|
||||||
IScsiMapV4ToV6Addr (&NvData->LocalIp, &Nic->Ip);
|
IScsiMapV4ToV6Addr (&NvData->LocalIp.v4, &Nic->Ip);
|
||||||
IScsiMapV4ToV6Addr (&NvData->Gateway, &Nic->Gateway);
|
IScsiMapV4ToV6Addr (&NvData->Gateway.v4, &Nic->Gateway);
|
||||||
IScsiMapV4ToV6Addr (&Attempt->PrimaryDns.v4, &Nic->PrimaryDns);
|
IScsiMapV4ToV6Addr (&Attempt->PrimaryDns.v4, &Nic->PrimaryDns);
|
||||||
IScsiMapV4ToV6Addr (&Attempt->SecondaryDns.v4, &Nic->SecondaryDns);
|
IScsiMapV4ToV6Addr (&Attempt->SecondaryDns.v4, &Nic->SecondaryDns);
|
||||||
IScsiMapV4ToV6Addr (&Attempt->DhcpServer.v4, &Nic->DhcpServer);
|
IScsiMapV4ToV6Addr (&Attempt->DhcpServer.v4, &Nic->DhcpServer);
|
||||||
|
|
||||||
} else if (NvData->IpMode == IP_MODE_IP6 || NvData->IpMode == IP_MODE_AUTOCONFIG) {
|
} else if (NvData->IpMode == IP_MODE_IP6 || NvData->IpMode == IP_MODE_AUTOCONFIG) {
|
||||||
//
|
|
||||||
// TODO: The subnet mask/local ip/gateway/dhcpserver for iBFT-IPv6 needs to be
|
Nic->SubnetMaskPrefixLength = NvData->PrefixLength;
|
||||||
// confirmed with spec owner.
|
CopyMem (&Nic->Ip, &NvData->LocalIp, sizeof (EFI_IPv6_ADDRESS));
|
||||||
//
|
CopyMem (&Nic->Gateway, &NvData->Gateway, sizeof (EFI_IPv6_ADDRESS));
|
||||||
|
|
||||||
CopyMem (&Nic->PrimaryDns, &Attempt->PrimaryDns, sizeof (EFI_IPv6_ADDRESS));
|
CopyMem (&Nic->PrimaryDns, &Attempt->PrimaryDns, sizeof (EFI_IPv6_ADDRESS));
|
||||||
CopyMem (&Nic->SecondaryDns, &Attempt->SecondaryDns, sizeof (EFI_IPv6_ADDRESS));
|
CopyMem (&Nic->SecondaryDns, &Attempt->SecondaryDns, sizeof (EFI_IPv6_ADDRESS));
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
The shared head file for iSCSI driver.
|
The shared head file for iSCSI driver.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -23,6 +23,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
#include <Protocol/DevicePath.h>
|
#include <Protocol/DevicePath.h>
|
||||||
#include <Protocol/HiiConfigAccess.h>
|
#include <Protocol/HiiConfigAccess.h>
|
||||||
|
|
||||||
|
#include <Protocol/Ip6.h>
|
||||||
#include <Protocol/Dhcp4.h>
|
#include <Protocol/Dhcp4.h>
|
||||||
#include <Protocol/Dhcp6.h>
|
#include <Protocol/Dhcp6.h>
|
||||||
#include <Protocol/Tcp4.h>
|
#include <Protocol/Tcp4.h>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Miscellaneous definitions for iSCSI driver.
|
Miscellaneous definitions for iSCSI driver.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -23,14 +23,15 @@ typedef struct _ISCSI_SESSION_CONFIG_NVDATA {
|
|||||||
UINT8 Enabled;
|
UINT8 Enabled;
|
||||||
UINT8 IpMode;
|
UINT8 IpMode;
|
||||||
|
|
||||||
EFI_IPv4_ADDRESS LocalIp;
|
EFI_IP_ADDRESS LocalIp;
|
||||||
EFI_IPv4_ADDRESS SubnetMask;
|
EFI_IPv4_ADDRESS SubnetMask;
|
||||||
EFI_IPv4_ADDRESS Gateway;
|
EFI_IP_ADDRESS Gateway;
|
||||||
|
|
||||||
BOOLEAN InitiatorInfoFromDhcp;
|
BOOLEAN InitiatorInfoFromDhcp;
|
||||||
BOOLEAN TargetInfoFromDhcp;
|
BOOLEAN TargetInfoFromDhcp;
|
||||||
CHAR8 TargetName[ISCSI_NAME_MAX_SIZE];
|
CHAR8 TargetName[ISCSI_NAME_MAX_SIZE];
|
||||||
EFI_IP_ADDRESS TargetIp;
|
EFI_IP_ADDRESS TargetIp;
|
||||||
|
UINT8 PrefixLength;
|
||||||
UINT8 BootLun[8];
|
UINT8 BootLun[8];
|
||||||
|
|
||||||
UINT16 ConnectTimeout; ///< timout value in milliseconds
|
UINT16 ConnectTimeout; ///< timout value in milliseconds
|
||||||
|
@ -308,6 +308,98 @@ IScsiDestroyConnection (
|
|||||||
FreePool (Conn);
|
FreePool (Conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieve the IPv6 Address/Prefix/Gateway from the established TCP connection, these informations
|
||||||
|
will be filled in the iSCSI Boot Firmware Table.
|
||||||
|
|
||||||
|
@param[in] Conn The connection used in the iSCSI login phase.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS Get the NIC information successfully.
|
||||||
|
@retval Others Other errors as indicated.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
IScsiGetIp6NicInfo (
|
||||||
|
IN ISCSI_CONNECTION *Conn
|
||||||
|
)
|
||||||
|
{
|
||||||
|
ISCSI_SESSION_CONFIG_NVDATA *NvData;
|
||||||
|
EFI_TCP6_PROTOCOL *Tcp6;
|
||||||
|
EFI_IP6_MODE_DATA Ip6ModeData;
|
||||||
|
EFI_STATUS Status;
|
||||||
|
EFI_IPv6_ADDRESS *TargetIp;
|
||||||
|
UINTN Index;
|
||||||
|
UINT8 SubnetPrefixLength;
|
||||||
|
UINTN RouteEntry;
|
||||||
|
|
||||||
|
NvData = &Conn->Session->ConfigData->SessionConfigData;
|
||||||
|
TargetIp = &NvData->TargetIp.v6;
|
||||||
|
Tcp6 = Conn->TcpIo.Tcp.Tcp6;
|
||||||
|
|
||||||
|
ZeroMem (&Ip6ModeData, sizeof (EFI_IP6_MODE_DATA));
|
||||||
|
Status = Tcp6->GetModeData (
|
||||||
|
Tcp6,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
&Ip6ModeData,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Ip6ModeData.IsConfigured) {
|
||||||
|
Status = EFI_ABORTED;
|
||||||
|
goto ON_EXIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
IP6_COPY_ADDRESS (&NvData->LocalIp, &Ip6ModeData.ConfigData.StationAddress);
|
||||||
|
|
||||||
|
NvData->PrefixLength = 0;
|
||||||
|
for (Index = 0; Index < Ip6ModeData.AddressCount; Index++) {
|
||||||
|
if (EFI_IP6_EQUAL (&NvData->LocalIp.v6, &Ip6ModeData.AddressList[Index].Address)) {
|
||||||
|
NvData->PrefixLength = Ip6ModeData.AddressList[Index].PrefixLength;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SubnetPrefixLength = 0;
|
||||||
|
RouteEntry = Ip6ModeData.RouteCount;
|
||||||
|
for (Index = 0; Index < Ip6ModeData.RouteCount; Index++) {
|
||||||
|
if (NetIp6IsNetEqual (TargetIp, &Ip6ModeData.RouteTable[Index].Destination, Ip6ModeData.RouteTable[Index].PrefixLength)) {
|
||||||
|
if (SubnetPrefixLength < Ip6ModeData.RouteTable[Index].PrefixLength) {
|
||||||
|
SubnetPrefixLength = Ip6ModeData.RouteTable[Index].PrefixLength;
|
||||||
|
RouteEntry = Index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (RouteEntry != Ip6ModeData.RouteCount) {
|
||||||
|
IP6_COPY_ADDRESS (&NvData->Gateway, &Ip6ModeData.RouteTable[RouteEntry].Gateway);
|
||||||
|
}
|
||||||
|
|
||||||
|
ON_EXIT:
|
||||||
|
if (Ip6ModeData.AddressList != NULL) {
|
||||||
|
FreePool (Ip6ModeData.AddressList);
|
||||||
|
}
|
||||||
|
if (Ip6ModeData.GroupTable!= NULL) {
|
||||||
|
FreePool (Ip6ModeData.GroupTable);
|
||||||
|
}
|
||||||
|
if (Ip6ModeData.RouteTable!= NULL) {
|
||||||
|
FreePool (Ip6ModeData.RouteTable);
|
||||||
|
}
|
||||||
|
if (Ip6ModeData.NeighborCache!= NULL) {
|
||||||
|
FreePool (Ip6ModeData.NeighborCache);
|
||||||
|
}
|
||||||
|
if (Ip6ModeData.PrefixTable!= NULL) {
|
||||||
|
FreePool (Ip6ModeData.PrefixTable);
|
||||||
|
}
|
||||||
|
if (Ip6ModeData.IcmpTypeList!= NULL) {
|
||||||
|
FreePool (Ip6ModeData.IcmpTypeList);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Login the iSCSI session.
|
Login the iSCSI session.
|
||||||
@ -395,6 +487,10 @@ IScsiSessionLogin (
|
|||||||
);
|
);
|
||||||
|
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
|
if (mPrivate->Ipv6Flag) {
|
||||||
|
Status = IScsiGetIp6NicInfo (Conn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
The implementation of EFI IPv6 Configuration Protocol.
|
The implementation of EFI IPv6 Configuration Protocol.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -2316,12 +2316,12 @@ Ip6ConfigCleanInstance (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory the Dhcp6 child in IP6_CONFIG_INSTANCE and release the resources.
|
Destroy the Dhcp6 child in IP6_CONFIG_INSTANCE and release the resources.
|
||||||
|
|
||||||
@param[in, out] Instance The buffer of IP6_CONFIG_INSTANCE to be freed.
|
@param[in, out] Instance The buffer of IP6_CONFIG_INSTANCE to be freed.
|
||||||
|
|
||||||
@retval EFI_SUCCESS The child was successfully destroyed.
|
@retval EFI_SUCCESS The child was successfully destroyed.
|
||||||
@retval Others Failed to destory the child.
|
@retval Others Failed to destroy the child.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Definitions for EFI IPv6 Configuartion Protocol implementation.
|
Definitions for EFI IPv6 Configuartion Protocol implementation.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -279,12 +279,12 @@ Ip6ConfigCleanInstance (
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory the Dhcp6 child in IP6_CONFIG_INSTANCE and release the resources.
|
Destroy the Dhcp6 child in IP6_CONFIG_INSTANCE and release the resources.
|
||||||
|
|
||||||
@param[in, out] Instance The buffer of IP6_CONFIG_INSTANCE to be freed.
|
@param[in, out] Instance The buffer of IP6_CONFIG_INSTANCE to be freed.
|
||||||
|
|
||||||
@retval EFI_SUCCESS The child was successfully destroyed.
|
@retval EFI_SUCCESS The child was successfully destroyed.
|
||||||
@retval Others Failed to destory the child.
|
@retval Others Failed to destroy the child.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
The driver binding and service binding protocol for IP6 driver.
|
The driver binding and service binding protocol for IP6 driver.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -94,7 +94,7 @@ Ip6DriverBindingSupported (
|
|||||||
Clean up an IP6 service binding instance. It releases all
|
Clean up an IP6 service binding instance. It releases all
|
||||||
the resource allocated by the instance. The instance may be
|
the resource allocated by the instance. The instance may be
|
||||||
partly initialized, or partly destroyed. If a resource is
|
partly initialized, or partly destroyed. If a resource is
|
||||||
destroyed, it is marked as that in case the destory failed and
|
destroyed, it is marked as that in case the destroy failed and
|
||||||
being called again later.
|
being called again later.
|
||||||
|
|
||||||
@param[in] IpSb The IP6 service binding instance to clean up.
|
@param[in] IpSb The IP6 service binding instance to clean up.
|
||||||
@ -852,8 +852,8 @@ Ip6ServiceBindingDestroyChild (
|
|||||||
|
|
||||||
//
|
//
|
||||||
// A child can be destroyed more than once. For example,
|
// A child can be destroyed more than once. For example,
|
||||||
// Ip6DriverBindingStop will destory all of its children.
|
// Ip6DriverBindingStop will destroy all of its children.
|
||||||
// when UDP driver is being stopped, it will destory all
|
// when UDP driver is being stopped, it will destroy all
|
||||||
// the IP child it opens.
|
// the IP child it opens.
|
||||||
//
|
//
|
||||||
if (IpInstance->State == IP6_STATE_DESTROY) {
|
if (IpInstance->State == IP6_STATE_DESTROY) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
The driver binding and service binding protocol for IP6 driver.
|
The driver binding and service binding protocol for IP6 driver.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -24,7 +24,7 @@ extern EFI_COMPONENT_NAME2_PROTOCOL gIp6ComponentName2;
|
|||||||
Clean up an IP6 service binding instance. It releases all
|
Clean up an IP6 service binding instance. It releases all
|
||||||
the resource allocated by the instance. The instance may be
|
the resource allocated by the instance. The instance may be
|
||||||
partly initialized, or partly destroyed. If a resource is
|
partly initialized, or partly destroyed. If a resource is
|
||||||
destroyed, it is marked as that in case the destory failed and
|
destroyed, it is marked as that in case the destroy failed and
|
||||||
being called again later.
|
being called again later.
|
||||||
|
|
||||||
@param[in] IpSb The IP6 service binding instance to clean up.
|
@param[in] IpSb The IP6 service binding instance to clean up.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Implement IP6 pesudo interface.
|
Implement IP6 pesudo interface.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -314,7 +314,7 @@ Ip6CleanInterface (
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Destory the interface if this is the last IP instance.
|
// Destroy the interface if this is the last IP instance.
|
||||||
// Remove all the system transmitted packets
|
// Remove all the system transmitted packets
|
||||||
// from this interface, cancel the receive request if exists.
|
// from this interface, cancel the receive request if exists.
|
||||||
//
|
//
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Implementation of EFI_IP6_PROTOCOL protocol interfaces.
|
Implementation of EFI_IP6_PROTOCOL protocol interfaces.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -689,7 +689,7 @@ EfiIp6Configure (
|
|||||||
Status = Ip6CleanProtocol (IpInstance);
|
Status = Ip6CleanProtocol (IpInstance);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Don't change the state if it is DESTORY, consider the following
|
// Don't change the state if it is DESTROY, consider the following
|
||||||
// valid sequence: Mnp is unloaded-->Ip Stopped-->Udp Stopped,
|
// valid sequence: Mnp is unloaded-->Ip Stopped-->Udp Stopped,
|
||||||
// Configure (ThisIp, NULL). If the state is changed to UNCONFIGED,
|
// Configure (ThisIp, NULL). If the state is changed to UNCONFIGED,
|
||||||
// the unload fails miserably.
|
// the unload fails miserably.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Implementation of Neighbor Discovery support routines.
|
Implementation of Neighbor Discovery support routines.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -261,7 +261,7 @@ Ip6CreatePrefixListEntry (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory a IP6 prefix list entry.
|
Destroy a IP6 prefix list entry.
|
||||||
|
|
||||||
@param[in] IpSb The pointer to IP6_SERVICE instance.
|
@param[in] IpSb The pointer to IP6_SERVICE instance.
|
||||||
@param[in] PrefixEntry The to be destroyed prefix list entry.
|
@param[in] PrefixEntry The to be destroyed prefix list entry.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Definition of Neighbor Discovery support routines.
|
Definition of Neighbor Discovery support routines.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -336,7 +336,7 @@ Ip6CreatePrefixListEntry (
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory a IP6 prefix list entry.
|
Destroy a IP6 prefix list entry.
|
||||||
|
|
||||||
@param[in] IpSb The pointer to IP6_SERVICE instance.
|
@param[in] IpSb The pointer to IP6_SERVICE instance.
|
||||||
@param[in] PrefixEntry The to be destroyed prefix list entry.
|
@param[in] PrefixEntry The to be destroyed prefix list entry.
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
Driver Binding functions and Service Binding functions
|
Driver Binding functions and Service Binding functions
|
||||||
implementation for Mtftp6 Driver.
|
implementation for Mtftp6 Driver.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -33,7 +33,7 @@ EFI_SERVICE_BINDING_PROTOCOL gMtftp6ServiceBindingTemplate = {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory the MTFTP6 service. The MTFTP6 service may be partly initialized,
|
Destroy the MTFTP6 service. The MTFTP6 service may be partly initialized,
|
||||||
or partly destroyed. If a resource is destroyed, it is marked as such in
|
or partly destroyed. If a resource is destroyed, it is marked as such in
|
||||||
case the destroy failed and is called again later.
|
case the destroy failed and is called again later.
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ Mtftp6DestroyService (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Make sure all children instances have been already destoryed.
|
// Make sure all children instances have been already destroyed.
|
||||||
//
|
//
|
||||||
ASSERT (Service->ChildrenNum == 0);
|
ASSERT (Service->ChildrenNum == 0);
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ Mtftp6CreateService (
|
|||||||
Mtftp6Srv->Signature = MTFTP6_SERVICE_SIGNATURE;
|
Mtftp6Srv->Signature = MTFTP6_SERVICE_SIGNATURE;
|
||||||
Mtftp6Srv->Controller = Controller;
|
Mtftp6Srv->Controller = Controller;
|
||||||
Mtftp6Srv->Image = Image;
|
Mtftp6Srv->Image = Image;
|
||||||
Mtftp6Srv->InDestory = FALSE;
|
Mtftp6Srv->InDestroy = FALSE;
|
||||||
Mtftp6Srv->ChildrenNum = 0;
|
Mtftp6Srv->ChildrenNum = 0;
|
||||||
|
|
||||||
CopyMem (
|
CopyMem (
|
||||||
@ -219,7 +219,7 @@ Mtftp6CreateInstance (
|
|||||||
}
|
}
|
||||||
|
|
||||||
Mtftp6Ins->Signature = MTFTP6_INSTANCE_SIGNATURE;
|
Mtftp6Ins->Signature = MTFTP6_INSTANCE_SIGNATURE;
|
||||||
Mtftp6Ins->InDestory = FALSE;
|
Mtftp6Ins->InDestroy = FALSE;
|
||||||
Mtftp6Ins->Service = Service;
|
Mtftp6Ins->Service = Service;
|
||||||
|
|
||||||
CopyMem (
|
CopyMem (
|
||||||
@ -460,7 +460,7 @@ Mtftp6DriverBindingStop (
|
|||||||
|
|
||||||
Service = MTFTP6_SERVICE_FROM_THIS (ServiceBinding);
|
Service = MTFTP6_SERVICE_FROM_THIS (ServiceBinding);
|
||||||
|
|
||||||
if (Service->InDestory) {
|
if (Service->InDestroy) {
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -468,9 +468,9 @@ Mtftp6DriverBindingStop (
|
|||||||
|
|
||||||
if (NumberOfChildren == 0) {
|
if (NumberOfChildren == 0) {
|
||||||
//
|
//
|
||||||
// Destory the Mtftp6 service if there is no Mtftp6 child instance left.
|
// Destroy the Mtftp6 service if there is no Mtftp6 child instance left.
|
||||||
//
|
//
|
||||||
Service->InDestory = TRUE;
|
Service->InDestroy = TRUE;
|
||||||
|
|
||||||
gBS->UninstallProtocolInterface (
|
gBS->UninstallProtocolInterface (
|
||||||
NicHandle,
|
NicHandle,
|
||||||
@ -482,7 +482,7 @@ Mtftp6DriverBindingStop (
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
//
|
//
|
||||||
// Destory the Mtftp6 child instance one by one.
|
// Destroy the Mtftp6 child instance one by one.
|
||||||
//
|
//
|
||||||
while (!IsListEmpty (&Service->Children)) {
|
while (!IsListEmpty (&Service->Children)) {
|
||||||
Instance = NET_LIST_HEAD (&Service->Children, MTFTP6_INSTANCE, Link);
|
Instance = NET_LIST_HEAD (&Service->Children, MTFTP6_INSTANCE, Link);
|
||||||
@ -657,15 +657,15 @@ Mtftp6ServiceBindingDestroyChild (
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check whether the instance already in destory state.
|
// Check whether the instance already in Destroy state.
|
||||||
//
|
//
|
||||||
if (Instance->InDestory) {
|
if (Instance->InDestroy) {
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
Instance->InDestory = TRUE;
|
Instance->InDestroy = TRUE;
|
||||||
|
|
||||||
gBS->CloseProtocol (
|
gBS->CloseProtocol (
|
||||||
Service->DummyUdpIo->UdpHandle,
|
Service->DummyUdpIo->UdpHandle,
|
||||||
@ -684,7 +684,7 @@ Mtftp6ServiceBindingDestroyChild (
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
Instance->InDestory = FALSE;
|
Instance->InDestroy = FALSE;
|
||||||
gBS->RestoreTPL (OldTpl);
|
gBS->RestoreTPL (OldTpl);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
RFC2348 - TFTP Blocksize Option
|
RFC2348 - TFTP Blocksize Option
|
||||||
RFC2349 - TFTP Timeout Interval and Transfer Size Options
|
RFC2349 - TFTP Timeout Interval and Transfer Size Options
|
||||||
|
|
||||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -189,13 +189,15 @@ EfiMtftp6Configure (
|
|||||||
// Don't configure the udpio here because each operation might override
|
// Don't configure the udpio here because each operation might override
|
||||||
// the configuration, so delay udpio configuration in each operation.
|
// the configuration, so delay udpio configuration in each operation.
|
||||||
//
|
//
|
||||||
Instance->UdpIo = UdpIoCreateIo (
|
if (Instance->UdpIo == NULL) {
|
||||||
Service->Controller,
|
Instance->UdpIo = UdpIoCreateIo (
|
||||||
Service->Image,
|
Service->Controller,
|
||||||
Mtftp6ConfigDummyUdpIo,
|
Service->Image,
|
||||||
UDP_IO_UDP6_VERSION,
|
Mtftp6ConfigDummyUdpIo,
|
||||||
NULL
|
UDP_IO_UDP6_VERSION,
|
||||||
);
|
NULL
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (Instance->UdpIo == NULL) {
|
if (Instance->UdpIo == NULL) {
|
||||||
Status = EFI_OUT_OF_RESOURCES;
|
Status = EFI_OUT_OF_RESOURCES;
|
||||||
@ -620,11 +622,11 @@ EfiMtftp6Poll (
|
|||||||
Instance = MTFTP6_INSTANCE_FROM_THIS (This);
|
Instance = MTFTP6_INSTANCE_FROM_THIS (This);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check the instance whether configured or in destory.
|
// Check the instance whether configured or in destroy.
|
||||||
//
|
//
|
||||||
if (Instance->Config == NULL) {
|
if (Instance->Config == NULL) {
|
||||||
return EFI_NOT_STARTED;
|
return EFI_NOT_STARTED;
|
||||||
} else if (Instance->InDestory) {
|
} else if (Instance->InDestroy) {
|
||||||
return EFI_DEVICE_ERROR;
|
return EFI_DEVICE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Mtftp6 internal data structure and definition declaration.
|
Mtftp6 internal data structure and definition declaration.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved. <BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved. <BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -94,7 +94,7 @@ struct _MTFTP6_INSTANCE {
|
|||||||
EFI_TPL OldTpl;
|
EFI_TPL OldTpl;
|
||||||
BOOLEAN IsTransmitted;
|
BOOLEAN IsTransmitted;
|
||||||
BOOLEAN IsMaster;
|
BOOLEAN IsMaster;
|
||||||
BOOLEAN InDestory;
|
BOOLEAN InDestroy;
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -117,7 +117,7 @@ struct _MTFTP6_SERVICE {
|
|||||||
// mtftp driver and udp driver.
|
// mtftp driver and udp driver.
|
||||||
//
|
//
|
||||||
UDP_IO *DummyUdpIo;
|
UDP_IO *DummyUdpIo;
|
||||||
BOOLEAN InDestory;
|
BOOLEAN InDestroy;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -547,13 +547,15 @@ Mtftp6RrqHandleOack (
|
|||||||
);
|
);
|
||||||
|
|
||||||
Instance->McastPort = ExtInfo.McastPort;
|
Instance->McastPort = ExtInfo.McastPort;
|
||||||
Instance->McastUdpIo = UdpIoCreateIo (
|
if (Instance->McastUdpIo == NULL) {
|
||||||
Instance->Service->Controller,
|
Instance->McastUdpIo = UdpIoCreateIo (
|
||||||
Instance->Service->Image,
|
Instance->Service->Controller,
|
||||||
Mtftp6RrqConfigMcastUdpIo,
|
Instance->Service->Image,
|
||||||
UDP_IO_UDP6_VERSION,
|
Mtftp6RrqConfigMcastUdpIo,
|
||||||
Instance
|
UDP_IO_UDP6_VERSION,
|
||||||
);
|
Instance
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (Instance->McastUdpIo == NULL) {
|
if (Instance->McastUdpIo == NULL) {
|
||||||
return EFI_DEVICE_ERROR;
|
return EFI_DEVICE_ERROR;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Implementation of the Socket.
|
Implementation of the Socket.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -787,7 +787,7 @@ SockDestroy (
|
|||||||
|
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// Destory the RcvBuffer Queue and SendBuffer Queue
|
// Destroy the RcvBuffer Queue and SendBuffer Queue
|
||||||
//
|
//
|
||||||
NetbufQueFree (Sock->RcvBuffer.DataQueue);
|
NetbufQueFree (Sock->RcvBuffer.DataQueue);
|
||||||
NetbufQueFree (Sock->SndBuffer.DataQueue);
|
NetbufQueFree (Sock->SndBuffer.DataQueue);
|
||||||
@ -802,7 +802,7 @@ SockDestroy (
|
|||||||
|
|
||||||
DEBUG (
|
DEBUG (
|
||||||
(EFI_D_WARN,
|
(EFI_D_WARN,
|
||||||
"SockDestory: Delete a unaccepted socket from parent now conncnt is %d\n",
|
"SockDestroy: Delete a unaccepted socket from parent now conncnt is %d\n",
|
||||||
Sock->Parent->ConnCnt)
|
Sock->Parent->ConnCnt)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Interface function of the Socket.
|
Interface function of the Socket.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -129,7 +129,7 @@ SockBufferToken (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory the socket Sock and its associated protocol control block.
|
Destroy the socket Sock and its associated protocol control block.
|
||||||
|
|
||||||
@param[in, out] Sock The socket to be destroyed.
|
@param[in, out] Sock The socket to be destroyed.
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Common head file for TCP socket.
|
Common head file for TCP socket.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -696,7 +696,7 @@ SockCreateChild (
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory the socket Sock and its associated protocol control block.
|
Destroy the socket Sock and its associated protocol control block.
|
||||||
|
|
||||||
@param[in, out] Sock The socket to be destroyed.
|
@param[in, out] Sock The socket to be destroyed.
|
||||||
|
|
||||||
|
@ -532,7 +532,7 @@ PxeBcParseDhcp4Packet (
|
|||||||
(Offer->Dhcp4.Header.BootFileName[0] != 0)) {
|
(Offer->Dhcp4.Header.BootFileName[0] != 0)) {
|
||||||
//
|
//
|
||||||
// If the bootfile is not present and bootfilename is present in DHCPv4 packet, just parse it.
|
// If the bootfile is not present and bootfilename is present in DHCPv4 packet, just parse it.
|
||||||
// Do not count dhcp option header here, or else will destory the serverhostname.
|
// Do not count dhcp option header here, or else will destroy the serverhostname.
|
||||||
//
|
//
|
||||||
Options[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] = (EFI_DHCP4_PACKET_OPTION *)
|
Options[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] = (EFI_DHCP4_PACKET_OPTION *)
|
||||||
(&Offer->Dhcp4.Header.BootFileName[0] -
|
(&Offer->Dhcp4.Header.BootFileName[0] -
|
||||||
|
@ -1748,7 +1748,7 @@ PxeBcDhcp6Sarr (
|
|||||||
Config.IaInfoEvent = NULL;
|
Config.IaInfoEvent = NULL;
|
||||||
Config.RapidCommit = FALSE;
|
Config.RapidCommit = FALSE;
|
||||||
Config.ReconfigureAccept = FALSE;
|
Config.ReconfigureAccept = FALSE;
|
||||||
Config.IaDescriptor.IaId = 1;
|
Config.IaDescriptor.IaId = Private->IaId;
|
||||||
Config.IaDescriptor.Type = EFI_DHCP6_IA_TYPE_NA;
|
Config.IaDescriptor.Type = EFI_DHCP6_IA_TYPE_NA;
|
||||||
Config.SolicitRetransmission = Retransmit;
|
Config.SolicitRetransmission = Retransmit;
|
||||||
Retransmit->Irt = 4;
|
Retransmit->Irt = 4;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Driver Binding functions implementationfor for UefiPxeBc Driver.
|
Driver Binding functions implementationfor for UefiPxeBc Driver.
|
||||||
|
|
||||||
Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -779,6 +779,7 @@ PxeBcCreateIp6Children (
|
|||||||
EFI_IP6_MODE_DATA Ip6ModeData;
|
EFI_IP6_MODE_DATA Ip6ModeData;
|
||||||
PXEBC_PRIVATE_PROTOCOL *Id;
|
PXEBC_PRIVATE_PROTOCOL *Id;
|
||||||
EFI_SIMPLE_NETWORK_PROTOCOL *Snp;
|
EFI_SIMPLE_NETWORK_PROTOCOL *Snp;
|
||||||
|
UINTN Index;
|
||||||
|
|
||||||
if (Private->Ip6Nic != NULL) {
|
if (Private->Ip6Nic != NULL) {
|
||||||
//
|
//
|
||||||
@ -821,6 +822,16 @@ PxeBcCreateIp6Children (
|
|||||||
goto ON_ERROR;
|
goto ON_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Generate a random IAID for the Dhcp6 assigned address.
|
||||||
|
//
|
||||||
|
Private->IaId = NET_RANDOM (NetRandomInitSeed ());
|
||||||
|
if (Private->Snp != NULL) {
|
||||||
|
for (Index = 0; Index < Private->Snp->Mode->HwAddressSize; Index++) {
|
||||||
|
Private->IaId |= (Private->Snp->Mode->CurrentAddress.Addr[Index] << ((Index << 3) & 31));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Create Mtftp6 child and open Mtftp6 protocol for PxeBc->Mtftp.
|
// Create Mtftp6 child and open Mtftp6 protocol for PxeBc->Mtftp.
|
||||||
//
|
//
|
||||||
|
@ -2348,6 +2348,15 @@ EfiPxeLoadFile (
|
|||||||
// Start Pxe Base Code to initialize PXE boot.
|
// Start Pxe Base Code to initialize PXE boot.
|
||||||
//
|
//
|
||||||
Status = PxeBc->Start (PxeBc, UsingIpv6);
|
Status = PxeBc->Start (PxeBc, UsingIpv6);
|
||||||
|
if (Status == EFI_ALREADY_STARTED && UsingIpv6 != PxeBc->Mode->UsingIpv6) {
|
||||||
|
//
|
||||||
|
// PxeBc protocol has already been started but not on the required IP version, restart it.
|
||||||
|
//
|
||||||
|
Status = PxeBc->Stop (PxeBc);
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
Status = PxeBc->Start (PxeBc, UsingIpv6);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (Status == EFI_SUCCESS || Status == EFI_ALREADY_STARTED) {
|
if (Status == EFI_SUCCESS || Status == EFI_ALREADY_STARTED) {
|
||||||
Status = PxeBcLoadBootFile (Private, BufferSize, Buffer);
|
Status = PxeBcLoadBootFile (Private, BufferSize, Buffer);
|
||||||
}
|
}
|
||||||
|
@ -165,6 +165,7 @@ struct _PXEBC_PRIVATE_DATA {
|
|||||||
EFI_IP_ADDRESS GatewayIp;
|
EFI_IP_ADDRESS GatewayIp;
|
||||||
EFI_IP_ADDRESS ServerIp;
|
EFI_IP_ADDRESS ServerIp;
|
||||||
UINT16 CurSrcPort;
|
UINT16 CurSrcPort;
|
||||||
|
UINT32 IaId;
|
||||||
|
|
||||||
UINT32 Ip4MaxPacketSize;
|
UINT32 Ip4MaxPacketSize;
|
||||||
UINT32 Ip6MaxPacketSize;
|
UINT32 Ip6MaxPacketSize;
|
||||||
|
@ -1042,7 +1042,7 @@ TimeoutToGetMap (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Create an IP child, use it to start the auto configuration, then destory it.
|
Create an IP child, use it to start the auto configuration, then destroy it.
|
||||||
|
|
||||||
@param[in] NicInfo The pointer to the NIC_INFO of the Nic to be configured.
|
@param[in] NicInfo The pointer to the NIC_INFO of the Nic to be configured.
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
The implementation for Ping shell command.
|
The implementation for Ping shell command.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
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
|
||||||
@ -1190,14 +1190,14 @@ ON_ERROR:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destory the IP instance.
|
Destroy the IP instance.
|
||||||
|
|
||||||
@param[in] Private The pointer of PING_PRIVATE_DATA.
|
@param[in] Private The pointer of PING_PRIVATE_DATA.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
EFIAPI
|
EFIAPI
|
||||||
Ping6DestoryIp6Instance (
|
Ping6DestroyIp6Instance (
|
||||||
IN PING_PRIVATE_DATA *Private
|
IN PING_PRIVATE_DATA *Private
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -1414,7 +1414,7 @@ ON_EXIT:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Private->IpChildHandle != NULL) {
|
if (Private->IpChildHandle != NULL) {
|
||||||
Ping6DestoryIp6Instance (Private);
|
Ping6DestroyIp6Instance (Private);
|
||||||
}
|
}
|
||||||
|
|
||||||
FreePool (Private);
|
FreePool (Private);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user