Blob Blame History Raw
From 413b140ae639d38ffcc125dfc1ef7303f08abebd Mon Sep 17 00:00:00 2001
From: Beniamino Galvani <bgalvani@redhat.com>
Date: Tue, 14 Feb 2023 11:39:07 +0100
Subject: [PATCH] device: skip DNS resolution for tentative IPv6 addresses

A tentative IPv6 address can still fail DAD, so don't use it to
resolve the hostname via DNS. Furthermore, tentative addresses can't
be used to contact the nameserver and so the resolution will fail if
there is no other valid IPv6 address. Wait that the address becomes
non-tentative.

(cherry picked from commit 4138be6a5a508af66b3b79c0eaeb43e3437ee345)
(cherry picked from commit 0ebd75381963abc2fb75d39ab44367139db0e34b)
(cherry picked from commit 26d5ad46806a2dc69238116796be0fbb2b7c273f)
---
 src/core/devices/nm-device.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index 461f57b5c1..9af4bf8988 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -17117,6 +17117,9 @@ get_address_for_hostname_dns_lookup(NMDevice *self, int addr_family)
                 return g_inet_address_new_from_bytes(addr->address_ptr, G_SOCKET_FAMILY_IPV4);
             }
 
+            if (addr->n_ifa_flags & IFA_F_TENTATIVE)
+                continue;
+
             /* For IPv6 prefer, in order:
              * - !link-local, !deprecated
              * - !link-local, deprecated
-- 
2.39.1