ip checksum
程序员文章站
2022-03-05 13:36:54
...
同 udp checksum,也是从那个开源系统上扒拉下来的。使用方法也类似。
uint16_t ip_checksum(const void *buf, size_t hdr_len)
{
unsigned long sum = 0;
const uint16_t *ip1;
ip1 = buf;
while (hdr_len > 1) {
sum += *ip1++;
if (sum & 0x80000000)
sum = (sum & 0xFFFF) + (sum >> 16);
hdr_len -= 2;
}
while (sum >> 16)
sum = (sum & 0xFFFF) + (sum >> 16);
return(~sum);
}
// 使用示例
// iph->check = 0;
// iph->check = ip_checksum(iph, sizeof(struct iphdr));
上一篇: 电话号码分身