説明
getaddrinfo(3) の呼び出しでは、複数の答えが返る場合がある。 RFC 3484 によれば、 これらの答えは、 最も成功の可能性が高い答えがリストの先頭になるような順番に並び替えなければならない。 RFC には、 並び替えのアルゴリズムが書かれている。 しかしながら、 静的なルールが常に適切という訳ではない。 この理由から、 RFC では、 並び替え方法をシステム管理者が動的に変更できるようにすることも要求している。 glibc の実装では、 /etc/gai.conf ファイルでこれが実現できるようになっている。設定ファイルの各行は、キーワードとそのパラメータで構成される。 ホワイトスペースはどこにあっても全て無視される。 '#' で始まる行はコメントで、 無視される。
現在のところ、認識されるキーワードは以下の通りである。
- label netmask precedence
- 指定した値は RFC 3484 の並び替えで使用されるラベルテーブルに追加される。 設定ファイルに label 定義が一つでもあれば、デフォルトテーブルは使用されない。 デフォルトテーブルのすべてのラベル定義はきちんと管理されていれば、 重複が発生するはずだからである。 ラベル行では、 キーワードの後に、 ネットワークマスクとラベル値が含まれていなければならない。
- precedence netmask precedence
- このキーワードは label に似ているが、 指定された値を RFC 3484 で規定された優先度テーブルに追加する点が異なる。 繰り返しになるが、 設定ファイルに precedence が一つでもあれば、デフォルトテーブルは使用されない。
- reload <yes|no>
- このキーワードは、 設定ファイルが前回の読み出し以降に変更されているかをプロセスが確認するかを制御する。 値が "yes" であれば、 ファイルが再読み込みされる。 再読み込みはマルチスレッドアプリケーションで問題を起こす可能性があり、 一般にはよい考えとは言えない。 デフォルトは "no" である。
- scopev4 mask value
- IPv4 アドレス用の RFC 3484 スコープテーブルに別のルールを追加する。 デフォルトでは、 RFC 3438 のセクション 3.2 で説明されているスコープ ID が使用される。 これらのデフォルト値の変更が必要になることはまずないだろう。
ファイル
/etc/gai.conf例
RFC 3484 で規定されているデフォルトテーブルは、 以下の設定ファイルを指定するのと同じである。
label ::1/128 0 label ::/0 1 label 2002::/16 2 label ::/96 3 label ::ffff:0:0/96 4 precedence ::1/128 50 precedence ::/0 40 precedence 2002::/16 30 precedence ::/96 20 precedence ::ffff:0:0/96 10
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。