diff options
author | Fu, Siyuan <siyuan.fu@intel.com> | 2014-09-18 11:44:36 +0000 |
---|---|---|
committer | sfu5 <sfu5@6f19259b-4bc3-4df7-8a09-765794883524> | 2014-09-18 11:44:36 +0000 |
commit | ae97201c55603b69289c5d2349238ea97b2cd35e (patch) | |
tree | a30a58e3430a7dbb364ae483b9c92cc12a61439c /NetworkPkg/Ip6Dxe | |
parent | 44833d441beec53e8eaf5acb7d26c018f704247b (diff) | |
download | edk2-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.c | 22 |
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) {
|