Discussion:
[edk2] [PATCH] NetworkPkg: Add IPv6 DUID configuration support using platform PCD
Samer El-Haj-Mahmoud
2015-06-27 22:20:03 UTC
Permalink
From: Samer El-Haj-Mahmoud <***@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 <***@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
El-Haj-Mahmoud, Samer
2015-06-28 16:37:45 UTC
Permalink
From: Samer El-Haj-Mahmoud <***@hp.com>
Cc: Fu, Siyuan <***@intel.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 <***@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
Fu, Siyuan
2015-07-01 01:23:11 UTC
Permalink
The patch is good to me.
Reviewed-by: Fu Siyuan <***@intel.com>

-----Original Message-----
From: Samer El-Haj-Mahmoud [mailto:samer.el-haj-***@hp.com]
Sent: Sunday, June 28, 2015 6:20 AM
To: edk2-***@lists.sourceforge.net
Cc: Samer El-Haj-Mahmoud
Subject: [edk2] [PATCH] NetworkPkg: Add IPv6 DUID configuration support using platform PCD

From: Samer El-Haj-Mahmoud <***@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 <***@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-***@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Loading...