From: Samer El-Haj-Mahmoud <el...@hp.com>

The code today always uses DUID-UUID unless there is an error in reading the 
UUID,
which results in falling through to DUID-LLT. This change allows the platform 
to control
the DUID method (DUID-UUID or DUID-LLT) using a platform dynamic PCD.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Samer El-Haj-Mahmoud <el...@hp.com>
---
 NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf   | 6 ++++++
 NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c | 3 ++-
 NetworkPkg/NetworkPkg.dec          | 9 +++++++++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf b/NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
index 5c79237..d53ce67 100644
--- a/NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
+++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
@@ -4,6 +4,7 @@
 #  This driver produces EFI DHCPv6 Protocol which is used to get IPv6 addresses
 #  and other configuration parameters from DHCPv6 servers.
 #
+#  (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
 #  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
@@ -51,6 +52,7 @@
 [Packages]
   MdePkg/MdePkg.dec
   MdeModulePkg/MdeModulePkg.dec
+  NetworkPkg/NetworkPkg.dec
 
 
 [LibraryClasses]
@@ -73,5 +75,9 @@
   gEfiDhcp6ProtocolGuid                              ## BY_START
   gEfiIp6ConfigProtocolGuid                          ## TO_START
 
+ 
+[Pcd]
+  gEfiNetworkPkgTokenSpaceGuid.PcdDhcp6UidType
+
 [UserExtensions.TianoCore."ExtraFiles"]
   Dhcp6DxeExtra.uni
diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c 
b/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c
index e3349ee..2525a32 100644
--- a/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c
+++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c
@@ -1,6 +1,7 @@
 /** @file
   Dhcp6 support functions implementation.
 
+  (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
   Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
 
   This program and the accompanying materials
@@ -63,7 +64,7 @@ Dhcp6GenerateClientId (
   //
   // If System UUID is found from SMBIOS Table, use DUID-UUID type.
   //
-  if (!EFI_ERROR (NetLibGetSystemGuid (&Uuid))) {
+  if ((PcdGet8 (PcdDhcp6UidType) == Dhcp6DuidTypeUuid) && !EFI_ERROR 
(NetLibGetSystemGuid (&Uuid))) {
     //
     //
     //  The format of DUID-UUID:
diff --git a/NetworkPkg/NetworkPkg.dec b/NetworkPkg/NetworkPkg.dec
index 6515844..f19684d 100644
--- a/NetworkPkg/NetworkPkg.dec
+++ b/NetworkPkg/NetworkPkg.dec
@@ -3,6 +3,7 @@
 #
 # This package provides network modules that conform to UEFI 2.4 specification.
 #
+#  (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
 # Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials are licensed and made available 
under
@@ -68,5 +69,13 @@
   # @Prompt Private Key's size.
   
gEfiNetworkPkgTokenSpaceGuid.PcdIpsecUefiCertificateKeySize|0x3d5|UINT32|0x00000006
 
+[PcdsDynamicEx]
+  ## IPv6 DHCP Unique Identifier (DUID) Type configuration (From RFCs 3315 and 
6355).
+  # 01 = DUID Based on Link-layer Address Plus Time [DUID-LLT]
+  # 04 = UUID-Based DHCPv6 Unique Identifier (DUID-UUID)
+  # 02 = DUID Assigned by Vendor Based on Enterprise Number [DUID-EN]   (not 
supported)
+  # 03 = DUID Based on Link-layer Address [DUID-LL] (not supported)
+  gEfiNetworkPkgTokenSpaceGuid.PcdDhcp6UidType|4|UINT8|0x10000001
+
 [UserExtensions.TianoCore."ExtraFiles"]
   NetworkPkgExtra.uni
-- 
1.9.5.msysgit.0


------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors 
network devices and physical & virtual servers, alerts via email & sms 
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to