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 4138be6a5a)
(cherry picked from commit 0ebd753819)
(cherry picked from commit 26d5ad4680)
(cherry picked from commit 115634d3b1)
This commit is contained in:
Beniamino Galvani 2023-02-14 11:39:07 +01:00
parent fcf2e40f5f
commit 90ef7aeed3

View file

@ -16815,6 +16815,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