Provided by: manpages-ja-dev_0.5.0.0.20180315+dfsg-1_all
名前
res_init, res_query, res_search, res_querydomain, res_mkquery, res_send, dn_comp, dn_expand - レゾルバルーチン
書式
#include <netinet/in.h> #include <arpa/nameser.h> #include <resolv.h> extern struct __res_state _res; int res_init(void); int res_query(const char *dname, int class, int type, unsigned char *answer, int anslen); int res_search(const char *dname, int class, int type, unsigned char *answer, int anslen); int res_querydomain(const char *name, const char *domain, int class, int type, unsigned char *answer, int anslen); int res_mkquery(int op, const char *dname, int class, int type, const unsigned char *data, int datalen, const unsigned char *newrr, unsigned char *buf, int buflen); int res_send(const unsigned char *msg, int msglen, unsigned char *answer, int anslen); int dn_comp(const char *exp_dn, unsigned char *comp_dn, int length, unsigned char **dnptrs, unsigned char **lastdnptr); int dn_expand(const unsigned char *msg, const unsigned char *eomorig, const unsigned char *comp_dn, char *exp_dn, int length); -lresolv でリンクする。
説明
これらの関数はインターネットのドメインネームサーバーに問い合わせ、 その応答を解釈する。 res_init() 関数は、デフォルトのドメイン名、検索順、ネームサーバー アドレスを得るために設 定ファイル (resolv.conf(5) 参照) を読む。 もしサーバーが示されていなければローカルホストを 試す。 ドメインが示されていなければローカルホストに付けられたドメインを用いる。 環境変数 LOCALDOMAIN でオーバーライドできる。 res_init() は、後述する関数のどれかが最初に呼び出さ れた時、その関数 から実行される。 res_query() 関数は、指定された type と class の 完全修飾ドメイン名 (FQDN) name を、ネーム サーバーへ問い合わせる。 応答は、呼び出した側によって用意される長さ anslen の answer バッ ファーに残される。 res_search() 関数は、問い合わせを行い res_query() 同様その応答を 待つが、さらにデフォル トを実装しており RES_DEFNAMES と RES_DNSRCH によって規定される検索ルールを適用する。 (下記 _res オプションの説明を参照) res_querydomain() 関数は name と domain の結合に res_query() を用いて問い合わせを行う。 次の関数は、 res_query() で使われる下位ルーチンである。 res_mkquery() 関数は、ドメイン名 dname の為に、長さ buflen の buf に問い合わせるメッセー ジを作成する。 問い合わせの型 op は通常 QUERY だが、 <arpa/nameser.h> で定義された型のどれ でも良い。 newrr は現在使用されていない。 res_send() 関数は、長さ msglen の msg に決められた書式 で問い合わせ、answer に長さ anslen の回答を返す。 まだ呼び出されていなければ res_init() を呼び出す。 dn_comp() 関数はドメイン名 exp_dn を圧縮して、長さ length のバッファー comp_dn に保存す る。 圧縮にはポインター配列 dnptrs を用いる。 これらのポインターは、現在のメッセージの中に ある以前に圧縮された名前を指す。 最初のポインターはメッセージの冒頭を指し、そのリストは NULL で終わる。 配列の範囲は lastdnptr で決められる。 dnptr が NULL ならばドメイン名は圧縮 されない。 lastdnptr が NULL ならば、そのラベルのリストはアップデートされない。 dn_expand() 関数は、圧縮されたドメイン名 comp_dn からサイズ が length の exp_dn バッ ファーに正式なドメイン名を展開する。 その圧縮された名前は、問い合わせ、または応答メッセー ジに含まれていて、 msg がメッセージの冒頭を指す。 レゾルバルーチンは、<resolv.h> に定義された _res 構造体に 含まれている全体的な設定と状態の 情報を使用する。 通常ユーザーに操作できる項目は _res.options だけである。 この項目は以下の オプションのビット単位の論理和にできる。 RES_INIT res_init() が呼び出されていれば真。 RES_DEBUG デバッグ情報を表示する。このオプションは、 glibc がデバッグを有効にしてコンパイルさ れている場合にのみ利用できる。 デフォルトでは glibc のデバッグは有効になっていな い。 RES_AAONLY 権威付けされた (authoritative) 回答のみ受け入れる。 res_send() は、最終的に権威付け された回答を得られるか、エラーが返される まで続行する。 [現在実装されていない] RES_USEVC 問い合わせに UDP データグラムではなく TCP 接続を用いる。 RES_PRIMARY プライマリドメインネームサーバーのみ問い合わせる。 RES_IGNTC 切り詰めエラー (truncation error) を無視する。TCP でリトライしない。 [現在実装され ていない] RES_RECURSE 再帰要求 (recursion desired) ビットを問い合わせに設定する。 再帰は res_send() では なくドメインネームサーバーによって行われる。 [デフォルトで有効] RES_DEFNAMES 設定されていれば、 res_search() はデフォルトのドメイン名を一部分 のみからなる名 前、すなわちドットを含まない名前に付け加える。 [デフォルトで有効] RES_STAYOPEN 問い合わせ中に TCP 接続を保つため RES_USEVC と共に用いられる。 RES_DNSRCH 設定されていれば、 res_search() は現在のドメインおよび親ドメインの ホスト名を探 す。このオプションは gethostbyname(3) で用いられる。 [デフォルトで有効] このリストは完全なものではない。 resolv.conf(5) には他にいくつかのフラグが記載されている。
返り値
res_init() 関数は成功すれば 0 を、エラーが発生すれば -1 を返す。 res_query(), res_search(), res_querydomain(), res_mkquery(), res_send() 関数は応答の長さ を返す。 また、エラーが発生すれば -1 を返す。 dn_comp() と dn_expand() 関数は圧縮されたドメイン名の長さを返す。 また、エラーが発生すれ ば -1 を返す。
ファイル
/etc/resolv.conf レゾルバ設定ファイル /etc/host.conf レゾルバ設定ファイル
準拠
4.3BSD.
関連項目
gethostbyname(3), resolv.conf(5), resolver(5), hostname(7), named(8)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。