Browse Source

fix tcp_pseudo_checksum: add ntohs() to correctly extract 16-bit IP halfwords from NBO on LE

congestion
Evgeny 5 months ago
parent
commit
f85f2f20fb
  1. 8
      src/lwip_tcp/lwip_tcp_out.c

8
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; uint32_t sum = 0;
sum += (uint32_t)(uint16_t)((src_ip >> 16) & 0xFFFF); sum += (uint32_t)ntohs((uint16_t)((src_ip >> 16) & 0xFFFF));
sum += (uint32_t)(uint16_t)(src_ip & 0xFFFF); sum += (uint32_t)ntohs((uint16_t)(src_ip & 0xFFFF));
sum += (uint32_t)(uint16_t)((dst_ip >> 16) & 0xFFFF); sum += (uint32_t)ntohs((uint16_t)((dst_ip >> 16) & 0xFFFF));
sum += (uint32_t)(uint16_t)(dst_ip & 0xFFFF); sum += (uint32_t)ntohs((uint16_t)(dst_ip & 0xFFFF));
sum += htons((uint16_t)proto); sum += htons((uint16_t)proto);
sum += htons(tcp_len); sum += htons(tcp_len);

Loading…
Cancel
Save