From: Peter Jones <pjo...@redhat.com> This lets you write config files that don't know urls.
Signed-off-by: Peter Jones <pjo...@redhat.com> Signed-off-by: Robbie Harwood <rharw...@redhat.com> --- grub-core/net/efi/http.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/grub-core/net/efi/http.c b/grub-core/net/efi/http.c index 03750e37b6..87fc02da20 100644 --- a/grub-core/net/efi/http.c +++ b/grub-core/net/efi/http.c @@ -3,6 +3,7 @@ #include <grub/misc.h> #include <grub/net/efi.h> #include <grub/charset.h> +#include <grub/env.h> static void http_configure (struct grub_efi_net_device *dev, int prefer_ip6) @@ -338,6 +339,24 @@ grub_efihttp_open (struct grub_efi_net_device *dev, grub_err_t err; grub_off_t size = 0; char *buf = NULL; + char *root_url; + grub_efi_ipv6_address_t address; + const char *rest; + + if (grub_efi_string_to_ip6_address (file->device->net->server, &address, &rest) && *rest == 0) + root_url = grub_xasprintf ("%s://[%s]", type ? "https" : "http", file->device->net->server); + else + root_url = grub_xasprintf ("%s://%s", type ? "https" : "http", file->device->net->server); + if (root_url) + { + grub_env_unset ("root_url"); + grub_env_set ("root_url", root_url); + grub_free (root_url); + } + else + { + return grub_errno; + } err = efihttp_request (dev->http, file->device->net->server, file->device->net->name, type, 1, 0); if (err != GRUB_ERR_NONE) -- 2.40.0 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel