>From 3b2a171df56dec81238f6590e4239444c1bcc956 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Caletka?= <ondrej@caletka.cz>
Date: Thu, 2 Aug 2012 10:19:25 +0200
Subject: [PATCH] Added v6only socket option.

This option allows binding to the same port using separate
IPv6 and IPv4 socket.
---
 src/knot/server/socket.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/src/knot/server/socket.c b/src/knot/server/socket.c
index dde1a21..8ff924b 100644
--- a/src/knot/server/socket.c
+++ b/src/knot/server/socket.c
@@ -161,6 +161,17 @@ int socket_bind(int socket, int family, const char *addr, unsigned short port)
 		return KNOTD_EINVAL;
 	}
 
+#ifdef IPV6_V6ONLY
+	if (family == AF_INET6) {
+		/* Do not support mapping IPv4 in IPv6 sockets. */
+		ret = setsockopt(socket, IPPROTO_IPV6, IPV6_V6ONLY,
+		                 &flag, sizeof(flag));
+		if (ret < 0) {
+			return KNOTD_EINVAL;
+		}
+	}
+#endif
+
 	/* Bind to specified address. */
 	int res = bind(socket, paddr, addrlen);
 	if (res < 0) {
-- 
1.7.8.6


