mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
Set SOREUSEADDR as well as SOREUSEPORT on DHCP sockets when both available.
This commit is contained in:
@@ -70,15 +70,15 @@ static int make_fd(int port)
|
|||||||
support it. This handles the introduction of REUSEPORT on Linux. */
|
support it. This handles the introduction of REUSEPORT on Linux. */
|
||||||
if (option_bool(OPT_NOWILD) || option_bool(OPT_CLEVERBIND))
|
if (option_bool(OPT_NOWILD) || option_bool(OPT_CLEVERBIND))
|
||||||
{
|
{
|
||||||
int rc = -1, porterr = 0;
|
int rc = 0;
|
||||||
|
|
||||||
#ifdef SO_REUSEPORT
|
#ifdef SO_REUSEPORT
|
||||||
if ((rc = setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &oneopt, sizeof(oneopt))) == -1 &&
|
if ((rc = setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &oneopt, sizeof(oneopt))) == -1 &&
|
||||||
errno != ENOPROTOOPT)
|
errno == ENOPROTOOPT)
|
||||||
porterr = 1;
|
rc = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (rc == -1 && !porterr)
|
if (rc != -1)
|
||||||
rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &oneopt, sizeof(oneopt));
|
rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &oneopt, sizeof(oneopt));
|
||||||
|
|
||||||
if (rc == -1)
|
if (rc == -1)
|
||||||
|
|||||||
@@ -55,15 +55,15 @@ void dhcp6_init(void)
|
|||||||
support it. This handles the introduction of REUSEPORT on Linux. */
|
support it. This handles the introduction of REUSEPORT on Linux. */
|
||||||
if (option_bool(OPT_NOWILD) || option_bool(OPT_CLEVERBIND))
|
if (option_bool(OPT_NOWILD) || option_bool(OPT_CLEVERBIND))
|
||||||
{
|
{
|
||||||
int rc = -1, porterr = 0;
|
int rc = 0;
|
||||||
|
|
||||||
#ifdef SO_REUSEPORT
|
#ifdef SO_REUSEPORT
|
||||||
if ((rc = setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &oneopt, sizeof(oneopt))) == -1 &&
|
if ((rc = setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &oneopt, sizeof(oneopt))) == -1 &&
|
||||||
errno != ENOPROTOOPT)
|
errno == ENOPROTOOPT)
|
||||||
porterr = 1;
|
rc = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (rc == -1 && !porterr)
|
if (rc != -1)
|
||||||
rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &oneopt, sizeof(oneopt));
|
rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &oneopt, sizeof(oneopt));
|
||||||
|
|
||||||
if (rc == -1)
|
if (rc == -1)
|
||||||
|
|||||||
Reference in New Issue
Block a user