unsigned short IcmpChksum(unsigned short *p, int len) { int i, t; for (i=0, t=0; i < len; i++, p++) { t += SWAP16(*p); } t = (t & 0xffff) + (t >> 16); return (~t); }