* Copyright (c) 1986 Regents of the University of California.
* Redistribution and use in source and binary forms are permitted
* provided that the above copyright notice and this paragraph are
* duplicated in all such forms and that any documentation,
* advertising materials, and other materials related to such
* distribution and use acknowledge that the software was developed
* by the University of California, Berkeley. The name of the
* University may not be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
static char sccsid
[] = "@(#)cksum.tahoe.c 2.3 (Berkeley) 6/18/88";
* Checksum routine for Internet Protocol family headers.
* This routine is very heavily used in the network
* code and should be modified for each CPU to be as fast as possible.
* This implementation is TAHOE version.
#define ADDCARRY(sum) { \
if (sum & 0xffff0000) { \
while ((len
-= 2) >= 0) {
/* word is not aligned */
u
.c
[1] = *((char *)addr
+1);
u
.c
[0] = *(u_char
*)addr
;
/* The last mbuf has odd # of bytes. Follow the
standard (the odd byte is shifted left by 8 bits) */