+static bool
+InitSinaddrListenAddr(int af, ng_ipaddr_t *addr, UINT16 Port)
+{
+ bool ret;
+ const char *listen_addrstr = NULL;
+#ifdef WANT_IPV6
+ if (af == AF_INET)
+ listen_addrstr = "0.0.0.0";
+#else
+ (void)af;
+#endif
+ if (Conf_ListenAddress[0]) /* overrides V4/V6 atm */
+ listen_addrstr = Conf_ListenAddress;
+
+ ret = ng_ipaddr_init(addr, listen_addrstr, Port);
+ if (!ret) {
+ if (!listen_addrstr)
+ listen_addrstr = "";
+ Log(LOG_CRIT, "Can't bind to %s:%u: can't convert ip address \"%s\"",
+ listen_addrstr, Port, listen_addrstr);
+ }
+ return ret;
+}
+
+
+static void
+set_v6_only(int af, int sock)
+{
+#if defined(IPV6_V6ONLY) && defined(WANT_IPV6)
+ int on = 1;
+
+ if (af != AF_INET6)
+ return;
+
+ if (setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)))
+ Log(LOG_ERR, "Could not set IPV6_V6ONLY: %s", strerror(errno));
+#else
+ (void)af;
+ (void)sock;
+#endif
+}
+
+