我正在使用 ioctl() 系统调用 prgramtically 分配 ipv6 地址。我想知道是否有办法,我可以找到分配的 ip 是暂定/重复的?
谢谢。
您可以阅读 IPv6 地址的 TENTATIVE 标志,如下所示:
指示在多播地址上设置的标志。从 RFC 2373 开始,唯一定义的标志是瞬态 (T) 标志。T 标志使用标志字段的低位。
* If 0, the multicast address is a permanently assigned, well-known multicast address allocated by the Internet Assigned Numbers Authority (IANA).
* If 1, the multicast address is a not permanently assigned, or transient.
主持人:用 枚举接口getifaddrs()
。
(编辑)看起来你需要sysctl(NET_IPV6_OPT_DAD_ENABLE)
之前打电话getifaddrs()
?
http://lwn.net/Articles/218597/
网络:发送 ICMP ping 是 DHCP 服务器使用的典型但并非万无一失的方法。
假设如果您正在设置 IP,那么您正在实施一种 DHCP 形式并且您控制该网段的所有地址。否则,只需使用链接本地范围已经唯一的地址。
获取地址状态的一种方法是通过 RTM_GETADDR 消息使用 rtnetlink 库,该消息检索包含 ifa_flags 的 ifaddrmsg 结构。请查看此处的手册页以获取信息:
http://man7.org/linux/man-pages/man7/rtnetlink.7.html
标志和 ifaddrmsg 结构显示在 if_addr.h 中:
https://github.com/torvalds/linux/blob/master/include/uapi/linux/if_addr.h