From 0cb5434c64e29d531cfd47115723c5cb2f094803 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 31 Mar 2021 08:29:27 +0200 Subject: [PATCH] BUILD: tcp: use IPPROTO_IPV6 instead of SOL_IPV6 on FreeBSD/MacOS Lukas reported in issue #1203 that the previous fix for silent-drop in commit ab79ee8b1 ("BUG/MINOR: tcp: fix silent-drop workaround for IPv6") breaks the build on FreeBSD/MacOS due to SOL_IPV6 not being defined. On these platforms, IPPROTO_IPV6 must be used instead, so this should fix it. This needs to be backported to whatever version the fix above is backported to. (cherry picked from commit da2319578555e56eafab0141505ce943f954d859) Signed-off-by: Willy Tarreau (cherry picked from commit e3647da097fbf23ca45fb065bb5c1cde98d6c40d) [wt: this is in proto_tcp.c in 2.2] Signed-off-by: Willy Tarreau (cherry picked from commit a20e7c0171b965c07c2c6c3389c97c15203431cd) Signed-off-by: Willy Tarreau --- src/proto_tcp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/proto_tcp.c b/src/proto_tcp.c index bd615a5..e7bf0e4 100644 --- a/src/proto_tcp.c +++ b/src/proto_tcp.c @@ -1353,8 +1353,13 @@ static enum act_return tcp_exec_action_silent_drop(struct act_rule *rule, struct setsockopt(conn->handle.fd, SOL_IP, IP_TTL, &one, sizeof(one)); #endif #ifdef IPV6_UNICAST_HOPS +#if defined(SOL_IPV6) if (conn->src && conn->src->ss_family == AF_INET6) setsockopt(conn->handle.fd, SOL_IPV6, IPV6_UNICAST_HOPS, &one, sizeof(one)); +#elif defined(IPPROTO_IPV6) + if (conn->src && conn->src->ss_family == AF_INET6) + setsockopt(conn->handle.fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &one, sizeof(one)); +#endif #endif out: /* kill the stream if any */ -- 1.7.10.4