阅读:1697回复:3
ip check sum
我在NDIS 的IMD驱动中修改ip header source ip,然后重新计算ip header check sum. 计算出来的结果总是 0x0300.
两个不同的checksum 函数. 但是在应用测试程序中计算正确. |
|
|
沙发#
发布于:2007-04-03 17:47
check sum 的函数:
USHORT checksum(USHORT *buffToCheck, ULONG sizeToCheck) { unsigned long cksum = 0 ; USHORT *buff = buffToCheck; ULONG size = sizeToCheck; while (size > 1) { cksum += *buff++; size -= sizeof(USHORT); } if (size) { cksum += *(UCHAR*)buff; } cksum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >>16); return (USHORT)(~cksum); } //use : ip_header->iph_xsum = checksum((USHORT *)ip_header, sizeof(IP_HEADER)); |
|
|
板凳#
发布于:2007-04-04 19:22
看看我以前的汇编写的checksum,我用了没有问题
|
|
|
地板#
发布于:2007-04-10 00:39
|
|
|