The FreeBSD header files define the AI_V4MAPPED but its
implementation of getaddrinfo() always returns an error
when that flag is set. eg

  address resolution failed for localhost:9000: Invalid value for ai_flags

Since this flag is not critical for DNS lookups, just
undefine it on FreeBSD platforms.

Signed-off-by: Daniel P. Berrange <berra...@redhat.com>
---
 util/qemu-sockets.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index b87e17f..3007345 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -29,6 +29,15 @@
 #ifndef AI_ADDRCONFIG
 # define AI_ADDRCONFIG 0
 #endif
+
+/* FreeBSD defines AI_V4MAPPED in its header files but its
+ * getaddrinfo() implementation always returns an error
+ * when it is used. Tested with FreeBSD 10.2. Recheck new
+ * releases periodically to see if this gets fixed....
+ */
+#if defined(AI_V4MAPPED) && defined(__FreeBSD__)
+# undef AI_V4MAPPED
+#endif
 #ifndef AI_V4MAPPED
 # define AI_V4MAPPED 0
 #endif
-- 
2.5.5


Reply via email to