获取和设置接口地址



有没有一种方法可以以家族无关的方式获取和设置接口上的IP地址?

我发现了关于getifaddrs的信息。是否有类似的东西,但用于设置地址,或者我需要使用iolt?

这是我的案例:我需要扩展IPv4应用程序管理接口,以支持IPv6地址。此应用程序将ioctl用于AF_INET。我的问题是,对我来说,为支持IPv6的接口添加/删除/状态的最佳方法是什么IPv6的另一个ioctl层,或者将IPv6的netlink与IPv4的ioctl混合?

谢谢!

无论如何我都会切换到netlink。原因:

  1. netlink允许在同一个接口上管理多个IP地址,没有所谓的"别名"等
  2. ioctl接口已经过时很长时间了
  3. 使用netlink进行异步状态监视非常简单:应该在NETLINK_ROUTE套接字上订阅所需的组,然后只订阅poll()+recv()

ifaddrmsg结构不是家族无关的,必须在消息中指定AF_INETAF_INET6作为家族,+IFA_ADDRESS和其他NLA大小取决于家族。但它可以在应用程序级别轻松管理。

对于C,有一个libnl库,对于Python——pyrote2。

最新更新