aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2019-07-09 18:12:28 +0400
committerMarc-André Lureau <marcandre.lureau@redhat.com>2019-08-22 17:30:25 +0400
commit71714178fa35dff1b9afc0762501c81360f7db82 (patch)
treee1a969a1b3e395b6b914f635e0e1a3c4a74cd147 /tests
parent05af039d1e0baec1e1577701ec8309313f832f06 (diff)
downloadqemu-71714178fa35dff1b9afc0762501c81360f7db82.zip
qemu-71714178fa35dff1b9afc0762501c81360f7db82.tar.gz
qemu-71714178fa35dff1b9afc0762501c81360f7db82.tar.bz2
tests: specify the address family when checking bind
getaddrinfo() may succeed with PF_UNSPEC, but fail when more specific. (this allows to skip some tests that would fail under podman) Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/socket-helpers.c17
-rw-r--r--tests/socket-helpers.h11
2 files changed, 13 insertions, 15 deletions
diff --git a/tests/socket-helpers.c b/tests/socket-helpers.c
index 8112763..19a51e8 100644
--- a/tests/socket-helpers.c
+++ b/tests/socket-helpers.c
@@ -30,7 +30,16 @@
# define EAI_ADDRFAMILY 0
#endif
-int socket_can_bind_connect(const char *hostname)
+/*
+ * @hostname: a DNS name or numeric IP address
+ *
+ * Check whether it is possible to bind & connect to ports
+ * on the DNS name or IP address @hostname. If an IP address
+ * is used, it must not be a wildcard address.
+ *
+ * Returns 0 on success, -1 on error with errno set
+ */
+static int socket_can_bind_connect(const char *hostname, int family)
{
int lfd = -1, cfd = -1, afd = -1;
struct addrinfo ai, *res = NULL;
@@ -44,7 +53,7 @@ int socket_can_bind_connect(const char *hostname)
memset(&ai, 0, sizeof(ai));
ai.ai_flags = AI_CANONNAME | AI_ADDRCONFIG;
- ai.ai_family = AF_UNSPEC;
+ ai.ai_family = family;
ai.ai_socktype = SOCK_STREAM;
/* lookup */
@@ -129,7 +138,7 @@ int socket_check_protocol_support(bool *has_ipv4, bool *has_ipv6)
{
*has_ipv4 = *has_ipv6 = false;
- if (socket_can_bind_connect("127.0.0.1") < 0) {
+ if (socket_can_bind_connect("127.0.0.1", PF_INET) < 0) {
if (errno != EADDRNOTAVAIL) {
return -1;
}
@@ -137,7 +146,7 @@ int socket_check_protocol_support(bool *has_ipv4, bool *has_ipv6)
*has_ipv4 = true;
}
- if (socket_can_bind_connect("::1") < 0) {
+ if (socket_can_bind_connect("::1", PF_INET6) < 0) {
if (errno != EADDRNOTAVAIL) {
return -1;
}
diff --git a/tests/socket-helpers.h b/tests/socket-helpers.h
index 9de0e6b..512a004 100644
--- a/tests/socket-helpers.h
+++ b/tests/socket-helpers.h
@@ -21,17 +21,6 @@
#define TESTS_SOCKET_HELPERS_H
/*
- * @hostname: a DNS name or numeric IP address
- *
- * Check whether it is possible to bind & connect to ports
- * on the DNS name or IP address @hostname. If an IP address
- * is used, it must not be a wildcard address.
- *
- * Returns 0 on success, -1 on error with errno set
- */
-int socket_can_bind_connect(const char *hostname);
-
-/*
* @has_ipv4: set to true on return if IPv4 is available
* @has_ipv6: set to true on return if IPv6 is available
*