检测 IP 是静态的还是从 busybox 上的 DHCP 获取
我正在研究运行 BusyBox 的嵌入式设备。
系统使用 ip 命令获取其地址。 我想从我的 C 程序中找出设备是否 ip 静态或从 DHCP 服务器接收。我该怎么做?
I am working on embedded device who run BusyBox.
The system is getting its address by using the ip command.
I want to figure out from my C program whether the device
ip static or received from DHCP server. How do I do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我不知道您的用户如何与您的嵌入式系统交互。但在我们的(相同的组件)上,我们有 CLI,可以在每个接口的 SHM 结构 (db) 中注册所选的 DHCP/STATIC 类型设置。
本质上,您需要跟踪接口的 IP 是如何设置的。
I don't know how your users interact with your embedded system. But on ours (same components) we have CLI that registers the chosen DHCP/STATIC type setting in a SHM struct (db) per interface.
Essentially, you need to keep track of how the IP of an interface was set.
dumpleases 命令应该显示当前的租约。我想如果你可以确定你有一个IP地址,但没有租约,那么该地址就是静态的。
The dumpleases command is supposed to show the current leases. I guess if you can determine that you have an IP address, but no lease, then the address is static.
看看 这个问题 并检查 IFF_DYNAMIC 标志 - 当 DHCP 在接口上处于活动状态时可能会设置该标志。
Take a look at this question and check the IFF_DYNAMIC flag - that may be set when DHCP is active on an interface.
如果你控制环境,我建议设置一个 env 变量,或者在设置 IP 地址时在可以统计的地方创建一个标志文件。
If you control the enviroment, I suggest setting an env variable, or creating a flag file somewhere you can stat, when the IP adress is set.