From 0698e4d18006df53e5ca76a722e7d38bf9a227bf Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Fri, 8 Nov 2013 15:31:11 +0100 Subject: sock: set IPV6_V6ONLY on the socket before binding an IPv6 address so that we can bind wildcard for both IPv4 and IPv6. Signed-off-by: Michael Adam --- src/sock.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/sock.c b/src/sock.c index f3da328..8d7e90a 100644 --- a/src/sock.c +++ b/src/sock.c @@ -204,6 +204,18 @@ static int listen_on_one_socket(struct addrinfo *ad) return -1; } + if (ad->ai_family == AF_INET6) { + ret = setsockopt(listenfd, IPPROTO_IPV6, IPV6_V6ONLY, &on, + sizeof(on)); + if (ret != 0) { + log_message(LOG_ERR, + "setsockopt failed to set IPV6_V6ONLY: %s", + strerror(errno)); + close(listenfd); + return -1; + } + } + ret = bind(listenfd, ad->ai_addr, ad->ai_addrlen); if (ret != 0) { log_message(LOG_ERR, "bind failed: %s", strerror (errno)); -- cgit v1.2.3