]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c
NetworkPkg/Dhcp6Dxe: Handle the Nil UUID case
[mirror_edk2.git] / NetworkPkg / Dhcp6Dxe / Dhcp6Utility.c
index 8603669903fb5acd6ea0651470eb08f4ec843e3c..a65ed6d5892b59c861ab6181e632b67a37a6413d 100644 (file)
@@ -1,7 +1,8 @@
 /** @file\r
   Dhcp6 support functions implementation.\r
 \r
-  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
+  (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
+  Copyright (c) 2009 - 2017, 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
@@ -63,7 +64,7 @@ Dhcp6GenerateClientId (
   //\r
   // If System UUID is found from SMBIOS Table, use DUID-UUID type.\r
   //\r
-  if (!EFI_ERROR (NetLibGetSystemGuid (&Uuid))) {\r
+  if ((PcdGet8 (PcdDhcp6UidType) == Dhcp6DuidTypeUuid) && !EFI_ERROR (NetLibGetSystemGuid (&Uuid)) && !CompareGuid (&Uuid, &gZeroGuid)) {\r
     //\r
     //\r
     //  The format of DUID-UUID:\r
@@ -143,9 +144,9 @@ Dhcp6GenerateClientId (
     //\r
     // Set the Duid-type, hardware-type, time and copy the hardware address.\r
     //\r
-    WriteUnaligned16 ((UINT16 *) ((UINT8 *)&Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid)), HTONS (Dhcp6DuidTypeLlt));\r
-    WriteUnaligned16 ((UINT16 *) ((UINT8 *)&Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid) + 2), HTONS (NET_IFTYPE_ETHERNET));\r
-    WriteUnaligned32 ((UINT32 *) ((UINT8 *)&Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid) + 4), HTONL (Stamp));\r
+    WriteUnaligned16 ((UINT16 *) ((UINT8 *) Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid)), HTONS (Dhcp6DuidTypeLlt));\r
+    WriteUnaligned16 ((UINT16 *) ((UINT8 *) Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid) + 2), HTONS (NET_IFTYPE_ETHERNET));\r
+    WriteUnaligned32 ((UINT32 *) ((UINT8 *) Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid) + 4), HTONL (Stamp));\r
 \r
     CopyMem (Duid->Duid + 8, &Mode->CurrentAddress, Mode->HwAddressSize);\r
   }\r
@@ -386,7 +387,6 @@ Dhcp6CalculateLeaseTime (
   IN DHCP6_IA_CB              *IaCb\r
   )\r
 {\r
-  EFI_DHCP6_IA_ADDRESS        *IaAddr;\r
   UINT32                      MinLt;\r
   UINT32                      MaxLt;\r
   UINTN                       Index;\r
@@ -401,9 +401,8 @@ Dhcp6CalculateLeaseTime (
   // valid life time.\r
   //\r
   for (Index = 0; Index < IaCb->Ia->IaAddressCount; Index++) {\r
-    IaAddr = IaCb->Ia->IaAddress + Index * sizeof (EFI_DHCP6_IA_ADDRESS);\r
-    MinLt  = MIN (MinLt, IaAddr->ValidLifetime);\r
-    MaxLt  = MAX (MinLt, IaAddr->ValidLifetime);\r
+    MinLt  = MIN (MinLt, IaCb->Ia->IaAddress[Index].ValidLifetime);\r
+    MaxLt  = MAX (MinLt, IaCb->Ia->IaAddress[Index].ValidLifetime);\r
   }\r
 \r
   //\r