/** @file\r
Functions implementation related with DHCPv4 for UefiPxeBc Driver.\r
\r
- Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 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
}\r
\r
//\r
- // The offer with "yiaddr" is a proxy offer.\r
+ // The offer with zero "yiaddr" is a proxy offer.\r
//\r
if (Offer->Dhcp4.Header.YourAddr.Addr[0] == 0) {\r
IsProxyOffer = TRUE;\r
ZeroMem (Private->OfferIndex, sizeof (Private->OfferIndex));\r
\r
//\r
- // Start DHCPv4 D.O.R.A. process to acquire IPv4 address.\r
+ // Start DHCPv4 D.O.R.A. process to acquire IPv4 address. This may \r
+ // have already been done, thus do not leave in error if the return\r
+ // code is EFI_ALREADY_STARTED.\r
//\r
Status = Dhcp4->Start (Dhcp4, NULL);\r
- if (EFI_ERROR (Status)) {\r
+ if (EFI_ERROR (Status) && Status != EFI_ALREADY_STARTED) {\r
if (Status == EFI_ICMP_ERROR) {\r
PxeMode->IcmpErrorReceived = TRUE;\r
}\r