3

我如何以编程方式(C)知道给定接口是否具有静态地址或由dhcp提供的地址?我可以看看/var/db/dhclient.leases.<interface_name>。有更好/更清洁的方法吗?有什么ioctl我可以用的吗?

4

3 回答 3

2

简短的回答是否定的,没有。dhcp 客户端使用 ifconfig 使用的相同机制设置接口地址等。没有特殊标志或其他指示可以告诉您接口是动态配置的。

我会检查 /etc/ 中的配置文件而不是租约,但是是的,您将不得不做一些骇人听闻的事情来找出信息。

于 2012-02-28T23:16:53.633 回答
2

阅读/etc/rc.conf。查找以 开头的行ifconfig并查看其中哪些包含文本DHCP

这不会捕获通过dhclient手动运行重新配置的接口。在这方面解析租约文件会更好,假设它的权限允许您的程序读取它。

于 2012-02-29T18:27:20.070 回答
0

除了 roland 和 perry 的精明建议,我还要补充一点:如果 rc.conf 未配置为使用 dhcp,那并不意味着它不是从命令行调用的。

如果您看到它正在运行,那么很有可能就是接口获取地址的地方。

pgrep dhclient 
于 2012-03-02T20:56:50.123 回答