Revision 5acf5ea4 net/checksum.c
b/net/checksum.c | ||
---|---|---|
20 | 20 |
#define PROTO_TCP 6 |
21 | 21 |
#define PROTO_UDP 17 |
22 | 22 |
|
23 |
uint32_t net_checksum_add(int len, uint8_t *buf)
|
|
23 |
uint32_t net_checksum_add_cont(int len, uint8_t *buf, int seq)
|
|
24 | 24 |
{ |
25 | 25 |
uint32_t sum = 0; |
26 | 26 |
int i; |
27 | 27 |
|
28 |
for (i = 0; i < len; i++) { |
|
29 |
if (i & 1) |
|
30 |
sum += (uint32_t)buf[i]; |
|
31 |
else |
|
32 |
sum += (uint32_t)buf[i] << 8; |
|
28 |
for (i = seq; i < seq + len; i++) { |
|
29 |
if (i & 1) { |
|
30 |
sum += (uint32_t)buf[i - seq]; |
|
31 |
} else { |
|
32 |
sum += (uint32_t)buf[i - seq] << 8; |
|
33 |
} |
|
33 | 34 |
} |
34 | 35 |
return sum; |
35 | 36 |
} |
Also available in: Unified diff