名 前
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/ に 書 か れ て い る 。