Page MenuHomeFreeBSD

D57988.id181152.diff
No OneTemporary

D57988.id181152.diff

diff --git a/tests/sys/netinet/ip_reass_test.c b/tests/sys/netinet/ip_reass_test.c
--- a/tests/sys/netinet/ip_reass_test.c
+++ b/tests/sys/netinet/ip_reass_test.c
@@ -56,23 +56,20 @@
};
static void
-update_cksum(struct ip *ip)
+update_cksum(void *ip)
{
size_t i;
+ uint16_t *cksump;
uint32_t cksum;
- uint8_t *cksump;
- uint16_t tmp;
- ip->ip_sum = 0;
- cksump = (char *)ip;
- for (cksum = 0, i = 0; i < sizeof(*ip) / sizeof(uint16_t); i++) {
- tmp = *cksump++;
- tmp = tmp << 8 | *cksump++;
- cksum += ntohs(tmp);
- }
- cksum = (cksum >> 16) + (cksum & 0xffff);
- cksum = ~(cksum + (cksum >> 16));
- ip->ip_sum = htons((uint16_t)cksum);
+ ((struct ip *)ip)->ip_sum = 0;
+ cksump = (uint16_t *)ip;
+ cksum = 0;
+ for (i = 0; i < sizeof(struct ip) / sizeof(uint16_t); i++)
+ cksum += *cksump++;
+ while ((cksum >> 16) != 0)
+ cksum = (cksum & 0xffff) + (cksum >> 16);
+ ((struct ip *)ip)->ip_sum = (uint16_t)(~cksum);
}
static struct lopacket *

File Metadata

Mime Type
text/plain
Expires
Tue, Jul 7, 1:03 AM (9 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34589367
Default Alt Text
D57988.id181152.diff (966 B)

Event Timeline