1 /*- 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 * 7 * @(#)lfs_cksum.c 8.1 (Berkeley) 06/11/93 8 */ 9 10 #include <sys/types.h> 11 12 /* 13 * Simple, general purpose, fast checksum. Data must be short-aligned. 14 * Returns a u_long in case we ever want to do something more rigorous. 15 * 16 * XXX 17 * Use the TCP/IP checksum instead. 18 */ 19 u_long 20 cksum(str, len) 21 register void *str; 22 register size_t len; 23 { 24 register u_long sum; 25 26 len &= ~(sizeof(u_short) - 1); 27 for (sum = 0; len; len -= sizeof(u_short)) { 28 sum ^= *(u_short *)str; 29 ++(u_short *)str; 30 } 31 return (sum); 32 } 33