本帖最后由 weicz 于 2013-5-3 23:52 编辑
移植了uip在stm32上,ping的时候通过抓包发现uip能给出icmp request 响应的relpy,但是主机却一直超时,仔细看了一下发现icmp reply的checksum不对,请问是什么原因?
checksum计算的部分是uip源码里的没动过
抓包的截图如下:
uip中icmp reply的checksum计算如下:
ICMPBUF->type = ICMP_ECHO_REPLY;
if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) {
ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1;
} else {
ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8);
}
谢谢。补充一下,我硬件用的是stm32f103c8+enc28j60
|