1. Fix a bug in PXE driver that the PXE boot do not restart if a new boot option...
authorsfu5 <sfu5@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 17 Oct 2012 08:23:41 +0000 (08:23 +0000)
committersfu5 <sfu5@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 17 Oct 2012 08:23:41 +0000 (08:23 +0000)
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

50 files changed:
MdeModulePkg/Include/Library/UdpIoLib.h
MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c
MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Driver.c
MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.h
MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Io.c
MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Driver.c
MdeModulePkg/Universal/Network/Ip4Dxe/Ip4If.c
MdeModulePkg/Universal/Network/Ip4Dxe/Ip4If.h
MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Impl.c
MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Impl.h
MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Input.c
MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Driver.c
MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Driver.h
MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.c
MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.h
MdeModulePkg/Universal/Network/Tcp4Dxe/SockImpl.c
MdeModulePkg/Universal/Network/Tcp4Dxe/SockInterface.c
MdeModulePkg/Universal/Network/Tcp4Dxe/Socket.h
MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDhcp.c
NetworkPkg/Application/Ping6/Ping6.c
NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c
NetworkPkg/Dhcp6Dxe/Dhcp6Impl.h
NetworkPkg/Dhcp6Dxe/Dhcp6Io.c
NetworkPkg/IScsiDxe/IScsiIbft.c
NetworkPkg/IScsiDxe/IScsiImpl.h
NetworkPkg/IScsiDxe/IScsiMisc.h
NetworkPkg/IScsiDxe/IScsiProto.c
NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c
NetworkPkg/Ip6Dxe/Ip6ConfigImpl.h
NetworkPkg/Ip6Dxe/Ip6Driver.c
NetworkPkg/Ip6Dxe/Ip6Driver.h
NetworkPkg/Ip6Dxe/Ip6If.c
NetworkPkg/Ip6Dxe/Ip6Impl.c
NetworkPkg/Ip6Dxe/Ip6Nd.c
NetworkPkg/Ip6Dxe/Ip6Nd.h
NetworkPkg/Mtftp6Dxe/Mtftp6Driver.c
NetworkPkg/Mtftp6Dxe/Mtftp6Impl.c
NetworkPkg/Mtftp6Dxe/Mtftp6Impl.h
NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c
NetworkPkg/TcpDxe/SockImpl.c
NetworkPkg/TcpDxe/SockInterface.c
NetworkPkg/TcpDxe/Socket.h
NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c
NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c
NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c
NetworkPkg/UefiPxeBcDxe/PxeBcImpl.h
ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c
ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c

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