X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/b85edb614e11d1c0cfa4063ab9d2a9ebd00e94b3..b51a0dafc7861eb31d21524ec067d7c529a664b8:/checksum.c diff --git a/checksum.c b/checksum.c index 57c02bd1..e6e84a25 100644 --- a/checksum.c +++ b/checksum.c @@ -14,26 +14,21 @@ * * miscellaneous checksumming routines * - * Original code by Hannes Gredler (hannes@juniper.net) + * Original code by Hannes Gredler (hannes@gredler.at) */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/checksum.c,v 1.4 2006-09-25 09:23:32 hannes Exp $"; -#endif - #ifdef HAVE_CONFIG_H -#include "config.h" +#include #endif -#include +#include "netdissect-stdinc.h" #include #include #include #include -#include "interface.h" +#include "netdissect.h" /* * CRC-10 table generated using the following Python snippet: @@ -55,7 +50,7 @@ for i in range(len(crc_table)/8): sys.stdout.write("\n") */ -static const u_int16_t crc10_table[256] = +static const uint16_t crc10_table[256] = { 0x0000, 0x0233, 0x0255, 0x0066, 0x0299, 0x00aa, 0x00cc, 0x02ff, 0x0301, 0x0132, 0x0154, 0x0367, 0x0198, 0x03ab, 0x03cd, 0x01fe, @@ -93,12 +88,12 @@ static const u_int16_t crc10_table[256] = static void init_crc10_table(void) -{ +{ #define CRC10_POLYNOMIAL 0x633 - register int i, j; - register u_int16_t accum; - u_int16_t verify_crc10_table[256]; - + int i, j; + uint16_t accum; + uint16_t verify_crc10_table[256]; + for ( i = 0; i < 256; i++ ) { accum = ((unsigned short) i << 2); @@ -114,10 +109,10 @@ init_crc10_table(void) #undef CRC10_POLYNOMIAL } -u_int16_t -verify_crc10_cksum(u_int16_t accum, const u_char *p, int length) +uint16_t +verify_crc10_cksum(uint16_t accum, const u_char *p, int length) { - register int i; + int i; for ( i = 0; i < length; i++ ) { @@ -140,40 +135,40 @@ init_checksum(void) { * Creates the OSI Fletcher checksum. See 8473-1, Appendix C, section C.3. * The checksum field of the passed PDU does not need to be reset to zero. */ -u_int16_t -create_osi_cksum (const u_int8_t *pptr, int checksum_offset, int length) +uint16_t +create_osi_cksum (const uint8_t *pptr, int checksum_offset, int length) { int x; int y; - u_int32_t mul; - u_int32_t c0; - u_int32_t c1; - u_int16_t checksum; - int index; + uint32_t mul; + uint32_t c0; + uint32_t c1; + uint16_t checksum; + int idx; c0 = 0; c1 = 0; - for (index = 0; index < length; index++) { + for (idx = 0; idx < length; idx++) { /* * Ignore the contents of the checksum field. */ - if (index == checksum_offset || - index == checksum_offset+1) { + if (idx == checksum_offset || + idx == checksum_offset+1) { c1 += c0; pptr++; } else { c0 = c0 + *(pptr++); c1 += c0; - } + } } c0 = c0 % 255; c1 = c1 % 255; mul = (length - checksum_offset)*(c0); - + x = mul - c0 - c1; y = c1 - mul - 1; @@ -189,6 +184,6 @@ create_osi_cksum (const u_int8_t *pptr, int checksum_offset, int length) y &= 0x00FF; checksum = ((x << 8) | y); - + return checksum; }