IPv6-Adressen unter Linux mit ioctl abrufen
Das wird wahrscheinlich nicht funktionieren.
Ab man 7 netdevice
:
SIOCGIFCONF
Gibt eine Liste von Schnittstellenadressen (Transportschicht) zurück. Damit sind derzeit nur Adressen des AF_INET gemeint (IPv4)-Familie für Kompatibilität.
[...]
HINWEISE
[...]
Lokale IPv6-IP-Adressen finden Sie über /proc/net oder viartnetlink(7).
Ja, dieses ioctl ist veraltet und gibt kein IPv6 zurück. Jede Plattform hat einen anderen Weg, um die IPv6 zu erhalten:
- Linux, verwenden Sie NETLINK, wenn Sie verrückt sind, verwenden Sie
getifaddrs
wenn Sie eine vage aktuelle glibc haben, lesen Sie andernfalls/proc/net/if_inet6
(z. B. auf Android). - Darwin oder FreeBSD:Verwenden Sie
getifaddrs
. - Solaris, verwenden Sie
SIOCGLIFCONF
. - AIX, verwenden Sie
SIOCGIFCONF
die tatsächlich IPv4- und IPv6-Adressen zurückgibt (weil sie einensa_len
haben Feld instruct sockaddr
sie können das tatsächlich unterstützen).