Ottieni indirizzi IPv6 in Linux usando ioctl
Questo probabilmente non funzionerà.
Da man 7 netdevice
:
SIOCGIFCONF
Restituisce un elenco di indirizzi di interfaccia (livello di trasporto). Ciò significa attualmente solo gli indirizzi di AF_INET (IPv4) per compatibilità.
[...]
NOTE
[...]
Gli indirizzi IP IPv6 locali possono essere trovati tramite /proc/net o viartnetlink(7).
Sì, quell'ioctl è legacy e non restituirà IPv6. Ogni piattaforma ha un modo diverso di ottenere quelli IPv6:
- Linux, usa NETLINK se sei pazzo, usa
getifaddrs
se hai una glibc vagamente recente, altrimenti leggi/proc/net/if_inet6
(ad esempio su Android). - Darwin o FreeBSD:usa
getifaddrs
. - Solaris, usa
SIOCGLIFCONF
. - AIX, usa
SIOCGIFCONF
che in realtà restituisce gli indirizzi IPv4 e IPv6 (poiché hanno unsa_len
campo instruct sockaddr
possono effettivamente supportarlo).