Hi, this is a patch for making it compilable on all BSD.
PS: after reading the mailing list I saw somebody already proposed a patch but my patch fixes all BSD not only Darwin. Kind regards.
From f88246058caf16f12435dd3230dbd0399fac85d8 Mon Sep 17 00:00:00 2001 From: David CARLIER <devne...@gmail.com> Date: Mon, 4 Jul 2016 12:02:52 +0100 Subject: [PATCH] CLEANUP: connection: wrong tcphdr field on BSD on all BSD, tcphdr has different name for destination and source fields. --- src/connection.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/connection.c b/src/connection.c index 358c9bc..026e4dd 100644 --- a/src/connection.c +++ b/src/connection.c @@ -26,6 +26,14 @@ #include <proto/ssl_sock.h> #endif +#ifndef BSD +#define TCPHDR_SOURCE source +#define TCPHDR_DEST dest +#else +#define TCPHDR_SOURCE th_sport +#define TCPHDR_DEST th_dport +#endif + struct pool_head *pool2_connection; /* perform minimal intializations, report 0 in case of error, 1 if OK. */ @@ -736,11 +744,11 @@ int conn_recv_netscaler_cip(struct connection *conn, int flag) /* update the session's addresses and mark them set */ ((struct sockaddr_in *)&conn->addr.from)->sin_family = AF_INET; ((struct sockaddr_in *)&conn->addr.from)->sin_addr.s_addr = hdr_ip4->ip_src.s_addr; - ((struct sockaddr_in *)&conn->addr.from)->sin_port = hdr_tcp->source; + ((struct sockaddr_in *)&conn->addr.from)->sin_port = hdr_tcp->TCPHDR_SOURCE; ((struct sockaddr_in *)&conn->addr.to)->sin_family = AF_INET; ((struct sockaddr_in *)&conn->addr.to)->sin_addr.s_addr = hdr_ip4->ip_dst.s_addr; - ((struct sockaddr_in *)&conn->addr.to)->sin_port = hdr_tcp->dest; + ((struct sockaddr_in *)&conn->addr.to)->sin_port = hdr_tcp->TCPHDR_DEST; conn->flags |= CO_FL_ADDR_FROM_SET | CO_FL_ADDR_TO_SET; } @@ -769,11 +777,11 @@ int conn_recv_netscaler_cip(struct connection *conn, int flag) /* update the session's addresses and mark them set */ ((struct sockaddr_in6 *)&conn->addr.from)->sin6_family = AF_INET6; ((struct sockaddr_in6 *)&conn->addr.from)->sin6_addr = hdr_ip6->ip6_src; - ((struct sockaddr_in6 *)&conn->addr.from)->sin6_port = hdr_tcp->source; + ((struct sockaddr_in6 *)&conn->addr.from)->sin6_port = hdr_tcp->TCPHDR_SOURCE; ((struct sockaddr_in6 *)&conn->addr.to)->sin6_family = AF_INET6; ((struct sockaddr_in6 *)&conn->addr.to)->sin6_addr = hdr_ip6->ip6_dst; - ((struct sockaddr_in6 *)&conn->addr.to)->sin6_port = hdr_tcp->dest; + ((struct sockaddr_in6 *)&conn->addr.to)->sin6_port = hdr_tcp->TCPHDR_DEST; conn->flags |= CO_FL_ADDR_FROM_SET | CO_FL_ADDR_TO_SET; } -- 2.9.0