Získejte adresy IPv6 v linuxu pomocí ioctl
To pravděpodobně nebude fungovat.
Od man 7 netdevice
:
SIOCGIFCONF
Vrátí seznam adres rozhraní (přepravní vrstvy). To v současnosti znamená pouze adresy AF_INET (IPv4) rodina kvůli kompatibilitě.
[...]
POZNÁMKY
[...]
Lokální IPv6 adresy lze nalézt pomocí /proc/net nebo viartnetlink(7).
Ano, ten ioctl je starší a nevrátí IPv6. Každá platforma má jiný způsob, jak získat ty IPv6:
- Linux, pokud jste blázen, použijte NETLINK, použijte
getifaddrs
pokud máte nejasně nedávný glibc, jinak si přečtěte/proc/net/if_inet6
(např. na Androidu). - Darwin nebo FreeBSD:použijte
getifaddrs
. - Solaris, použijte
SIOCGLIFCONF
. - AIX, použijte
SIOCGIFCONF
který ve skutečnosti vrací adresy IPv4 a IPv6 (protože majísa_len
pole vstruct sockaddr
mohou to skutečně podporovat).