csum.c

来自「linux下traceroute的实现」· C语言 代码 · 共 35 行

C
35
字号
/*    Copyright (c)  2006, 2007		Dmitry Butskoy					<buc@citadel.stu.neva.ru>    License:  GPL v2 or any later    See COPYING for the status of this software.*/#include <stdlib.h>#include <unistd.h>#include "traceroute.h"u_int16_t in_csum (const void *ptr, size_t len) {	const u_int16_t *p = (const u_int16_t *) ptr;	size_t nw = len / 2;	unsigned int sum = 0;	u_int16_t res;	while (nw--)  sum += *p++;	if (len & 0x1)	    sum += htons (*((unsigned char *) p) << 8);	sum = (sum >> 16) + (sum & 0xffff);	sum += (sum >> 16);	res = ~sum;	if (!res)  res = ~0;	return res;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?