]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: add explicit support for TFO with USE_TFO
authorLukas Tribus <luky-37@hotmail.com>
Tue, 2 Apr 2013 14:43:24 +0000 (16:43 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 2 Apr 2013 15:40:43 +0000 (17:40 +0200)
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
doc/configuration.txt
include/common/compat.h

index b66a07f0ebd695c455a6abc8c727b4fac2183ae0..dd11aa057c95ffd6f87afd50d9747c6f160ed520 100644 (file)
--- 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
 
index 449d158a9bb38e9cd4e7a4c91e2ca34daf4f9016..30f547d4507de70616a904c75d9c086d5ad729d7 100644 (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
index c4ac08cf6c9274e8bd094c20cf7ceeaa28b9c17c..bb2d010bf62537d3b7c745051f4c104ce0c741a8 100644 (file)
 #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