diff options
author | Jiaxin Wu <jiaxin.wu@intel.com> | 2017-04-17 11:26:34 +0800 |
---|---|---|
committer | Guo Mang <mang.guo@intel.com> | 2017-07-12 11:24:23 +0800 |
commit | e086412ecc65696fd416787f6cfd4e43feac930e (patch) | |
tree | f48f8699b042df0911424ee02920cbda6b7275fd | |
parent | 9e63ff6686c0189a854817894ed443af7569f83c (diff) | |
download | edk2-platforms-e086412ecc65696fd416787f6cfd4e43feac930e.tar.xz |
NetworkPkg: Correct the proxy DHCP offer handing
When PXE10/WFM11a offer received, we should only cache
the first PXE10/WFM11a offer, and discard the others. But
Current we discard all PXE10/WFM11a offer. This patch is
to fix this issue.
Cc: Ye Ting <ting.ye@intel.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Cc: Zhang Lubo <lubo.zhang@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
(cherry picked from commit 8cdd559be622f7a35731b7f973d8b82d1c9e303e)
-rw-r--r-- | Core/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c | 5 | ||||
-rw-r--r-- | Core/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/Core/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c b/Core/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c index 5497390119..97829e9842 100644 --- a/Core/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c +++ b/Core/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c @@ -1,7 +1,7 @@ /** @file
Functions implementation related with DHCPv4 for UefiPxeBc Driver.
- Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -870,7 +870,8 @@ PxeBcCacheDhcp4Offer ( //
Private->OfferIndex[OfferType][Private->OfferCount[OfferType]] = Private->OfferNum;
Private->OfferCount[OfferType]++;
- } else if (Private->OfferCount[OfferType] > 0) {
+ } else if ((OfferType == PxeOfferTypeProxyPxe10 || OfferType == PxeOfferTypeProxyWfm11a) &&
+ Private->OfferCount[OfferType] < 1) {
//
// Only cache the first PXE10/WFM11a offer, and discard the others.
//
diff --git a/Core/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c b/Core/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c index a295b827af..4cd1770750 100644 --- a/Core/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c +++ b/Core/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c @@ -2,7 +2,7 @@ Functions implementation related with DHCPv6 for UefiPxeBc Driver.
(C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>
- Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -1197,7 +1197,8 @@ PxeBcCacheDhcp6Offer ( //
Private->OfferIndex[OfferType][Private->OfferCount[OfferType]] = Private->OfferNum;
Private->OfferCount[OfferType]++;
- } else if (Private->OfferCount[OfferType] > 0) {
+ } else if ((OfferType == PxeOfferTypeProxyPxe10 || OfferType == PxeOfferTypeProxyWfm11a) &&
+ Private->OfferCount[OfferType] < 1) {
//
// Only cache the first PXE10/WFM11a offer, and discard the others.
//
|