要设置静态IP,我们需要Linux Ioctls调用,通过它我们可以设置IP,网关,广播。 我们是否对DHCP有类似的ioctl调用?
答案 0 :(得分:1)
DHCP是协议,而不是“动作”。 DHCP指定主机应如何“枚举ip”。
如果要使用DHCP协议触发ip枚举(我的意思是将DHCPDISCOVER或DHCPREQUEST发送到网络,然后对响应进行操作),则没有ioctl命令。对于使用DHCP协议以及进行IP枚举和分配,应响应称为“ dhcp客户端”的用户空间应用程序,例如dhcpcd或systemd-networkd或dhclient或NetworkManager。
ioctl
对流执行各种操作,通常ioctl
被实现为对内核的调用。内核没有“ dhcp客户端”,即。客户端是在用户端实现的。内核不负责与DHCP相关的操作。没有与DHCP相关的操作的ioctl调用。有ioctl_list可以签出。
如果要使用C触发DHCP枚举,则需要识别系统使用的dhcp客户端,然后通知它/强制其执行您请求的操作。或者,您可以编写自己的dhcp客户端。在我的系统上,我使用
NetworkManager。由于我没有时间学习如何使用DBUS与NetworkManager进行通信,并且我的系统上安装了nmcli工具,因此我可以从C调用system以强制在系统上进行DHCP租约续订:system("nmcli con down id MY_WIFI_NAME; nmcli con up id MY_WIFI_NAME;");
。