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

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

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

revision 1.22 by likewise, Sun Jul 17 15:30:27 2005 UTC revision 1.23 by christiaans, Fri Nov 25 12:03:38 2005 UTC
# Line 64  static u16_t Line 64  static u16_t
64  lwip_standard_chksum(void *dataptr, int len)  lwip_standard_chksum(void *dataptr, int len)
65  {  {
66    u32_t acc;    u32_t acc;
67    LWIP_DEBUGF(INET_DEBUG, ("lwip_chksum(%p, %d)\n", (void *)dataptr, len));    LWIP_DEBUGF(INET_DEBUG, ("lwip_chksum(%p, %"S16_F")\n", (void *)dataptr, len));
68    
69    /* iterate by two bytes at once */    /* iterate by two bytes at once */
70    for(acc = 0; len > 1; len -= 2) {    for(acc = 0; len > 1; len -= 2) {
# Line 82  lwip_standard_chksum(void *dataptr, int Line 82  lwip_standard_chksum(void *dataptr, int
82    /* add up any last odd byte */    /* add up any last odd byte */
83    if (len == 1) {    if (len == 1) {
84      acc += htons((u16_t)((*(u8_t *)dataptr) & 0xff) << 8);      acc += htons((u16_t)((*(u8_t *)dataptr) & 0xff) << 8);
85      LWIP_DEBUGF(INET_DEBUG, ("inet: chksum: odd byte %d\n", (unsigned int)(*(u8_t *)dataptr)));      LWIP_DEBUGF(INET_DEBUG, ("inet: chksum: odd byte %"U16_F"\n", (u16_t)(*(u8_t *)dataptr)));
86    } else {    } else {
87      LWIP_DEBUGF(INET_DEBUG, ("inet: chksum: no odd byte\n"));      LWIP_DEBUGF(INET_DEBUG, ("inet: chksum: no odd byte\n"));
88    }    }
# Line 116  inet_chksum_pseudo(struct pbuf *p, Line 116  inet_chksum_pseudo(struct pbuf *p,
116      LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n",      LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n",
117        (void *)q, (void *)q->next));        (void *)q, (void *)q->next));
118      acc += LWIP_CHKSUM(q->payload, q->len);      acc += LWIP_CHKSUM(q->payload, q->len);
119      /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%lx \n", acc));*/      /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%"X32_F" \n", acc));*/
120      while (acc >> 16) {      while (acc >> 16) {
121        acc = (acc & 0xffffUL) + (acc >> 16);        acc = (acc & 0xffffUL) + (acc >> 16);
122      }      }
# Line 124  inet_chksum_pseudo(struct pbuf *p, Line 124  inet_chksum_pseudo(struct pbuf *p,
124        swapped = 1 - swapped;        swapped = 1 - swapped;
125        acc = ((acc & 0xff) << 8) | ((acc & 0xff00UL) >> 8);        acc = ((acc & 0xff) << 8) | ((acc & 0xff00UL) >> 8);
126      }      }
127      /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%lx \n", acc));*/      /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/
128    }    }
129    
130    if (swapped) {    if (swapped) {
# Line 140  inet_chksum_pseudo(struct pbuf *p, Line 140  inet_chksum_pseudo(struct pbuf *p,
140    while (acc >> 16) {    while (acc >> 16) {
141      acc = (acc & 0xffffUL) + (acc >> 16);      acc = (acc & 0xffffUL) + (acc >> 16);
142    }    }
143    LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%lx\n", acc));    LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc));
144    return (u16_t)~(acc & 0xffffUL);    return (u16_t)~(acc & 0xffffUL);
145  }  }
146    
# Line 225  inet_chksum_pbuf(struct pbuf *p) Line 225  inet_chksum_pbuf(struct pbuf *p)
225    */    */
226   /*  */   /*  */
227   /* inet_aton */   /* inet_aton */
228   int inet_aton(const char *cp, struct in_addr *addr)   s8_t
229     inet_aton(const char *cp, struct in_addr *addr)
230   {   {
231       u32_t val;       u32_t val;
232       int base, n;       s32_t base, n;
233       char c;       char c;
234       u32_t parts[4];       u32_t parts[4];
235       u32_t* pp = parts;       u32_t* pp = parts;
# Line 252  inet_chksum_pbuf(struct pbuf *p) Line 253  inet_chksum_pbuf(struct pbuf *p)
253           }           }
254           for (;;) {           for (;;) {
255               if (isdigit(c)) {               if (isdigit(c)) {
256                   val = (val * base) + (int)(c - '0');                   val = (val * base) + (s16_t)(c - '0');
257                   c = *++cp;                   c = *++cp;
258               } else if (base == 16 && isxdigit(c)) {               } else if (base == 16 && isxdigit(c)) {
259                   val = (val << 4) |                   val = (val << 4) |
260                       (int)(c + 10 - (islower(c) ? 'a' : 'A'));                       (s16_t)(c + 10 - (islower(c) ? 'a' : 'A'));
261                   c = *++cp;                   c = *++cp;
262               } else               } else
263               break;               break;

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.23

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