硬汉嵌入式论坛

 找回密码
 立即注册
查看: 254|回复: 2
收起左侧

[LwIP] LWIP报文转发时为什么需要删除掉校验码

[复制链接]

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2025-10-15 19:20:26 | 显示全部楼层 |阅读模式
本帖最后由 nicex 于 2025-10-15 20:26 编辑

Lwip源码函数:static void ip4_forward(struct pbuf *p, struct ip_hdr *iphdr, struct netif *inp),在这个函数内部执行了删除校验码的操作,如下图:
Snipaste_2025-10-15_19-28-44.png
这几个宏:CHECKSUM_GEN_IP,CHECKSUM_GEN_UDP,CHECKSUM_GEN_TCP,CHECKSUM_GEN_ICMP都是表示的软件生成对应头的校验码,这里却又要把校验码删除掉,这是为什么呢?
实验环境:
Lwip版本号:2.2.0
项目中注册了两个网卡,netif_1是真实的网络接口,netif_2的链路层是用电力线实现的,现在netif_1接收到报文后,通过netif_2转发出去,接收到收到报文后,进行IP层头部校验时,就会报错校验码不通过
已做过在netif_2->output注册的函数中重新实现校验码计算,但估计是没计算正确

使用的是TCP协议
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119430
QQ
发表于 2025-10-16 10:40:38 | 显示全部楼层
帮顶,没研究过lwip
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2025-10-16 23:57:08 | 显示全部楼层
https://savannah.nongnu.org/bugs/?56288#history,(可能需要科学上网),在这个网站里边开发者提供了一个补丁程序用于修复这个BUG,但是并没有合入到源码中
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-11-22 01:32 , Processed in 0.040803 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表