/** @file\r
This implementation of EFI_PXE_BASE_CODE_PROTOCOL and EFI_LOAD_FILE_PROTOCOL.\r
\r
- Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
if (EFI_ERROR (Status)) {\r
goto ON_ERROR;\r
}\r
+\r
+ //\r
+ //DHCP4 service allows only one of its children to be configured in \r
+ //the active state, If the DHCP4 D.O.R.A started by IP4 auto \r
+ //configuration and has not been completed, the Dhcp4 state machine \r
+ //will not be in the right state for the PXE to start a new round D.O.R.A. \r
+ //so we need to switch it's policy to static.\r
+ //\r
+ Status = PxeBcSetIp4Policy (Private);\r
+ if (EFI_ERROR (Status)) {\r
+ goto ON_ERROR;\r
+ }\r
}\r
\r
//\r
gBS->CloseEvent (Private->IcmpToken.Event);\r
Private->IcmpToken.Event = NULL;\r
}\r
+ Private->BootFileName = NULL;\r
}\r
\r
gBS->CloseEvent (Private->UdpTimeOutEvent);\r
UINTN FragmentIndex;\r
UINT8 *FragmentBuffer;\r
\r
- if (This == NULL || DestIp == NULL || DestPort == NULL) {\r
+ if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
Udp4Rx = NULL;\r
Udp6Rx = NULL;\r
\r
- if (((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT) != 0 && DestPort == NULL) ||\r
- ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP) != 0 && SrcIp == NULL) ||\r
- ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT) != 0 && SrcPort == NULL)) {\r
+ if (((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT) == 0 && DestPort == NULL) ||\r
+ ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP) == 0 && SrcIp == NULL) ||\r
+ ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT) == 0 && SrcPort == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r