您好!
我一直在尝试通过 LWIP 对定制的 TM4C 板实施 ping、但几乎没有成功。
在 Wireshark 上执行跟踪操作后、我发现电路板接收到 ping 命令并做出响应、但将校验和保留为0 (所有这一切都在 Windows 10上完成)。 由于校验和为0、我的命令行中的响应 为"请求超时"。
因此、我查看了一些其他 LWIP 源、发现问题出在 icmp_input 函数中的 icmp.c (IPv4)源文件中。 当我尝试单步执行本节时、我可以看到校验和变为 具有值的 IP_OUTPUT_IF 并返回0。 我已经通过 IP_output_if 进行跟踪、找不到一个位置来修改通过有效载荷缓冲器传递的校验和。
我还修改了 lwipopts.h LWIP_ICMP 定义为1、校验和选项中的所有校验和定义为1。
此时、我卡在、希望获得一些帮助、以解决此校验和问题。 就我所能说的,这是我唯一把我的 ping 回应扣为人质的事情。
参考代码:
ip_output_if (p、ip_current_dest_addr ()、ip_HDRINCL、icmp_TTL、0、 IP_PROTO_ICMP、INP);// icmp.c 中的第223行
//
//
//------ 校验和选项----------------------------------------------------
//从原来的更改,所有这些都被注释
//
#define CHECKSUM_GEN_IP 1.
#define CHECKSUM_GEN_UDP 1.
#define CHECKSUM_GEN_TCP 1.
#define CHECKSUM_CHECK_IP 1.
#define CHECKSUM_CHECK_UDP 1.
#define CHECKSUM_CHECK_TCP 1.