[MEDIUM] add support for SO_REUSEPORT on Linux

SO_REUSEPORT does not exist on Linux but the checks are available in
the code. With a little patch, it's possible to implement the feature,
but the value of SO_REUSEPORT will still have to be known from userland.
This patch adds a workaround to this problem by figuring out the value
for the one used by SO_REUSEADDR.
This commit is contained in:
Willy Tarreau 2006-11-13 01:22:38 +01:00
parent 77074d548b
commit 58b2f83685
1 changed files with 13 additions and 0 deletions

View File

@ -49,6 +49,19 @@
#include <linux/netfilter_ipv4.h>
#endif
/* We'll try to enable SO_REUSEPORT on Linux 2.4 and 2.6 if not defined.
* There are two families of values depending on the architecture. Those
* are at least valid on Linux 2.4 and 2.6, reason why we'll rely on the
* NETFILTER define.
*/
#if !defined(SO_REUSEPORT) && defined(NETFILTER)
#if (SO_REUSEADDR == 2)
#define SO_REUSEPORT 15
#elif (SO_REUSEADDR == 0x0004)
#define SO_REUSEPORT 0x0200
#endif /* SO_REUSEADDR */
#endif /* SO_REUSEPORT */
#if defined(__dietlibc__)
#include <strings.h>
#endif