summaryrefslogtreecommitdiffstats
path: root/NetworkPkg/Ip6Dxe
diff options
context:
space:
mode:
authorFu, Siyuan <siyuan.fu@intel.com>2014-09-18 11:44:36 +0000
committersfu5 <sfu5@6f19259b-4bc3-4df7-8a09-765794883524>2014-09-18 11:44:36 +0000
commitae97201c55603b69289c5d2349238ea97b2cd35e (patch)
treea30a58e3430a7dbb364ae483b9c92cc12a61439c /NetworkPkg/Ip6Dxe
parent44833d441beec53e8eaf5acb7d26c018f704247b (diff)
downloadedk2-ae97201c55603b69289c5d2349238ea97b2cd35e.tar.gz
edk2-ae97201c55603b69289c5d2349238ea97b2cd35e.tar.bz2
edk2-ae97201c55603b69289c5d2349238ea97b2cd35e.zip
1. Update PXE driver to support PXEv6 boot cross subnet.
2. Update IP6 driver to use previous configured prefix length if a pre-exist IP6 address with unspecified prefix length. 3. Add NULL check for Dhcp protocol pointer before it decline the address in Ip6ConfigSetStatefulAddrCallback() function. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Fu, Siyuan <siyuan.fu@intel.com> Reviewed-By: Ye, Ting (ting.ye@intel.com) Reviewed-By: Wu, Jiaxin <jiaxin.wu@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16131 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'NetworkPkg/Ip6Dxe')
-rw-r--r--NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c b/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c
index ddb8dcd379..9a1e3d076f 100644
--- a/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c
+++ b/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c
@@ -1,7 +1,7 @@
/** @file
The implementation of EFI IPv6 Configuration Protocol.
- Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2014, 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
@@ -1013,6 +1013,14 @@ Ip6ConfigSetMaunualAddress (
);
//
+ // If the new address's prefix length is not specified, just use the previous configured
+ // prefix length for this address.
+ //
+ if (NewAddress->PrefixLength == 0) {
+ NewAddress->PrefixLength = CurrentAddrInfo->PrefixLength;
+ }
+
+ //
// This manual address is already in use, see whether prefix length is changed.
//
if (NewAddress->PrefixLength != CurrentAddrInfo->PrefixLength) {
@@ -1594,11 +1602,13 @@ Ip6ConfigSetStatefulAddrCallback (
//
// Decline those duplicates.
//
- Instance->Dhcp6->Decline (
- Instance->Dhcp6,
- Instance->DeclineAddressCount,
- Instance->DeclineAddress
- );
+ if (Instance->Dhcp6 != NULL) {
+ Instance->Dhcp6->Decline (
+ Instance->Dhcp6,
+ Instance->DeclineAddressCount,
+ Instance->DeclineAddress
+ );
+ }
}
if (Instance->DeclineAddress != NULL) {