nalika / rpms / grub2

Forked from rpms/grub2 2 years ago
Clone

Blame SOURCES/0295-efi-net-Print-a-debug-message-if-parsing-the-address.patch

b1bcb2
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
c4e390
From: Javier Martinez Canillas <javierm@redhat.com>
c4e390
Date: Tue, 10 Mar 2020 11:23:49 +0100
b1bcb2
Subject: [PATCH] efi/net: Print a debug message if parsing the address fails
c4e390
c4e390
Currently if parsing the address fails an error message is printed. But in
c4e390
most cases this isn't a fatal error since the grub_efi_net_parse_address()
c4e390
function is only used to match an address with a network interface to use.
c4e390
c4e390
And if this fails, the default interface is used which is good enough for
c4e390
most cases. So instead of printing an error that would pollute the console
c4e390
just print a debug message if the address is not parsed correctly.
c4e390
c4e390
A user can enable debug messages for the efinet driver to have information
c4e390
about the failure and the fact that the default interface is being used.
c4e390
44b48a
Related: rhbz#1732765
44b48a
c4e390
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
c4e390
---
c4e390
 grub-core/net/efi/net.c | 18 +++++++++++-------
c4e390
 1 file changed, 11 insertions(+), 7 deletions(-)
c4e390
c4e390
diff --git a/grub-core/net/efi/net.c b/grub-core/net/efi/net.c
c4e390
index 8981abcb83d..86bcae281a7 100644
c4e390
--- a/grub-core/net/efi/net.c
c4e390
+++ b/grub-core/net/efi/net.c
c4e390
@@ -778,9 +778,9 @@ grub_efi_net_parse_address (const char *address,
c4e390
 	}
c4e390
     }
c4e390
 
c4e390
-  return grub_error (GRUB_ERR_NET_BAD_ADDRESS,
c4e390
-		   N_("unrecognised network address `%s'"),
c4e390
-		   address);
c4e390
+  grub_dprintf ("efinet", "unrecognised network address '%s'\n", address);
c4e390
+
c4e390
+  return GRUB_ERR_NET_BAD_ADDRESS;
c4e390
 }
c4e390
 
c4e390
 static grub_efi_net_interface_t *
c4e390
@@ -795,10 +795,7 @@ match_route (const char *server)
c4e390
   err = grub_efi_net_parse_address (server, &ip4, &ip6, &is_ip6, 0);
c4e390
 
c4e390
   if (err)
c4e390
-    {
c4e390
-      grub_print_error ();
c4e390
       return NULL;
c4e390
-    }
c4e390
 
c4e390
   if (is_ip6)
c4e390
     {
c4e390
@@ -1233,8 +1230,15 @@ grub_net_open_real (const char *name __attribute__ ((unused)))
c4e390
   /*FIXME: Use DNS translate name to address */
c4e390
   net_interface = match_route (server);
c4e390
 
c4e390
+  if (!net_interface && net_default_interface)
c4e390
+    {
c4e390
+      net_interface = net_default_interface;
c4e390
+      grub_dprintf ("efinet", "interface lookup failed, using default '%s'\n",
c4e390
+                    net_interface->name);
c4e390
+    }
c4e390
+
c4e390
   /*XXX: should we check device with default gateway ? */
c4e390
-  if (!net_interface && !(net_interface = net_default_interface))
c4e390
+  if (!net_interface)
c4e390
     {
c4e390
       grub_error (GRUB_ERR_UNKNOWN_DEVICE, N_("disk `%s' no route found"),
c4e390
 		  name);