[lttng-dev] [PATCH lttng-tools v2] Fix: Use SOL_SOCKET level for SO_KEEPALIVE on all platform

Jonathan Rajotte jonathan.rajotte-julien at efficios.com
Wed Feb 21 16:59:54 EST 2018


On Linux, COMPAT_SOCKET_LEVEL was set to SOL_TCP instead
of SOL_SOCKET, this resulted in execution of:
    setsockopt(..., SOL_TCP, TCP_DEFER_ACCEPT, ...)

Instead of:
    setsockopt(..., SOL_SOCKET, SO_KEEPALIVE, ...)

Hence, TCP keep alive was not enabled.

COMPAT_SOCKET_LEVEL is not needed. All platforms supported use the
SOL_SOCKET level for SO_KEEPALIVE.

Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
---
 src/bin/lttng-relayd/tcp_keep_alive.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/src/bin/lttng-relayd/tcp_keep_alive.c b/src/bin/lttng-relayd/tcp_keep_alive.c
index 4a2cd9f..469bec3 100644
--- a/src/bin/lttng-relayd/tcp_keep_alive.c
+++ b/src/bin/lttng-relayd/tcp_keep_alive.c
@@ -36,7 +36,6 @@
 /* Per-platform definitions of TCP socket options. */
 #if defined (__linux__)
 
-#define COMPAT_SOCKET_LEVEL SOL_TCP
 #define COMPAT_TCP_LEVEL SOL_TCP
 #define COMPAT_TCP_ABORT_THRESHOLD 0 /* Does not exist on linux. */
 #define COMPAT_TCP_KEEPIDLE TCP_KEEPIDLE
@@ -45,7 +44,6 @@
 
 #elif defined (__sun__) /* ! defined (__linux__) */
 
-#define COMPAT_SOCKET_LEVEL SOL_SOCKET
 #define COMPAT_TCP_LEVEL IPPROTO_TCP
 
 #ifdef TCP_KEEPALIVE_THRESHOLD
@@ -65,7 +63,6 @@
 
 #else /* ! defined (__linux__) && ! defined (__sun__) */
 
-#define COMPAT_SOCKET_LEVEL 0
 #define COMPAT_TCP_LEVEL 0
 #define COMPAT_TCP_ABORT_THRESHOLD 0
 #define COMPAT_TCP_KEEPIDLE 0
@@ -547,7 +544,7 @@ int socket_apply_keep_alive_config(int socket_fd)
 		goto end;
 	}
 
-	ret = setsockopt(socket_fd, COMPAT_SOCKET_LEVEL, SO_KEEPALIVE, &val,
+	ret = setsockopt(socket_fd, SOL_SOCKET, SO_KEEPALIVE, &val,
 			sizeof(val));
 	if (ret < 0) {
 		PERROR("setsockopt so_keepalive");
-- 
2.7.4



More information about the lttng-dev mailing list