获取和设置接口地址

时间:2014-10-13 08:05:27

标签: linux networking ioctl netlink

有没有办法以家庭无关的方式在接口上获取和设置IP地址?

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

  1. netlink允许在同一个界面上管理多个IP地址,无需所谓的“别名”等。
  2. ioctl界面已经淘汰了很长时间
  3. 使用netlink进行异步状态监控非常简单:应该在NETLINK_ROUTE套接字上订阅所需的组,然后只需poll() + recv()
  4. ifaddrmsg结构与家庭无关,必须在消息中指定AF_INETAF_INET6作为一个系列,+ IFA_ADDRESS并且其他NLA大小取决于家庭。但它可以在应用程序级别轻松管理。

    对于C,有一个libnl库,用于Python - pyroute2