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 自动处理所有,不需要额外的操作。
可以看出,用法非常简单。