我开发了Linux设备驱动程序,除其他外,该驱动程序在实时嵌入式系统中架起了专用和公用网络的桥梁,以提供管理流量的路径。
我知道可以使用ioctl call从用户空间向内核询问网络设备的ip地址,但是我需要能够在设备驱动程序中进行操作,并且理想情况下会被告知该ip地址已更改而无需轮询,或者最好还是直接管理更改地址的过程。
当前,通过侦听DHCP和ARP通知设备地址更改,驱动程序通过了DHCP和ARP,但是它们没有任何有意义的方式进行管理。但是,这是一个笨拙的解决方案。
设备的公共端可通过操作系统访问,并且可以通过调用ifconfig等来更改IP。如果为设备分配了与网络无关的静态IP,则最终可以解决此问题当通信失败时,但这并不理想。
驱动程序已经提供了许多ioctl处理程序,是否可以提供一种方法来直接将ip地址分配给设备,如果可以,它需要管理哪些接口?
我浏览了net_device结构,但找不到与IP地址相关的任何内容,也找不到在线有关设备驱动程序这方面的任何文档。
谢谢
有一个netdev通知程序,您可以register to。根据您的情况,您将注册到NETDEV_CHANGEADDR事件(或NETDEV_PRE_CHANGEADDR
,取决于您的使用情况)。