- CopyMem (\r
- &Private->ServerIp,\r
- &Cache4->Packet.Offer.Dhcp4.Header.ServerAddr,\r
- sizeof (EFI_IPv4_ADDRESS)\r
- );\r
-\r
+ VendorOpt = &Cache4->VendorOpt;\r
+ if (IS_DISABLE_PROMPT_MENU (VendorOpt->DiscoverCtrl) && IS_VALID_BOOT_SERVERS (VendorOpt->BitMap)) {\r
+ Entry = VendorOpt->BootSvr;\r
+ if (VendorOpt->BootSvrLen >= sizeof (PXEBC_BOOT_SVR_ENTRY) && Entry->IpCnt > 0) {\r
+ CopyMem (\r
+ &Private->ServerIp,\r
+ &Entry->IpAddr[0],\r
+ sizeof (EFI_IPv4_ADDRESS)\r
+ );\r
+ }\r
+ }\r
+ if (Private->ServerIp.Addr[0] == 0) {\r
+ //\r
+ // ServerIp.Addr[0] equals zero means we failed to get IP address from boot server list.\r
+ // Try to use next server address field.\r
+ //\r
+ CopyMem (\r
+ &Private->ServerIp,\r
+ &Cache4->Packet.Offer.Dhcp4.Header.ServerAddr,\r
+ sizeof (EFI_IPv4_ADDRESS)\r
+ );\r
+ }\r