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 <w@1wt.eu>
(cherry picked from commit e3647da097fbf23ca45fb065bb5c1cde98d6c40d)
[wt: this is in proto_tcp.c in 2.2]
Signed-off-by: Willy Tarreau <w@1wt.eu>
(cherry picked from commit a20e7c0171b965c07c2c6c3389c97c15203431cd)
[wt: ctx: conn->src => conn->addr.from]
Signed-off-by: Willy Tarreau <w@1wt.eu>
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index f885a2b..21f7267 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -1348,8 +1348,13 @@
setsockopt(conn->handle.fd, SOL_IP, IP_TTL, &one, sizeof(one));
#endif
#ifdef IPV6_UNICAST_HOPS
+#if defined(SOL_IPV6)
if (conn->addr.from.ss_family == AF_INET6)
setsockopt(conn->handle.fd, SOL_IPV6, IPV6_UNICAST_HOPS, &one, sizeof(one));
+#elif defined(IPPROTO_IPV6)
+ if (conn->addr.from.ss_family == AF_INET6)
+ setsockopt(conn->handle.fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &one, sizeof(one));
+#endif
#endif
out:
/* kill the stream if any */