gpt4 book ai didi

linux - 获取和设置接口(interface)地址

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:40 24 4
gpt4 key购买 nike

有没有办法以家庭不可知的方式在接口(interface)上获取和设置 IP 地址?

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

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

谢谢!

最佳答案

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

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

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

对于 C 有一个 libnl Python 库 — pyroute2 .

关于linux - 获取和设置接口(interface)地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26335392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com