2010-07-08 3 views
9

J'attribue l'adresse IPv6 en utilisant l'appel système ioctl() de manière prégamentielle. Je veux savoir s'il y a un moyen, je peux trouver l'adresse IP assignée est provisoire/en double?Comment lire le drapeau TENTATIF de l'adresse IPv6?

Merci. Hôte: Énumérer les interfaces avec getifaddrs()

+0

Sur l'hôte ou le réseau? –

Répondre

1

(éditer) On dirait que vous devez appeler sysctl(NET_IPV6_OPT_DAD_ENABLE) avant getifaddrs()?

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

réseau: Envoyer un ping ICMP est la méthode typique mais pas infaillible qui utilisent des serveurs DHCP.

Il est supposé que si vous définissez l'adresse IP, vous implémentez une forme de DHCP et vous contrôlez toutes les adresses pour ce segment. Sinon, utilisez simplement la portée link-local déjà des adresses uniques.

+0

Merci pour votre réponse. Je vérifie sur l'hôte. J'attribue l'adresse IPv6 et je veux savoir si ce n'est pas une tentative/duplicata. La fonction getifaddrs() donne uniquement SIOCGIFFLAGS dans lequel IFA_F_TENTATIVE n'existe pas. La commande "ip" me dit si l'IP est provisoire en utilisant la commande "ip addr show Krishna

+0

Je passe par les sources du paquet iproute qui constitue" ip ", mais je n'ai pas eu de chance ...: - ( – Krishna

1

Vous pouvez lire le drapeau de l'adresse IPv6 TENTATIVE comme ci-dessous:

Indique les drapeaux qui sont fixés sur l'adresse de multidiffusion. À partir de la RFC 2373, le seul indicateur défini est le drapeau transitoire (T). L'indicateur T utilise le bit de poids faible du champ Drapeaux.

* 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. 
+0

) Salut, Je pense que cela fonctionne uniquement pour les adresses IPv6 multi-cast.Ce n'est pas pour les adresses Link-local, site-local et global, mais je suis capable d'utiliser netlink prises pour récupérer les drapeaux .. Cordialement, -Krishna – Krishna