]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/Network/PxeBc/Dxe/pxe_bc_dhcp.c
Use siaddr as the PXE server address first and use option 54 when siaddr is NULL.
[mirror_edk2.git] / EdkModulePkg / Universal / Network / PxeBc / Dxe / pxe_bc_dhcp.c
index 56893bce2fbe4edf722a4e0ba52f220cee0d5bc8..a1f4715cd04ecb0ff419bb7e99635f76e270285f 100644 (file)
@@ -1607,14 +1607,19 @@ TryBINL (
   DhcpRxBuf = &RxBuf[OfferIx];\r
 \r
   //\r
-  // send DHCP request\r
-  // if fail return false\r
+  // use next server address first.\r
   //\r
-  CopyMem (\r
-    ((EFI_IPv4_ADDRESS *) &ServerIp),\r
-    &((DHCPV4_OP_SERVER_IP *) DhcpRxBuf->OpAdds.PktOptAdds[OP_DHCP_SERVER_IP_IX - 1])->Ip,\r
-    sizeof (EFI_IPv4_ADDRESS)\r
-    );\r
+  ServerIp.Addr[0] = DhcpRxBuf->u.Dhcpv4.siaddr;\r
+  if (ServerIp.Addr[0] == 0) {\r
+    //\r
+    // next server address is NULL, use option 54.\r
+    //\r
+    CopyMem (\r
+      ((EFI_IPv4_ADDRESS *) &ServerIp),\r
+      &((DHCPV4_OP_SERVER_IP *) DhcpRxBuf->OpAdds.PktOptAdds[OP_DHCP_SERVER_IP_IX - 1])->Ip,\r
+      sizeof (EFI_IPv4_ADDRESS)\r
+      );\r
+  }\r
 \r
   //\r
   // client IP address - filled in by client if it knows it\r