注:lwip-2.2.0 正式版本已经于 2023-09-25 发布,功能与 lwip-2.2.0-rc1 版本几乎没有区别,只是更正了版本号。
以下为原文:
lwIP-2.2.0-rc1 介绍
lwIP-2.2.0-rc1 于 2023 年 6 月 29 日发布,主要修改为:
- 修复错误
- 新功能: IPv4 冲突检测
-
contrib
版本库移至主存储库(顶层目录 contrib 内) - lwip-2.1.x 分支不再更新
lwip-2.2.0-rc1 版本重新回归了 master 分支(主分支),不再使用单独的稳定分支。
master 分支
是一个 Git(版本控制程序)术语,如果你还没有使用过 Git 管理源代码,我这里 强烈建议 你马上用起来。如果你不知道如何入门,可以点击 这里 参考我的一些列文章,从《Keil MDK环境下Git入门指南》这篇文章开始。
我们可以从分支图中看出这这种关系,图中的每个黄色块都是一个 标签
,主要用来标识一个软件版本。
IPv4 冲突检测
这个带来了我期盼已久的 IPv4 冲突检测
功能。在这之前,如果要在项目中实现 IP 冲突检测,需要在 ARP 模块中增加、修改代码,这会带来问题,因为修改了 lwIP 的源码,这会让本地的 lwIP 版本与远程仓库中的 lwIP 版本不一致,当应用新版本 lwIP 时,需要记得再次修改 lwIP 源码。如果我不再维护这个项目,接收这个项目的人大概率不会注意到这个问题,这就相当于给项目挖了坑。现在,一切都好起来了,终于等来了官方支持。
2018 年 9 月,IPv4 冲突检测第一次加入到代码仓库,到 2023 年 9 月随正式版发布,用了 5 年时间。
IPv4 冲突介绍
IPv4 冲突
是指同一链路上的两台主机同时段使用相同的 IPv4 地址时,则一个或两个主机会出现问题。为了防止发生这种错误配置,主机可以在事后被动检测已发生的错误,以便主机或管理员可以响应以纠正问题,这就是 IPv4 冲突检测
功能。
冲突检测实现方式
RFC5227 定义了 IPv4 冲突检测的方法。lwIP-2.2.0-rc1 版本新增的 IPv4 冲突检测就是以 RFC5227 为依据编写的,对应代码保存在 acd.c
中,如下图所示:
IPv4 冲突检测用法
- 在
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 自动处理所有,不需要额外的操作。
可以看出,用法非常简单。
文章来源:https://www.toymoban.com/news/detail-671678.html
读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)
文章来源地址https://www.toymoban.com/news/detail-671678.html
到了这里,关于lwIP更新记10:IP 冲突检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!