From 26e66aa0a682e2f1a5d9328b6037b5779310f8f3 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 20 Nov 2010 13:00:34 +0800 Subject: [PATCH] Fixed IPv4 checksum (network byte order, dimwit) --- Modules/IPStack/ipv4.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Modules/IPStack/ipv4.c b/Modules/IPStack/ipv4.c index e37085bf..31d6f027 100644 --- a/Modules/IPStack/ipv4.c +++ b/Modules/IPStack/ipv4.c @@ -284,9 +284,10 @@ Uint16 IPv4_Checksum(const void *Buf, int Size) Size = (Size + 1) >> 1; // 16-bit word count for(i = 0; i < Size; i++ ) { - if((int)sum + arr[i] > 0xFFFF) + Uint16 val = ntohs(arr[i]); + if((int)sum + val > 0xFFFF) sum ++; // Simulate 1's complement - sum += arr[i]; + sum += val; } return ~sum ; } -- 2.20.1