1
0
Fork 0
mirror of https://passt.top/passt synced 2025-08-15 03:03:14 +02:00

Makefile, tcp: Don't try to use tcpi_snd_wnd from tcp_info on pre-5.3 kernels

Detect missing tcpi_snd_wnd in struct tcp_info at build time,
otherwise build fails with a pre-5.3 linux/tcp.h header.

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
Stefano Brivio 2021-10-21 01:19:27 +02:00
commit 849308d207
3 changed files with 15 additions and 1 deletions

9
tcp.c
View file

@ -359,6 +359,11 @@
sizeof(struct ipv6hdr) - sizeof(struct tcphdr))
#define WINDOW_DEFAULT 14600 /* RFC 6928 */
#ifdef HAS_SND_WND
# define KERNEL_REPORTS_SND_WND(c) (c->tcp.kernel_snd_wnd)
#else
# define KERNEL_REPORTS_SND_WND(c) (0 && (c))
#endif
#define SYN_TIMEOUT 240000 /* ms */
#define ACK_TIMEOUT 2000
@ -1563,7 +1568,7 @@ static int tcp_update_seqack_wnd(struct ctx *c, struct tcp_tap_conn *conn,
conn->seq_ack_to_tap = prev_ack_to_tap;
}
if (!c->tcp.kernel_snd_wnd) {
if (!KERNEL_REPORTS_SND_WND(c)) {
tcp_get_sndbuf(conn);
conn->wnd_to_tap = MIN(conn->snd_buf, MAX_WINDOW);
goto out;
@ -1675,8 +1680,10 @@ static int tcp_send_to_tap(struct ctx *c, struct tcp_tap_conn *conn, int flags,
data += OPT_MSS_LEN - 2;
th->doff += OPT_MSS_LEN / 4;
#ifdef HAS_SND_WND
if (!c->tcp.kernel_snd_wnd && info.tcpi_snd_wnd)
c->tcp.kernel_snd_wnd = 1;
#endif
conn->ws = MIN(MAX_WS, info.tcpi_snd_wscale);