RESOLVER
Section: C Library Functions (3)
索引
jman
BSD mandoc
索引
名称
res_query
res_search
res_mkquery
res_send
res_init
dn_comp
dn_expand
- リゾルバルーチン
索引
ライブラリ
Lb libc
索引
書式
In sys/types.h
In netinet/in.h
In arpa/nameser.h
In resolv.h
Ft int
Fo res_query
Fa const char *dname
Fa int class
Fa int type
Fa u_char *answer
Fa int anslen
Fc Ft int
Fo res_search
Fa const char *dname
Fa int class
Fa int type
Fa u_char *answer
Fa int anslen
Fc Ft int
Fo res_mkquery
Fa int op
Fa const char *dname
Fa int class
Fa int type
Fa const u_char *data
Fa int datalen
Fa const u_char *newrr_in
Fa u_char *buf
Fa int buflen
Fc Ft int
Fo res_send
Fa const u_char *msg
Fa int msglen
Fa u_char *answer
Fa int anslen
Fc Ft int
Fn res_init
Fo dn_comp
Fa const char *exp_dn
Fa u_char *comp_dn
Fa int length
Fa u_char **dnptrs
Fa u_char **lastdnptr
Fc Ft int
Fo dn_expand
Fa const u_char *msg
Fa const u_char *eomorig
Fa const u_char *comp_dn
Fa char *exp_dn
Fa int length
Fc
索引
解説
これらのルーチンは、インターネットドメインネームサーバを使用し、
問い合わせと応答メッセージの作成、送信、解釈を行います。
リゾルバルーチンが使用するグローバルな設定と状態の情報は、構造体
_res
に保存されます。
ほとんどの値は、適切なデフォルト値になっているので無視できます。
_res.options
に保存されるオプションは、
resolv.h
で以下のように定義されています。
オプションは、有効なオプションのビット論理和をとった、
単純なビットマスクとして保存されています。
- RES_INIT
-
初期ネームサーバアドレスとデフォルトドメイン名が初期化されている場合は
真です (
Fn res_init
が呼び出された場合など)。
- RES_DEBUG
-
デバッグメッセージを出力します。
- RES_AAONLY
-
信頼できる応答のみを受け入れます。
このオプションを使用した場合、信頼できる応答かエラーが見つかるまで
Fn res_send
を続ける必要があります。
現在のところ、これは実装されていません。
- RES_USEVC
-
UDP データグラムの代わりに
TCP
接続を問い合わせに使用します。
- RES_STAYOPEN
-
RES_USEVC
とともに使用し、問い合わせと問い合わせの間も
TCP
接続を開いたままに保ちます。
多くの問い合わせを定期的に行うプログラムのみで便利です。
通常の使用には
UDP
を使うべきです。
- RES_IGNTC
-
現在は使用されません (トランケーションエラーを無視します、すなわち、
TCP
で再試行しません)。
- RES_RECURSE
-
問い合わせの反復要求ビットを設定します。
これがデフォルトです (
Fn res_send
は反復問い合わせを行なわず、ネームサーバが反復を処理することを期待します)。
- RES_DEFNAMES
-
設定すると、
Fn res_search
がシングルコンポーネント名 (ドットを含まない名前) に
デフォルトのドメイン名を追加するようになります。
このオプションはデフォルトで有効になっています。
- RES_DNSRCH
-
このオプションを設定すると、
Fn res_search
が、現在のドメインと親ドメインでホスト名を検索するようになります。
hostname(7)
を参照してください。
これは、標準ホスト検索ルーチン
gethostbyname(3)
によって使用されます。
このオプションはデフォルトで有効になっています。
- NOALIASES
-
このオプションは、
``HOSTALIASES
''
環境変数によって制御されるユーザレベルのエイリアシング機能を無効にします。
ネットワークデーモンでは、このオプションを設定する必要があります。
- RES_USE_INET6
-
IPv6 のみのアプリケーションのサポートを有効にします。
IPv4 アドレスは IPv4 射影アドレスとして返されるようになります。
たとえば、
10.1.1.1
は
::ffff:10.1.1.1
のように返されます。
このオプションは、特定のカーネルコンフィギュレーションの場合にだけ意味が
あります。
- RES_USE_EDNS0
-
EDNS0 拡張の OPT pseudo-RR のサポートを有効にします。
このオプションにより、リゾルバコードは DNS 問い合わせに OPT pseudo-RR を
加えて、こちらの受け取りバッファの大きさを通知します。
このオプションにより、DNS サーバはデフォルトでない大きさの受け取りバッファを
利用できるので、より大きな応答を送ることができるようになります。
EDNS0 拡張されたDNS 問い合わせパケットは非 EDNS0 DNS サーバとは
互換性がありません。
Fn res_init
ルーチンは、設定ファイルを読み込み (設定ファイルが存在する場合。
resolver(5)
参照)、デフォルトドメイン名、検索リスト、ローカルネームサーバの
インターネットアドレスを入手します。
サーバが設定されていない場合は、リゾルバを実行しているホストが試されます。
現在のドメイン名は、設定ファイルで指定されていない場合、
ホスト名で定義されますが、環境変数
LOCALDOMAIN
で上書きすることもできます。
検索リストをプロセスごとに上書きする場合は、
ブランクで区切られた複数のトークンをこの環境変数に含めます。
これは、設定ファイルの
search
コマンドに似ています。
別の環境変数
``RES_OPTIONS
''
を設定すれば、特定の内部リゾルバオプションを上書きできます。
内部リゾルバオプションは、上書きされなければ、
_res
構造体のフィールドを変更することで設定されるか、設定ファイルの
options
コマンドから継承されます。
``RES_OPTIONS
''
環境変数のシンタックスについては、
resolver(5)
を参照してください。
通常の場合、初期化は以下のルーチンを初めて呼び出したときに実行されます。
Fn res_query
関数は、サーバ問い合わせメカニズムのインタフェースを提供するもので、
問い合わせの作成、作成された問い合わせのローカルサーバへの送信、応答の待機、
応答の予備チェックを行います。
問い合わせは、完全な形でのドメイン名
Fa dname
に対する、指定された
Fa type
と
Fa class
の情報を要求します。
応答メッセージは
Fa answer
バッファに残され、呼び出し側が指定する
Fa anslen
の長さになっています。
Fn res_search
ルーチンは、
Fn res_query
と同じように問い合わせの作成と応答の待機を行いますが、それに加えて
RES_DEFNAMES
と
RES_DNSRCH
オプションによって制御されるデフォルトと検索規則も実装しています。
このルーチンは最初に成功した応答を返します。
残りのルーチンは、
Fn res_query
が使用する低レベルルーチンです。
Fn res_mkquery
関数は、標準問い合わせメッセージを作成して
Fa buf
に配置し、問い合わせのサイズを返します。
問い合わせが
Fa buflen
より長い場合は -1 を返します。
問い合わせタイプ
Fa op
は、通常の場合
QUERY
ですが、
Aq Pa arpa/nameser.h
で定義されているどの問い合わせタイプにもできます。
問い合わせのドメイン名は
Fa dname
で指定します。
Fa newrr
は現在使用されていませんが、更新メッセージを作成するためのものです。
Fn res_send
ルーチンは、事前フォーマット済み問い合わせを送信し、応答を返します。
RES_INIT
が設定されていない場合は
Fn res_init
を呼び出します。
ローカルネームサーバへの問い合わせの送信、およびタイムアウトと
再試行の処理も行います。
応答メッセージの長さを返しますが、エラーがあった場合は -1 を返します。
Fn dn_comp
関数は、ドメイン名
Fa exp_dn
を圧縮し、
Fa comp_dn
に保存します。
圧縮された名前のサイズを返しますが、エラーがあった場合は -1 を返します。
Fa comp_dn
が指す配列のサイズは
Fa length
で指定します。
圧縮の際、現在のメッセージでそれまでに圧縮された名前を指すポインタ
Fa dnptrs
の配列を使用します。
最初のポインタはメッセージの最初を指し、リストは
NULL
で終わります。配列の制限は
Fa lastdnptr
で指定します。
Fn dn_comp
の副作用は、名前が圧縮されたときにメッセージに挿入されるラベルのポインタの
リストが更新されることです。
dnptr
が
NULL
である場合、名前は圧縮されません。
Fa lastdnptr
が
NULL
である場合、ラベルのリストは更新されません。
Fn dn_expand
エントリは、圧縮されたドメイン名
Fa comp_dn
を完全なドメイン名に展開します。
圧縮された名前は、問い合わせもしくは応答メッセージに含まれます。
Fa msg
は、メッセージの最初を指すポインタです。
展開された名前は、
Fa exp_dn
が示すサイズ
Fa length
のバッファに配置されます。
圧縮された名前のサイズが返されますが、
エラーがあった場合は -1 が返されます。
索引
関連ファイル
- /etc/resolv.conf
-
設定ファイル。
resolver(5)
を参照のこと。
索引
関連項目
gethostbyname(3),
resolver(5),
hostname(7),
named(8)
RFC1032 ,
RFC1033 ,
RFC1034 ,
RFC1035 ,
RFC974
-
"Name Server Operations Guide for BIND"
索引
歴史
Fn res_query
関数は
BSD 4.3
で登場しました。
索引
Index
- 名称
-
- ライブラリ
-
- 書式
-
- 解説
-
- 関連ファイル
-
- 関連項目
-
- 歴史
-
Time: 07:07:05 GMT, January 12, 2009