x86: Update SPL for coreboot
[oweals/u-boot.git] / net / bootp.c
index fdcb4374a04d484c0f6c18597d3767f262b721ac..505489140e8a099a71f409bf9e8b8d443ac8ba2c 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <env.h>
 #include <efi_loader.h>
 #include <net.h>
 #include <net/tftp.h>
@@ -147,9 +148,14 @@ static void store_net_params(struct bootp_hdr *bp)
 {
 #if !defined(CONFIG_BOOTP_SERVERIP)
        struct in_addr tmp_ip;
+       bool overwrite_serverip = true;
+
+#if defined(CONFIG_BOOTP_PREFER_SERVERIP)
+       overwrite_serverip = false;
+#endif
 
        net_copy_ip(&tmp_ip, &bp->bp_siaddr);
-       if (tmp_ip.s_addr != 0)
+       if (tmp_ip.s_addr != 0 && (overwrite_serverip || !net_server_ip.s_addr))
                net_copy_ip(&net_server_ip, &bp->bp_siaddr);
        memcpy(net_server_ethaddr,
               ((struct ethernet_hdr *)net_rx_packet)->et_src, 6);