如何编程(C)知道给定接口是否具有静态地址或 dhcp 提供的地址?我可以看一下/var/db/dhclient.leases.<interface_name>
。有更好/更清洁的方式吗?我可以使用任何ioctl
吗?
答案 0 :(得分:2)
简短的回答是否定,没有。 dhcp客户端使用ifconfig使用的相同机制设置接口地址等。它没有留下特殊标志或其他指示告诉您接口是动态配置的。
我会检查/ etc /中的配置文件而不是租约,但是,是的,您将不得不做一些hackish来查找信息。
答案 1 :(得分:2)
阅读/etc/rc.conf
。查找以ifconfig
开头的行,并查看哪些行包含文本DHCP
。
这不会捕获通过手动运行dhclient
重新配置的接口。解析租约文件在这方面会更好,假设它的渗透允许你的程序读取它。
答案 2 :(得分:0)
除了roland和perry的精明建议之外,我想补充一点:如果rc.conf没有配置为使用dhcp,那并不意味着它没有从命令行调用。
如果你发现它正在运行,那么接口很可能就是它的地址。
pgrep dhclient