lwip-2.2.0-rc1 版本于 2023 年 6 月 29 日发布,带来了我期盼已久的 IPv4 冲突检测 功能。
lwip-2.2.0-rc1 版本重新回归了 master 分支(主分支),不再使用单独的稳定分支。
master 分支是一个 Git(版本控制程序)术语,如果你还没有使用过 Git 管理源代码,我这里 强烈建议 你马上用起来。如果你不知道如何入门,可以点击 这里 参考我的一些列文章,从《Keil MDK环境下Git入门指南》这篇文章开始。
我们可以从分支图中看出这这种关系,图中的每个黄色块都是一个 标签 ,主要用来标识一个软件版本。

我们回到 IPv4 冲突检测 功能。
IPv4 冲突 是指同一链路上的两台主机同时段使用相同的 IPv4 地址时,则一个或两个主机会出现问题。为了防止发生这种错误配置,主机可以在事后被动检测已发生的错误,以便主机或管理员可以响应以纠正问题,这就是 IPv4 冲突检测 功能。
RFC5227 定义了 IPv4 冲突检测的方法。lwIP-2.2.0-rc1 版本新增的 IPv4 冲突检测就是以 RFC5227 为依据编写的,对应代码保存在 acd.c 中,如下图所示:

用法:
- 在
lwipopts.h中定义宏LWIP_ACD为 1 ; - 修改定时器调用间隔宏
ACD_TMR_INTERVAL,单位为毫秒,推荐值为 100。可用的值为:1000、500,、333、 250、 200、 166、 142、 125、 111、 100… ,也就是用 1000 除以这个值,余数要尽可能的接近或等于 0 。 - 对于固定 IP 地址:
调用函数acd_start。ACD 模块通过回调函数通知冲突状态。 - 对于 AUTOIP:
autoip 模块自动处理所有,不需要额外的操作。 - 对于 DHCP:
使能宏LWIP_DHCP_DOES_ACD_CHECK,然后 dhcp 自动处理所有,不需要额外的操作。
可以看出,用法非常简单。



















