<ブロック引用>
Linux
ioctl を使用して Linux で IPv6 アドレスを取得する
これはおそらくうまくいきません。
man 7 netdevice から :
SIOCGIFCONF
インターフェイス (トランスポート層) アドレスのリストを返します。これは現在、AF_INET のアドレスのみを意味します (IPv4) ファミリとの互換性。
[...]
注意
[...]
ローカル IPv6 IP アドレスは、/proc/net または viartnetlink(7) で見つけることができます。
はい、その ioctl はレガシーであり、IPv6 を返しません。プラットフォームごとに、IPv6 を取得する方法が異なります:
- Linux、頭がおかしいなら NETLINK を使って、
getifaddrsを使って 漠然と最近の glibc をお持ちの場合、それ以外の場合は/proc/net/if_inet6をお読みください (例:Android) - Darwin または FreeBSD:
getifaddrsを使用 . - Solaris、
SIOCGLIFCONFを使用 . - AIX、
SIOCGIFCONFを使用 実際にIPv4およびIPv6アドレスを返します(sa_lenがあるため)struct sockaddrのフィールド 彼らは実際にそれをサポートできます)。