2

具体的には、グローバルスコープの 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 バージョンで使用できるほど十分に類似した出力を提供するとは思いません。

他に不足しているツールはありますか?

4

1 に答える 1

0

今のところ、少なくとも v6 接続があるかどうかを確認する良い方法は、次の結果を確認することです。

ping6 -c 10 ipv6.google.com

しかし、それはクラッジです。しかし、ある意味では、ほとんどのユニバースで動作するはずです。

于 2012-07-13T02:10:28.440 に答える