Diff for /libelwix/src/crc.c between versions 1.4 and 1.5

version 1.4, 2015/06/25 17:53:50 version 1.5, 2017/12/08 00:07:48
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_intu_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_intu_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_shortu_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_shortu_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_intu_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_intu_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;

Removed from v.1.4  
changed lines
  Added in v.1.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>