RESOLVER
Section: Linux Programmer's Manual (3)
Updated: 2004-10-31
Index
JM Home Page
roff page
名前
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 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, char *data, int datalen, struct rrec *newrr,
char *buf, int buflen);
int res_send(const char *msg, int msglen, char *answer,
- int anslen);
int dn_comp(unsigned char *exp_dn, unsigned char *comp_dn,
- int length, unsigned char **dnptrs, unsigned char *exp_dn,
unsigned char **lastdnptr);
int dn_expand(unsigned char *msg, unsigned char *eomorig,
- unsigned char *comp_dn, unsigned 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
-
デバッグ・メッセージを出力する。
- 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)
で用いられる。
[デフォルトで有効]
返り値
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),
resolver(5),
hostname(7),
resolv.conf(5),
named(8)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- ファイル
-
- 準拠
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:59 GMT, November 19, 2007