From: Roy Marples Date: Thu, 15 May 2008 20:45:45 +0000 (+0000) Subject: Fix checksum on Sparc64. X-Git-Tag: v4.0.2~386 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fba865f71d680975665008401f3c7c2964472de3;p=thirdparty%2Fdhcpcd.git Fix checksum on Sparc64. --- diff --git a/net.c b/net.c index d38ba4f5..b2dd4538 100644 --- a/net.c +++ b/net.c @@ -468,17 +468,16 @@ struct udp_dhcp_packet static uint16_t checksum(const void *data, uint16_t len) { - const uint8_t *addr = data; + const uint16_t *addr = data; uint32_t sum = 0; while (len > 1) { - sum += addr[0] + addr[1] * 256; - addr += 2; + sum += *addr++; len -= 2; } if (len == 1) - sum += *addr; + sum += *(const uint8_t *)addr; sum = (sum >> 16) + (sum & 0xffff); sum += (sum >> 16);