我正在使用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