From a4270020addc324fb60d2b1b446b41bc31e3baf8 Mon Sep 17 00:00:00 2001 From: Lucas Castro Date: Wed, 10 Jan 2024 22:33:44 -0300 Subject: Import Upstream version 1.0.4 --- cksum.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 cksum.c (limited to 'cksum.c') diff --git a/cksum.c b/cksum.c new file mode 100644 index 0000000..b021533 --- /dev/null +++ b/cksum.c @@ -0,0 +1,35 @@ +/* + +(C) 2009-2011 Mika Ilmaranta + +License: GPLv2 + +*/ + +#include "cksum.h" + +int in_cksum(u_short *p, int n) +{ + register u_short answer; + register long sum = 0; + u_short odd_byte = 0; + + while(n > 1) { + sum += *p++; + n -= 2; + } + + /* mop up an odd byte, if necessary */ + if(n == 1){ + *(u_char*)(&odd_byte) = *(u_char*)p; + sum += odd_byte; + } + + sum = (sum >> 16) + (sum & 0xffff); /* add hi 16 to low 16 */ + sum += (sum >> 16); /* add carry */ + answer = ~sum; /* ones-complement, truncate */ + + return(answer); +} + +/* EOF */ -- cgit v1.2.3