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:
		@@ -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);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user