> On May 17, 2016, at 10:21 AM, Stuart Henderson <[email protected]> wrote: > > On 2016/05/17 08:27, Brent Cook wrote: >> This patch came by way of the openntpd github. Linux (and possibly others) >> will attempt to bind to 0.0.0.0 when binding to '::' and return an error if >> it can't, unless IPV6_V6ONLY is set. See >> https://github.com/openntpd-portable/openntpd-portable/issues/19 >> >> OK as an in-tree patch? OpenBSD seems to adopt a more liberal >> interpretation and not return a failure in the same scenario. (The patch >> against the 5.7 tree, but you get the idea) >> >> diff -uNr openntpd-5.7p4/src/server.c new/src/server.c >> --- openntpd-5.7p4/src/server.c 2015-03-25 04:18:56.000000000 +0300 >> +++ new/src/server.c 2016-03-05 18:06:07.946888570 +0300 >> @@ -40,6 +40,7 @@ >> size_t sa6len = sizeof(struct in6_addr); >> u_int new_cnt = 0; >> int tos = IPTOS_LOWDELAY; >> + int on = 1; >> int rdomain, fd; >> @@ -139,6 +140,12 @@ >> IPPROTO_IP, IP_TOS, &tos, sizeof(tos)) == -1) >> log_warn("setsockopt IPTOS_LOWDELAY"); >> >> +#ifdef IPV6_V6ONLY >> + if (la->sa.ss_family == AF_INET6 && setsockopt(la->fd, >> + IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) == -1) >> + log_warn("setsockopt IPV6_V6ONLY"); >> +#endif > > Does it need the ifdef? It's standard ipv6 api.. >
No, I do not think so.
