diff options
| author | Peter Wemm <peter@FreeBSD.org> | 2002-07-22 09:28:50 +0000 |
|---|---|---|
| committer | Peter Wemm <peter@FreeBSD.org> | 2002-07-22 09:28:50 +0000 |
| commit | 79c3fe9c36e11425c125cae676042f4c6d1c2fbd (patch) | |
| tree | 013feec6ddcbcee7c775af76a2024fd110f8e6e6 /lib/libstand | |
| parent | a084711d1d3b7923ee0bd21d007f62cc2da16b36 (diff) | |
Notes
Diffstat (limited to 'lib/libstand')
| -rw-r--r-- | lib/libstand/in_cksum.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/lib/libstand/in_cksum.c b/lib/libstand/in_cksum.c index d9b8964c62c3..e253fad31916 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. @@ -39,7 +39,13 @@ * @(#) Header: in_cksum.c,v 1.1 92/09/11 01:15:55 leres Exp (LBL) */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <sys/types.h> +#include <machine/endian.h> + +#include "stand.h" /* * Checksum routine for Internet Protocol family headers. @@ -49,11 +55,11 @@ */ int in_cksum(p, len) - register void *p; - register int len; + void *p; + int len; { - register int sum = 0, oddbyte = 0, v = 0; - register u_char *cp = p; + int sum = 0, oddbyte = 0, v = 0; + u_char *cp = p; /* we assume < 2^16 bytes being summed */ while (len > 0) { @@ -68,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; |
