mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
- Support SO_REUSEPORT_LB in FreeBSD 12 with the so-reuseport: yes
option in unbound.conf. git-svn-id: file:///svn/unbound/trunk@4960 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
parent
1ff7a89433
commit
069b0b8c90
2 changed files with 26 additions and 1 deletions
|
|
@ -1,4 +1,8 @@
|
||||||
6 November 2018:
|
19 November 2018: Wouter
|
||||||
|
- Support SO_REUSEPORT_LB in FreeBSD 12 with the so-reuseport: yes
|
||||||
|
option in unbound.conf.
|
||||||
|
|
||||||
|
6 November 2018: Ralph
|
||||||
- Bugfix min-client-subnet-ipv6
|
- Bugfix min-client-subnet-ipv6
|
||||||
|
|
||||||
25 October 2018: Ralph
|
25 October 2018: Ralph
|
||||||
|
|
|
||||||
|
|
@ -247,6 +247,26 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
|
||||||
}
|
}
|
||||||
#endif /* SO_REUSEADDR */
|
#endif /* SO_REUSEADDR */
|
||||||
#ifdef SO_REUSEPORT
|
#ifdef SO_REUSEPORT
|
||||||
|
# ifdef SO_REUSEPORT_LB
|
||||||
|
/* on FreeBSD 12 we have SO_REUSEPORT_LB that does loadbalance
|
||||||
|
* like SO_REUSEPORT on Linux. This is what the users want
|
||||||
|
* with the config option in unbound.conf; if we actually
|
||||||
|
* need local address and port reuse they'll also need to
|
||||||
|
* have SO_REUSEPORT set for them, assume it was _LB they want.
|
||||||
|
*/
|
||||||
|
if (reuseport && *reuseport &&
|
||||||
|
setsockopt(s, SOL_SOCKET, SO_REUSEPORT_LB, (void*)&on,
|
||||||
|
(socklen_t)sizeof(on)) < 0) {
|
||||||
|
#ifdef ENOPROTOOPT
|
||||||
|
if(errno != ENOPROTOOPT || verbosity >= 3)
|
||||||
|
log_warn("setsockopt(.. SO_REUSEPORT_LB ..) failed: %s",
|
||||||
|
strerror(errno));
|
||||||
|
#endif
|
||||||
|
/* this option is not essential, we can continue */
|
||||||
|
*reuseport = 0;
|
||||||
|
}
|
||||||
|
# else /* no SO_REUSEPORT_LB */
|
||||||
|
|
||||||
/* try to set SO_REUSEPORT so that incoming
|
/* try to set SO_REUSEPORT so that incoming
|
||||||
* queries are distributed evenly among the receiving threads.
|
* queries are distributed evenly among the receiving threads.
|
||||||
* Each thread must have its own socket bound to the same port,
|
* Each thread must have its own socket bound to the same port,
|
||||||
|
|
@ -263,6 +283,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
|
||||||
/* this option is not essential, we can continue */
|
/* this option is not essential, we can continue */
|
||||||
*reuseport = 0;
|
*reuseport = 0;
|
||||||
}
|
}
|
||||||
|
# endif /* SO_REUSEPORT_LB */
|
||||||
#else
|
#else
|
||||||
(void)reuseport;
|
(void)reuseport;
|
||||||
#endif /* defined(SO_REUSEPORT) */
|
#endif /* defined(SO_REUSEPORT) */
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue