From 8b45838ffc389538142a8923ea3b690014e7bbce Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 16 Feb 2000 22:48:19 +0000 Subject: Added support for SO_REUSEPORT for systems that have it. Jeremy. (This used to be commit 377515cf9624720362c0b76969b9381d9972a13f) --- source3/lib/util_sock.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'source3/lib') diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c index 3a09c52a7a..fd5ed71c9c 100644 --- a/source3/lib/util_sock.c +++ b/source3/lib/util_sock.c @@ -76,6 +76,9 @@ struct #ifdef IPTOS_THROUGHPUT {"IPTOS_THROUGHPUT", IPPROTO_IP, IP_TOS, IPTOS_THROUGHPUT, OPT_ON}, #endif +#ifdef SO_REUSEPORT + {"SO_REUSEPORT", SOL_SOCKET, SO_REUSEPORT, 0, OPT_BOOL}, +#endif #ifdef SO_SNDBUF {"SO_SNDBUF", SOL_SOCKET, SO_SNDBUF, 0, OPT_INT}, #endif @@ -841,7 +844,14 @@ int open_socket_in(int type, int port, int dlevel,uint32 socket_addr, BOOL rebin val=1; else val=0; - setsockopt(res,SOL_SOCKET,SO_REUSEADDR,(char *)&val,sizeof(val)); + if(setsockopt(res,SOL_SOCKET,SO_REUSEADDR,(char *)&val,sizeof(val)) == -1) + DEBUG(dlevel,("setsockopt: SO_REUSEADDR=%d on port %d failed with error = %s\n", + val, port, strerror(errno) )); +#ifdef SO_REUSEPORT + if(setsockopt(res,SOL_SOCKET,SO_REUSEPORT,(char *)&val,sizeof(val)) == -1) + DEBUG(dlevel,("setsockopt: SO_REUSEPORT=%d on port %d failed with error = %s\n", + val, port, strerror(errno) )); +#endif /* SO_REUSEPORT */ } /* now we've got a socket - we need to bind it */ -- cgit