/[lwip]/lwip/src/core/inet6.c
ViewVC logotype

Diff of /lwip/src/core/inet6.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by jani, Fri Feb 21 16:43:46 2003 UTC revision 1.3.2.1 by likewise, Wed May 14 14:38:28 2003 UTC
# Line 67  chksum(void *dataptr, u16_t len) Line 67  chksum(void *dataptr, u16_t len)
67    }    }
68    
69    /* add up any odd byte */    /* add up any odd byte */
70    if(len == 1) {    if (len == 1) {
71      acc += htons((u16_t)(*(u8_t *)dataptr) << 8);      acc += htons((u16_t)(*(u8_t *)dataptr) << 8);
72    }    }
73    
# Line 93  inet_chksum_pseudo(struct pbuf *p, Line 93  inet_chksum_pseudo(struct pbuf *p,
93    swapped = 0;    swapped = 0;
94    for(q = p; q != NULL; q = q->next) {        for(q = p; q != NULL; q = q->next) {    
95      acc += chksum(q->payload, q->len);      acc += chksum(q->payload, q->len);
96      while(acc >> 16) {      while (acc >> 16) {
97        acc = (acc & 0xffff) + (acc >> 16);        acc = (acc & 0xffff) + (acc >> 16);
98      }      }
99      if(q->len % 2 != 0) {      if (q->len % 2 != 0) {
100        swapped = 1 - swapped;        swapped = 1 - swapped;
101        acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8);        acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8);
102      }      }
103    }    }
104    
105    if(swapped) {    if (swapped) {
106      acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8);      acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8);
107    }    }
108        
109    for(i = 0; i < 8; i++) {    for(i = 0; i < 8; i++) {
110      acc += ((u16_t *)src->addr)[i] & 0xffff;      acc += ((u16_t *)src->addr)[i] & 0xffff;
111      acc += ((u16_t *)dest->addr)[i] & 0xffff;      acc += ((u16_t *)dest->addr)[i] & 0xffff;
112      while(acc >> 16) {      while (acc >> 16) {
113        acc = (acc & 0xffff) + (acc >> 16);        acc = (acc & 0xffff) + (acc >> 16);
114      }      }
115    }    }
# Line 117  inet_chksum_pseudo(struct pbuf *p, Line 117  inet_chksum_pseudo(struct pbuf *p,
117    acc += ((u16_t *)&proto_len)[0] & 0xffff;    acc += ((u16_t *)&proto_len)[0] & 0xffff;
118    acc += ((u16_t *)&proto_len)[1] & 0xffff;    acc += ((u16_t *)&proto_len)[1] & 0xffff;
119    
120    while(acc >> 16) {    while (acc >> 16) {
121      acc = (acc & 0xffff) + (acc >> 16);      acc = (acc & 0xffff) + (acc >> 16);
122    }    }
123    return ~(acc & 0xffff);    return ~(acc & 0xffff);
# Line 151  inet_chksum_pbuf(struct pbuf *p) Line 151  inet_chksum_pbuf(struct pbuf *p)
151    swapped = 0;    swapped = 0;
152    for(q = p; q != NULL; q = q->next) {    for(q = p; q != NULL; q = q->next) {
153      acc += chksum(q->payload, q->len);      acc += chksum(q->payload, q->len);
154      while(acc >> 16) {      while (acc >> 16) {
155        acc = (acc & 0xffff) + (acc >> 16);        acc = (acc & 0xffff) + (acc >> 16);
156      }          }    
157      if(q->len % 2 != 0) {      if (q->len % 2 != 0) {
158        swapped = 1 - swapped;        swapped = 1 - swapped;
159        acc = (acc & 0xff << 8) | (acc & 0xff00 >> 8);        acc = (acc & 0xff << 8) | (acc & 0xff00 >> 8);
160      }      }
161    }    }
162    
163    if(swapped) {    if (swapped) {
164      acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8);      acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8);
165    }    }
166    return ~(acc & 0xffff);    return ~(acc & 0xffff);

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.3.2.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26