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