From 07f986f134abf85b4b1f360ca3c86f22cd9f92da Mon Sep 17 00:00:00 2001 From: Gary Lin Date: Thu, 18 Dec 2014 03:03:52 +0000 Subject: Fix a bug that the gateway is not necessary in a simple PXE network. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Gary Lin Reviewed-by: Ye Ting Reviewed-by: Fu Siyuan git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16535 6f19259b-4bc3-4df7-8a09-765794883524 --- NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c index 111224cea..07f172436 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c @@ -1280,7 +1280,7 @@ PxeBcCheckRouteTable ( } // - // Find out the gateway address which can route the message whcih send to ServerIp. + // Find out the gateway address which can route the message which send to ServerIp. // for (Index = 0; Index < Ip6ModeData.RouteCount; Index++) { if (NetIp6IsNetEqual (&Private->ServerIp.v6, &Ip6ModeData.RouteTable[Index].Destination, Ip6ModeData.RouteTable[Index].PrefixLength)) { @@ -1381,6 +1381,7 @@ PxeBcRegisterIp6Address ( EFI_STATUS Status; UINT64 DadTriggerTime; EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadXmits; + BOOLEAN NoGateway; Status = EFI_SUCCESS; TimeOutEvt = NULL; @@ -1388,6 +1389,7 @@ PxeBcRegisterIp6Address ( DataSize = sizeof (EFI_IP6_CONFIG_POLICY); Ip6Cfg = Private->Ip6Cfg; Ip6 = Private->Ip6; + NoGateway = FALSE; ZeroMem (&CfgAddr, sizeof (EFI_IP6_CONFIG_MANUAL_ADDRESS)); CopyMem (&CfgAddr.Address, Address, sizeof (EFI_IPv6_ADDRESS)); @@ -1402,7 +1404,7 @@ PxeBcRegisterIp6Address ( // Status = PxeBcCheckRouteTable (Private, PXEBC_IP6_ROUTE_TABLE_TIMEOUT, &GatewayAddr); if (EFI_ERROR (Status)) { - goto ON_EXIT; + NoGateway = TRUE; } // @@ -1503,7 +1505,7 @@ PxeBcRegisterIp6Address ( // // Set the default gateway address back if needed. // - if (!NetIp6IsUnspecifiedAddr (&GatewayAddr)) { + if (!NoGateway && !NetIp6IsUnspecifiedAddr (&GatewayAddr)) { Status = Ip6Cfg->SetData ( Ip6Cfg, Ip6ConfigDataTypeGateway, -- cgit v1.2.3