File 0103-initrd-workaround-zero-v6-prefixes-for-NBFT-HFIs.patch of Package NetworkManager
From 3abeb417d50d6c36e612e3c59aebaa3977b4fd9f Mon Sep 17 00:00:00 2001
From: Tomas Bzatek <tbzatek@redhat.com>
Date: Wed, 2 Apr 2025 17:45:33 +0200
Subject: [PATCH 103/106] initrd: workaround zero v6 prefixes for NBFT HFIs
Some firmware implementations incorrectly report v6 address prefix
of zero. Let's use /64 as a sane workaround.
Signed-off-by: Tomas Bzatek <tbzatek@redhat.com>
---
src/nm-initrd-generator/nmi-nbft-reader.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/src/nm-initrd-generator/nmi-nbft-reader.c b/src/nm-initrd-generator/nmi-nbft-reader.c
index cf2c3c1..bb2db70 100644
--- a/src/nm-initrd-generator/nmi-nbft-reader.c
+++ b/src/nm-initrd-generator/nmi-nbft-reader.c
@@ -276,13 +276,17 @@ parse_hfi(GPtrArray *a, struct nbft_info_hfi *hfi, const char *table_name, char
NM_SETTING_IP_CONFIG_METHOD,
NM_SETTING_IP6_CONFIG_METHOD_MANUAL,
NULL);
- /* FIXME: buggy firmware implementations may report prefix=0 for v6 addresses,
- * reported as https://github.com/timberland-sig/edk2/issues/37
- */
- ipaddr = nm_ip_address_new_binary(AF_INET6,
- &addr_bin,
- hfi->tcp_info.subnet_mask_prefix,
- &error);
+ prefix = hfi->tcp_info.subnet_mask_prefix;
+ if (prefix == 0) {
+ /* Buggy firmware implementations may report prefix=0 for v6 addresses,
+ * let's fall back to /64.
+ */
+ _LOGW(LOGD_CORE,
+ "NBFT: Invalid IPv6 prefix %d, using /64 as a fallback.",
+ hfi->tcp_info.subnet_mask_prefix);
+ prefix = 64;
+ }
+ ipaddr = nm_ip_address_new_binary(AF_INET6, &addr_bin, prefix, &error);
if (!ipaddr) {
_LOGW(LOGD_CORE,
"Cannot parse IP %s/%u: %s",
--
2.49.0