From 0999f7662c0b1b2f289e062009f52090fde5f74c Mon Sep 17 00:00:00 2001 From: Lukas Tribus Date: Tue, 2 Apr 2013 16:43:24 +0200 Subject: [PATCH] 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. --- Makefile | 7 +++++++ doc/configuration.txt | 4 +++- include/common/compat.h | 7 +++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b66a07f0eb..dd11aa057c 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/doc/configuration.txt b/doc/configuration.txt index 449d158a9b..30f547d450 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -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 diff --git a/include/common/compat.h b/include/common/compat.h index c4ac08cf6c..bb2d010bf6 100644 --- a/include/common/compat.h +++ b/include/common/compat.h @@ -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 #endif