From f85f2f20fbabde33e10e587757ac629ca6fe2000 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Wed, 13 May 2026 01:55:14 +0300 Subject: [PATCH] fix tcp_pseudo_checksum: add ntohs() to correctly extract 16-bit IP halfwords from NBO on LE --- src/lwip_tcp/lwip_tcp_out.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lwip_tcp/lwip_tcp_out.c b/src/lwip_tcp/lwip_tcp_out.c index 8ded4d5f..865ffd90 100644 --- a/src/lwip_tcp/lwip_tcp_out.c +++ b/src/lwip_tcp/lwip_tcp_out.c @@ -596,10 +596,10 @@ tcp_pseudo_checksum(uint32_t src_ip, uint32_t dst_ip, uint8_t proto, uint16_t tc { uint32_t sum = 0; - sum += (uint32_t)(uint16_t)((src_ip >> 16) & 0xFFFF); - sum += (uint32_t)(uint16_t)(src_ip & 0xFFFF); - sum += (uint32_t)(uint16_t)((dst_ip >> 16) & 0xFFFF); - sum += (uint32_t)(uint16_t)(dst_ip & 0xFFFF); + sum += (uint32_t)ntohs((uint16_t)((src_ip >> 16) & 0xFFFF)); + sum += (uint32_t)ntohs((uint16_t)(src_ip & 0xFFFF)); + sum += (uint32_t)ntohs((uint16_t)((dst_ip >> 16) & 0xFFFF)); + sum += (uint32_t)ntohs((uint16_t)(dst_ip & 0xFFFF)); sum += htons((uint16_t)proto); sum += htons(tcp_len);