]> xenbits.xensource.com Git - libvirt.git/commitdiff
rpc: getaddrinfo: also accept IPv4-mapped IPv6 addresses
authorZhimin Feng <fengzhimin1@huawei.com>
Mon, 2 Mar 2020 08:26:51 +0000 (16:26 +0800)
committerJán Tomko <jtomko@redhat.com>
Mon, 9 Mar 2020 11:37:47 +0000 (12:37 +0100)
If only IPv6 is configured on the host, getaddrinfo with AI_ADDRCONFIG
in hints would return EAI_ADDRFAMILY for nodenames that resolve to IPv4.

Also pass AI_V4MAPPED to accept IPv4-mapped addresses on IPv6-only
systems.

Signed-off-by: Zhimin Feng <fengzhimin1@huawei.com>
[rewrote the commit message - jtomko]
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
src/rpc/virnetsocket.c

index 360711acb61eb118d08979e764277d487497ac68..6c790cb577003b64da01816a1e99db259146420c 100644 (file)
@@ -575,7 +575,7 @@ int virNetSocketNewConnectTCP(const char *nodename,
 
     memset(&hints, 0, sizeof(hints));
     hints.ai_family = family;
-    hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG;
+    hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG | AI_V4MAPPED;
     hints.ai_socktype = SOCK_STREAM;
 
     int e = getaddrinfo(nodename, service, &hints, &ai);