+
+ if (setsockopt(udpsock6, IPPROTO_IPV6, IPV6_V6ONLY, &sockopt, sizeof(int)) != 0)
+ Log_fatal("setsockopt IPv6: %s", strerror(errno));
+
+ rc = bind(udpsock6, (struct sockaddr *) addresses[1], sizeof (struct sockaddr_in6));
+ if (rc < 0)
+ Log_fatal("bind %d %s: %s", getIntConf(BINDPORT), getStrConf(BINDADDR), strerror(errno));
+ val = 0xe0;
+ rc = setsockopt(udpsock6, IPPROTO_IP, IP_TOS, &val, sizeof(val));
+ if (rc < 0)
+ Log_warn("Server: Failed to set TOS for UDP Socket");
+ val = 0x80;
+ rc = setsockopt(udpsock6, IPPROTO_IP, IP_TOS, &val, sizeof(val));
+ if (rc < 0)
+ Log_warn("Server: Failed to set TOS for UDP Socket");
+
+ fcntl(udpsock6, F_SETFL, O_NONBLOCK);
+ pollfds[UDP_SOCK6].fd = udpsock6;
+ pollfds[UDP_SOCK6].events = POLLIN | POLLHUP | POLLERR;
+