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

10

我正在使用ioctl()系统调用程序化地分配ipv6地址。 我想知道是否有一种方法可以确定所分配的IP是暂定的/重复的?

谢谢。

3个回答

1

主机:使用getifaddrs()枚举接口。

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

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

网络:发送ICMP ping是DHCP服务器使用的典型但不是绝对可靠的方法。

假定您正在设置IP,则意味着您正在实现某种形式的DHCP,并且您控制该段所有地址。否则,只需使用本地链路范围内已唯一的地址。


感谢您的回复。我正在检查主机。我分配IPv6地址,然后想知道它是否不是暂时性/重复的。 getifaddrs()函数只提供SIOCGIFFLAGS,其中IFA_F_TENTATIVE不存在。使用“ip”命令并输入“ip addr show <interface name>”,可以告诉我IP是否为暂时性的。 - Krishna
我正在查看iproute软件包的源代码,其中包括“ip”。可惜没有什么进展... :-( - Krishna

1

1
你可以如下读取IPv6地址的TENTATIVE标志:
指示设置在多播地址上的标志。根据RFC 2373,唯一定义的标志是瞬态(T)标志。 T标志使用Flags字段的低位bit。
* 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.

你好,感谢您的回复。 我认为,这仅适用于多播IPv6地址。我猜它不适用于链路本地、站点本地和全局地址。但是,我可以使用netlink套接字检索标志。问候, -Krishna - Krishna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接