具体的には、グローバルスコープの IPv6 アドレスで構成されたネットワーク インターフェイスがシステムにあるかどうかを確認する方法を探しています。ループバックおよびリンク スコープのアドレスは「カウントされません」。
私が達成したいgetaddrinfo()
のは、IPv6 アドレスを返すかどうかをAI_ADDRCONFIG
ヒント フラグと一致させることです。
を使用して IPv6 ループバック アドレス ("::1") を検索するコードを書くことで、これを行うことができますgetaddrinfo()
。しかし、これはかなり複雑なビルド手順のテストの一部であり、このかなり単純なことをテストするためだけに実行可能ファイルをビルドする必要がない方がはるかに簡単です。
これまでに見つけた最高のものは Linux でのみ機能しip
、最近のディストリビューションに付属のコマンドを使用します。
if ip -f inet6 -o addr | cut -f 9 -s -d' ' | grep global > /dev/null ; then
echo "IPv6 addresses configured continuing"
else
echo "No global IPv6 addresses configured - skipping test"
exit 0
fi
ただし、これは出力の現在の形式に依存しており、そこからの出力ip
が保証されているとは思えず、他のバージョンの Unix (FreeBSD など) には存在しません。
ifconfig が、さまざまな Unix バージョンで使用できるほど十分に類似した出力を提供するとは思いません。
他に不足しているツールはありますか?