Sto assegnando l'indirizzo ipv6 usando la chiamata di sistema ioctl() prgramticamente. Voglio sapere se c'è un modo, posso trovare l'ip assegnato è provvisorio/duplicato?Come leggere la bandiera TENTATIVA dell'indirizzo IPv6?
Grazie.
Sto assegnando l'indirizzo ipv6 usando la chiamata di sistema ioctl() prgramticamente. Voglio sapere se c'è un modo, posso trovare l'ip assegnato è provvisorio/duplicato?Come leggere la bandiera TENTATIVA dell'indirizzo IPv6?
Grazie.
Host: Enumerazione delle interfacce con getifaddrs()
.
(modifica) Sembra che è necessario chiamare sysctl(NET_IPV6_OPT_DAD_ENABLE)
prima getifaddrs()
?
http://lwn.net/Articles/218597/
rete: Invia un ping ICMP è il tipico, ma non ingannare metodo di prova che utilizzano server DHCP.
Si presume che se si sta impostando l'IP, si sta implementando una forma di DHCP e si controllano tutti gli indirizzi per quel segmento. Altrimenti usa semplicemente gli indirizzi già univoci del link-local scope.
Grazie per la risposta. Sto controllando l'host. Assegno l'indirizzo IPv6 e poi voglio sapere se non è un tentativo/duplicato. La funzione getifaddrs() fornisce solo SIOCGIFFLAGS in cui IFA_F_TENTATIVE non esiste. Il comando "ip" mi dice se l'IP è provvisorio usando il comando "ip addr show
Sto passando attraverso i sorgenti del pacchetto iproute che costituisce" ip ". Non ho avuto fortuna se ...: - ( – Krishna
Si può leggere la bandiera sperimentale di Indirizzo IPv6, come di seguito:
Indica le bandiere che sono impostati sull'indirizzo multicast. A partire da RFC 2373, l'unica bandiera definita è il flag Transient (T). La bandiera T usa il bit di basso ordine del campo Flags.
* 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.
Ciao, Grazie per la risposta .Penso che funzioni solo per indirizzi IPv6 multi-cast. Non è per indirizzi locali, locali e globali di Link, ma sono in grado di usare netlink socket per recuperare le bandiere però. Cordiali saluti, -Krishna – Krishna
Un modo per ottenere lo stato di l'indirizzo è quello di utilizzare la libreria rtnetlink tramite il messaggio RTM_GETADDR che recupera la struttura ifaddrmsg che contiene ifa_flags. Guardate la pagina man qui per informazioni:
http://man7.org/linux/man-pages/man7/rtnetlink.7.html
le bandiere e ifaddrmsg struttura sono mostrati in if_addr.h:
https://github.com/torvalds/linux/blob/master/include/uapi/linux/if_addr.h
Sulla host o la rete? –