]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/net/bootp.c (grub_net_configure_by_dhcp_ack): Prefer
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 21 Jun 2012 20:15:10 +0000 (22:15 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 21 Jun 2012 20:15:10 +0000 (22:15 +0200)
IP address to server name since we may not hame the DNS.

ChangeLog
grub-core/net/bootp.c

index 6376fa0864ac680a67eeb06a527dc4b4bf234278..adf2dd547da89deea688ec8af7e673148084adc8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-06-21  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/net/bootp.c (grub_net_configure_by_dhcp_ack): Prefer
+       IP address to server name since we may not hame the DNS.
+
 2012-06-21  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/net/dns.c (grub_cmd_nslookup): Init addresses to 0 to avoid
index 5c43a908e6c4d9e982101dfc5b15c5a3c3824243..7bd5e2034f1e62f51c1e71bc230db9e431e044a0 100644 (file)
@@ -204,23 +204,7 @@ grub_net_configure_by_dhcp_ack (const char *name,
                     sizeof (bp->boot_file));
   if (is_def)
     grub_net_default_server = 0;
-  if (size > OFFSET_OF (server_name, bp)
-      && bp->server_name[0])
-    {
-      set_env_limn_ro (name, "dhcp_server_name", (char *) bp->server_name,
-                      sizeof (bp->server_name));
-      if (is_def && !grub_net_default_server)
-       {
-         grub_net_default_server = grub_strdup (bp->server_name);
-         grub_print_error ();
-       }
-      if (device && !*device)
-       {
-         *device = grub_xasprintf ("tftp,%s", bp->server_name);
-         grub_print_error ();
-       }
-    }
-  if (is_def && !grub_net_default_server)
+  if (is_def && !grub_net_default_server && bp->server_ip)
     {
       grub_net_default_server = grub_xasprintf ("%d.%d.%d.%d",
                                                ((grub_uint8_t *) &bp->server_ip)[0],
@@ -230,7 +214,7 @@ grub_net_configure_by_dhcp_ack (const char *name,
       grub_print_error ();
     }
 
-  if (device && !*device)
+  if (device && !*device && bp->server_ip)
     {
       *device = grub_xasprintf ("tftp,%d.%d.%d.%d",
                                ((grub_uint8_t *) &bp->server_ip)[0],
@@ -239,6 +223,23 @@ grub_net_configure_by_dhcp_ack (const char *name,
                                ((grub_uint8_t *) &bp->server_ip)[3]);
       grub_print_error ();
     }
+  if (size > OFFSET_OF (server_name, bp)
+      && bp->server_name[0])
+    {
+      set_env_limn_ro (name, "dhcp_server_name", (char *) bp->server_name,
+                      sizeof (bp->server_name));
+      if (is_def && !grub_net_default_server)
+       {
+         grub_net_default_server = grub_strdup (bp->server_name);
+         grub_print_error ();
+       }
+      if (device && !*device)
+       {
+         *device = grub_xasprintf ("tftp,%s", bp->server_name);
+         grub_print_error ();
+       }
+    }
+
   if (size > OFFSET_OF (boot_file, bp) && path)
     {
       *path = grub_strndup (bp->boot_file, sizeof (bp->boot_file));