RESOLVER(3) FreeBSD ライブラリ関数マニュアル RESOLVER(3)
名称
res_query, res_search, res_mkquery, res_send, res_init, dn_comp, dn_expand − リゾルバルーチン |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <sys/types.h> int |
res_query(const char *dname, int class, int type, u_char *answer,int anslen); int
res_search(const char *dname, int class, int type, u_char *answer, int anslen); int int int dn_comp(const char *exp_dn, u_char *comp_dn, int length, u_char **dnptrs, u_char **lastdnptr); int 解説 |
これらのルーチンは、インターネットドメインネームサーバを使用し、問い合わ せと応答メッセージの作成、送信、解釈を行います。 リゾルバルーチンが使用するグローバルな設定と状態の情報は、構造体 _res に 保存されます。ほとんどの値は、適切なデフォルト値になっているので無視でき ます。 _res.options に保存されるオプションは、 resolv.h で以下のように定 義されています。オプションは、有効なオプションのビット論理和をとった、単 純なビットマスクとして保存されています。 |
RES_INIT
初期ネームサーバアドレスとデフォルトドメイン名が初期化され ている場合は真です ( res_init() が呼び出された場合など)。 RES_DEBUG RES_AAONLY RES_USEVC RES_STAYOPEN RES_IGNTC RES_RECURSE RES_DEFNAMES RES_DNSRCH NOALIASES RES_USE_INET6 RES_USE_EDNS0 res_init() ルーチンは、設定ファイルを読み込み (設定ファイルが存在する場 合。 resolver(5) 参照)、デフォルトドメイン名、検索リスト、ローカルネーム サーバのインターネットアドレスを入手します。サーバが設定されていない場合 は、リゾルバを実行しているホストが試されます。現在のドメイン名は、設定 ファイルで指定されていない場合、ホスト名で定義されますが、環境変数 LOCALDOMAIN で上書きすることもできます。検索リストをプロセスごとに上書き する場合は、ブランクで区切られた複数のトークンをこの環境変数に含めます。 これは、設定ファイルの search コマンドに似ています。別の環境変数 ‘‘RES_OPTIONS’’ を設定すれば、特定の内部リゾルバオプションを上書きできま す。内部リゾルバオプションは、上書きされなければ、 _res 構造体のフィール ドを変更することで設定されるか、設定ファイルの options コマンドから継承さ れます。 ‘‘RES_OPTIONS’’ 環境変数のシンタックスについては、 resolver(5) を参照してください。通常の場合、初期化は以下のルーチンを初めて呼び出した ときに実行されます。 res_query() 関数は、サーバ問い合わせメカニズムのインタフェースを提供する もので、問い合わせの作成、作成された問い合わせのローカルサーバへの送信、 応答の待機、応答の予備チェックを行います。問い合わせは、完全な形でのドメ イン名 dname に対する、指定された type と class の情報を要求します。応答 メッセージは answer バッファに残され、呼び出し側が指定する anslen の長さ になっています。 res_search() ルーチンは、 res_query() と同じように問い合わせの作成と応答 の待機を行いますが、それに加えて RES_DEFNAMES と RES_DNSRCH オプションに よって制御されるデフォルトと検索規則も実装しています。このルーチンは最初 に成功した応答を返します。 残りのルーチンは、 res_query() が使用する低レベルルーチンです。 res_mkquery() 関数は、標準問い合わせメッセージを作成して buf に配置し、問 い合わせのサイズを返します。問い合わせが buflen より長い場合は -1 を返し ます。問い合わせタイプ op は、通常の場合 QUERY ですが、 〈arpa/nameser.h〉 で定義されているどの問い合わせタイプにもできます。問い合わせのドメイン名 は dname で指定します。 newrr は現在使用されていませんが、更新メッセージ を作成するためのものです。 res_send() ルーチンは、事前フォーマット済み問い合わせを送信し、応答を返し ます。 RES_INIT が設定されていない場合は res_init() を呼び出します。ロー カルネームサーバへの問い合わせの送信、およびタイムアウトと再試行の処理も 行います。応答メッセージの長さを返しますが、エラーがあった場合は -1 を返 します。 dn_comp() 関数は、ドメイン名 exp_dn を圧縮し、 comp_dn に保存します。圧縮 された名前のサイズを返しますが、エラーがあった場合は -1 を返します。 comp_dn が指す配列のサイズは length で指定します。圧縮の際、現在のメッ セージでそれまでに圧縮された名前を指すポインタ dnptrs の配列を使用しま す。最初のポインタはメッセージの最初を指し、リストは NULL で終わります。 配列の制限は lastdnptr で指定します。 dn_comp() の副作用は、名前が圧縮さ れたときにメッセージに挿入されるラベルのポインタのリストが更新されること です。 dnptr が NULL である場合、名前は圧縮されません。 lastdnptr が NULL である場合、ラベルのリストは更新されません。 dn_expand() エントリは、圧縮されたドメイン名 comp_dn を完全なドメイン名に 展開します。圧縮された名前は、問い合わせもしくは応答メッセージに含まれま す。 msg は、メッセージの最初を指すポインタです。展開された名前は、 exp_dn が示すサイズ 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.
歴史
res_query() 関数は 4.3BSD で登場しました。 FreeBSD 10.0 June 4, 1993 FreeBSD 10.0 |