如何读取IPv6地址的TENTATIVE标志?

我正在使用ioctl()系统调用prragially分配ipv6地址。 我想知道是否有办法,我可以find分配的IP是暂定/重复?

谢谢。

主机:枚举与getifaddrs()的接口。

编辑 )看起来你需要在getifaddrs()之前调用sysctl(NET_IPV6_OPT_DAD_ENABLE) getifaddrs()

http://lwn.net/Articles/218597/

网络:发送ICMP ping是DHCP服务器使用的典型但不是简单的方法。

假设你设置了IP,那么你正在实现一种DHCP的形式,并控制该段的所有地址。 否则,只需使用链接本地范围已经唯一的地址。

您可以阅读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. 

获取地址状态的一种方法是通过RTM_GETADDR消息使用rtnetlink库,该消息检索包含ifa_flags的ifaddrmsg结构。 查看这里的手册页获取信息:

http://man7.org/linux/man-pages/man7/rtnetlink.7.html

if_addr.h中显示了标志和ifaddrmsg结构:

https://github.com/torvalds/linux/blob/master/include/uapi/linux/if_addr.h