gai.conf -
getaddrinfo(3) 設定ファイル
getaddrinfo(3)
の呼び出しでは、複数の答えが返る場合がある。
RFC 3484 によれば、
これらの答えは、
最も成功の可能性が高い答えがリストの先頭になるような順番に並び替えなければならない。
RFC には、
並び替えのアルゴリズムが書かれている。
しかしながら、
静的なルールが常に適切という訳ではない。
この理由から、 RFC
では、
並び替え方法をシステム管理者が動的に変更できるようにすることも要求している。
glibc の実装では、
/etc/gai.conf
ファイルでこれが実現できるようになっている。
設定ファイルの各行は、キーワードとそのパラメーターで構成される。
ホワイトスペースはどこにあっても全て無視される。
'#'
で始まる行はコメントで、
無視される。
現在のところ、認識されるキーワードは以下の通りである。
-
label netmask precedence
- The value is added to the label table used in the
RFC 3484 sorting. If any label definition is present in the
configuration file, the default table is not used. All the label
definitions of the default table which are to be maintained have to be
duplicated. Following the keyword, the line has to contain a network mask
and a precedence value.
-
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
gai.conf ファイルは glibc
バージョン 2.5
以降でサポートされている。
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
getaddrinfo(3), RFC 3484
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。