获取和设置接口地址

问题描述 投票:1回答:1

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

我找到了关于getifaddrs。是否有类似的设置地址,或者我需要使用ioclt?

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

谢谢!

linux networking ioctl netlink
1个回答
0
投票

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

  1. netlink允许在同一个接口上管理多个IP地址,无需所谓的“别名”等。
  2. ioctl接口已经淘汰了很久
  3. 使用netlink的异步状态监控非常简单:一个应该在NETLINK_ROUTE套接字上订阅一个必需的组,然后只订阅poll() + recv()

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

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

© www.soinside.com 2019 - 2024. All rights reserved.