From 08db6efa75198cc24127f1fdcd9dea28e1ed0fde Mon Sep 17 00:00:00 2001 From: Peter Wemm Date: Sat, 29 Jun 2002 09:00:47 +0000 Subject: [PATCH] Update from NetBSD 1.3 -> 1.6. Most notable, rev 1.6: "Make in_cksum work on little endian machines" This would explain a few things. :-) --- lib/libstand/in_cksum.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/libstand/in_cksum.c b/lib/libstand/in_cksum.c index 1fc73445419..e253fad3191 100644 --- a/lib/libstand/in_cksum.c +++ b/lib/libstand/in_cksum.c @@ -1,4 +1,4 @@ -/* $NetBSD: in_cksum.c,v 1.3 1995/04/22 13:53:48 cgd Exp $ */ +/* $NetBSD: in_cksum.c,v 1.6 2000/03/31 19:55:09 castor Exp $ */ /* * Copyright (c) 1992 Regents of the University of California. @@ -43,6 +43,9 @@ __FBSDID("$FreeBSD$"); #include +#include + +#include "stand.h" /* * Checksum routine for Internet Protocol family headers. @@ -71,12 +74,21 @@ in_cksum(p, len) } } else { while ((len -= 2) >= 0) { +#if BYTE_ORDER == BIG_ENDIAN sum += *cp++ << 8; sum += *cp++; +#else + sum += *cp++; + sum += *cp++ << 8; +#endif } } if ((oddbyte = len & 1) != 0) +#if BYTE_ORDER == BIG_ENDIAN v = *cp << 8; +#else + v = *cp; +#endif } if (oddbyte) sum += v;