BUILD: add explicit support for TFO with USE_TFO

TCP Fast Open is supported in server mode since Linux 3.7, but current
libc's don't define TCP_FASTOPEN=23. Introduce the new USE flag USE_TFO
to define it manually in compat.h. Also note this in the TFO related
documentation.
This commit is contained in:
Lukas Tribus 2013-04-02 16:43:24 +02:00 committed by Willy Tarreau
parent ad1731d553
commit 0999f7662c
3 changed files with 17 additions and 1 deletions

View File

@ -32,6 +32,7 @@
# USE_MY_ACCEPT4 : use own implemention of accept4() if glibc < 2.10.
# USE_ZLIB : enable zlib library support.
# USE_CPU_AFFINITY : enable pinning processes to CPU on Linux. Automatic.
# USE_TFO : enable TCP fast open. Supported on Linux >= 3.7.
#
# Options can be forced by specifying "USE_xxx=1" or can be disabled by using
# "USE_xxx=" (empty string).
@ -564,6 +565,12 @@ OPTIONS_CFLAGS += -DUSE_PCRE_JIT
endif
endif
# TCP Fast Open
ifneq ($(USE_TFO),)
OPTIONS_CFLAGS += -DUSE_TFO
BUILD_OPTIONS += $(call ignore_implicit,USE_TFO)
endif
# This one can be changed to look for ebtree files in an external directory
EBTREE_DIR := ebtree

View File

@ -7408,7 +7408,9 @@ tfo
that use high connection rates and where each round trip matters. This can
possibly cause issues with many firewalls which do not accept data on SYN
packets, so this option should only be enabled once well tested. This option
is only supported on TCPv4/TCPv6 sockets and ignored by other ones.
is only supported on TCPv4/TCPv6 sockets and ignored by other ones. You may
need to build HAProxy with USE_TFO=1 if your libc doesn't define
TCP_FASTOPEN.
transparent
Is an optional keyword which is supported only on certain Linux kernels. It

View File

@ -106,6 +106,13 @@
#endif /* SO_REUSEADDR */
#endif /* SO_REUSEPORT */
/* only Linux defines TCP_FASTOPEN */
#ifdef USE_TFO
#ifndef TCP_FASTOPEN
#define TCP_FASTOPEN 23
#endif
#endif
#if defined(__dietlibc__)
#include <strings.h>
#endif