|
version 1.1.1.1.22.1, 2013/07/18 14:55:42
|
version 1.4.18.1, 2017/12/08 00:07:13
|
|
Line 12 terms:
|
Line 12 terms:
|
| All of the documentation and software included in the ELWIX and AITNET |
All of the documentation and software included in the ELWIX and AITNET |
| Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
| |
|
| Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 | Copyright 2004 - 2015 |
| by Michael Pounov <misho@elwix.org>. All rights reserved. |
by Michael Pounov <misho@elwix.org>. All rights reserved. |
| |
|
| Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
|
Line 75 const crcPoly_t crc_Poly[] = {
|
Line 75 const crcPoly_t crc_Poly[] = {
|
| * @crcBits = Number width bits |
* @crcBits = Number width bits |
| * return: -1 error, !=-1 reflecting number |
* return: -1 error, !=-1 reflecting number |
| */ |
*/ |
| inline u_int | u_int |
| crcReflect(u_int crcNum, u_char crcBits) |
crcReflect(u_int crcNum, u_char crcBits) |
| { |
{ |
| register u_int i, j = 1, rev = 0; |
register u_int i, j = 1, rev = 0; |
|
Line 97 crcReflect(u_int crcNum, u_char crcBits)
|
Line 97 crcReflect(u_int crcNum, u_char crcBits)
|
| * @xorCRC = Last xor CRC value |
* @xorCRC = Last xor CRC value |
| * return: -1 error, !=-1 CRC checksum |
* return: -1 error, !=-1 CRC checksum |
| */ |
*/ |
| inline u_int | u_int |
| crcCalc(u_char * __restrict psBuf, u_int bufLen, u_char crcBits, u_char RevOpts, u_int initCRC, u_int xorCRC) |
crcCalc(u_char * __restrict psBuf, u_int bufLen, u_char crcBits, u_char RevOpts, u_int initCRC, u_int xorCRC) |
| { |
{ |
| const u_int bits = sizeof(int) * 8 - crcBits; |
const u_int bits = sizeof(int) * 8 - crcBits; |
|
Line 193 crcCalc(u_char * __restrict psBuf, u_int bufLen, u_cha
|
Line 193 crcCalc(u_char * __restrict psBuf, u_int bufLen, u_cha
|
| * @bufLen = Length of data |
* @bufLen = Length of data |
| * return: -1 error, !=-1 Checksum |
* return: -1 error, !=-1 Checksum |
| */ |
*/ |
| inline u_short | u_short |
| crcIP(u_char * __restrict buf, int bufLen) |
crcIP(u_char * __restrict buf, int bufLen) |
| { |
{ |
| register u_int sum; |
register u_int sum; |
|
Line 201 crcIP(u_char * __restrict buf, int bufLen)
|
Line 201 crcIP(u_char * __restrict buf, int bufLen)
|
| |
|
| assert(buf); |
assert(buf); |
| |
|
| for (sum = 0; bufLen && bufLen > 1; bufLen -= 2) | for (sum = 0; bufLen > 1; bufLen -= 2) |
| sum += *nBuf++; |
sum += *nBuf++; |
| if (bufLen == 1) { |
if (bufLen == 1) { |
| *(u_char*)(&last) += *(u_char*) nBuf; |
*(u_char*)(&last) += *(u_char*) nBuf; |
|
Line 215 crcIP(u_char * __restrict buf, int bufLen)
|
Line 215 crcIP(u_char * __restrict buf, int bufLen)
|
| } |
} |
| |
|
| /* |
/* |
| |
* crcTCP() - Checksum for TCP v4 communication |
| |
* |
| |
* @buf = Data for calculation |
| |
* @bufLen = Length of data |
| |
* @th = TCP header |
| |
* return: -1 error, !=-1 Checksum |
| |
*/ |
| |
u_short |
| |
crcTCP(struct in_addr src, struct in_addr dst, u_char * __restrict th) |
| |
{ |
| |
struct psd_tcp { |
| |
struct in_addr src; |
| |
struct in_addr dst; |
| |
u_char pad; |
| |
u_char proto; |
| |
u_short tcp_len; |
| |
u_char tcp[20]; |
| |
} buf; |
| |
|
| |
buf.src = src; |
| |
buf.dst = dst; |
| |
buf.pad = 0; |
| |
buf.proto = IPPROTO_TCP; |
| |
buf.tcp_len = htons(sizeof buf.tcp); |
| |
memcpy(&buf.tcp, th, sizeof buf.tcp); |
| |
|
| |
return crcIP((u_char*) &buf, sizeof buf); |
| |
} |
| |
|
| |
/* |
| |
* crcUDP() - Checksum for UDP v4 communication |
| |
* |
| |
* @buf = Data for calculation |
| |
* @bufLen = Length of data |
| |
* @uh = UDP header |
| |
* return: -1 error, !=-1 Checksum |
| |
*/ |
| |
u_short |
| |
crcUDP(struct in_addr src, struct in_addr dst, u_char * __restrict uh) |
| |
{ |
| |
struct psd_udp { |
| |
struct in_addr src; |
| |
struct in_addr dst; |
| |
u_char pad; |
| |
u_char proto; |
| |
u_short udp_len; |
| |
u_char udp[8]; |
| |
} buf; |
| |
|
| |
buf.src = src; |
| |
buf.dst = dst; |
| |
buf.pad = 0; |
| |
buf.proto = IPPROTO_UDP; |
| |
buf.udp_len = htons(sizeof buf.udp); |
| |
memcpy(&buf.udp, uh, sizeof buf.udp); |
| |
|
| |
return crcIP((u_char*) &buf, sizeof buf); |
| |
} |
| |
|
| |
|
| |
/* |
| * crcFletcher16() - Fletcher-16 Checksum computing |
* crcFletcher16() - Fletcher-16 Checksum computing |
| * |
* |
| * @nBuf = Data for calculation |
* @nBuf = Data for calculation |
| * @bufLen = Length of data |
* @bufLen = Length of data |
| * return: -1 error, !=-1 Checksum |
* return: -1 error, !=-1 Checksum |
| */ |
*/ |
| inline u_short | u_short |
| crcFletcher16(u_short * __restrict nBuf, int bufLen) |
crcFletcher16(u_short * __restrict nBuf, int bufLen) |
| { |
{ |
| register u_short s1, s2; |
register u_short s1, s2; |
|
Line 253 crcFletcher16(u_short * __restrict nBuf, int bufLen)
|
Line 314 crcFletcher16(u_short * __restrict nBuf, int bufLen)
|
| * @bufLen = Length of data |
* @bufLen = Length of data |
| * return: -1 error, !=-1 Checksum |
* return: -1 error, !=-1 Checksum |
| */ |
*/ |
| inline u_int | u_int |
| crcFletcher(u_short * __restrict nBuf, int bufLen) |
crcFletcher(u_short * __restrict nBuf, int bufLen) |
| { |
{ |
| register u_int s1, s2, clen; |
register u_int s1, s2, clen; |
|
Line 284 crcFletcher(u_short * __restrict nBuf, int bufLen)
|
Line 345 crcFletcher(u_short * __restrict nBuf, int bufLen)
|
| * @bufLen = Length of data |
* @bufLen = Length of data |
| * return: -1 error, !=-1 Checksum |
* return: -1 error, !=-1 Checksum |
| */ |
*/ |
| inline u_int | u_int |
| crcAdler(u_char * __restrict psBuf, int bufLen) |
crcAdler(u_char * __restrict psBuf, int bufLen) |
| { |
{ |
| register u_int s1 = 1, s2 = 0, clen; |
register u_int s1 = 1, s2 = 0, clen; |