以编程方式查询上次 DHCP 租用时间

以编程方式查询上次 DHCP 租用时间

我有一个 buildroot 嵌入式 Linux,我可以通过 C++ 程序更改以太网端口设置(即禁用、静态或 DHCP)。当切换到 DHCP 时,最好确定设备实际获得 DHCP 租约的时间(即时间戳)。
我怎样才能确定这一点?

轮询当前 IP 地址并等待更改不是一种选择。

答案1

您希望uhdcpc使用该--quit选项运行,因此它在获得版本后退出。检查程序的返回值是否为 != 0 以排除错误。

一旦成功返回,您就获得了租约。

如果您需要udhcpc作为守护进程运行(看起来很奇怪,您是管理接口的人,而不是管理接口的人udhcpc,所以您也可以在需要时手动更新租约),老实说,我只是pcap适当的UDP数据包,然后看看里面。

另外,运行--syslog至少能够检查何时出现严重错误。

想法:如果您正在编写一个网络管理框架,那么您就相当于第一百万次重新发明轮子。我会避免这样做——网络配置有足够多的极端情况、不利的或难以从使用过程中发现的情况中恢复。其他人之前已经解决过同样的问题。
对我来说,你正在做的事情听起来像是你的任务是重写ConnMan,这正是针对这种嵌入式设备网络控制的。它是自述文件可能会很有趣,即使只是作为你如何写东西的灵感。 (ConnMan 当然做的比您需要的更多,但您可以在编译之前禁用未使用的功能。)
我认为它做了正确的事情 – 处理 DHCP 的守护进程本质上与管理整个网络管理守护进程紧密耦合,以至于它们需要直接相互交谈(正如您所注意到的,因为您在获得租赁时间和持续时间方面存在问题!),或者完全是相同的过程。看看connmanctl(1)手册页了解您正在编写的网络控制系统的接口可能是什么样子。

相关内容