Manpages

名 前

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() 関 数 は 、 指 定 さ れ た typeclass の 完 全 修 飾 ド メ イ ン 名 (FQDN) name を 、 ネ ー ム サ ー バ ー へ 問 い 合 わ せ る 。 応 答 は 、 呼 び 出 し た 側 に よ っ て 用 意 さ れ る 長 さ anslenanswer バ ッ フ ァ ー に 残 さ れ る 。

res_search() 関 数 は 、 問 い 合 わ せ を 行 い res_query() 同 様 そ の 応 答 を 待 つ が 、 さ ら に デ フ ォ ル ト を 実 装 し て お り RES_DEFNAMESRES_DNSRCH に よ っ て 規 定 さ れ る 検 索 ル ー ル を 適 用 す る 。 (下 記 _res オ プ シ ョ ン の 説 明 を 参 照 )

res_querydomain() 関 数 は namedomain の 結 合 に res_query() を 用 い て 問 い 合 わ せ を 行 う 。 次 の 関 数 は 、 res_query() で 使 わ れ る 下 位 ル ー チ ン で あ る 。

res_mkquery() 関 数 は 、 ド メ イ ン 名 dname の 為 に 、 長 さ buflenbuf に 問 い 合 わ せ る メ ッ セ ー ジ を 作 成 す る 。 問 い 合 わ せ の 型 op は 通 常 QUERY だ が 、 <arpa/nameser.h> で 定 義 さ れ た 型 の ど れ で も 良 い 。 newrr は 現 在 使 用 さ れ て い な い 。

res_send() 関 数 は 、 長 さ msglenmsg に 決 め ら れ た 書 式 で 問 い 合 わ せ 、 answer に 長 さ anslen の 回 答 を 返 す 。 ま だ 呼 び 出 さ れ て い な け れ ば res_init() を 呼 び 出 す 。

dn_comp() 関 数 は ド メ イ ン 名 exp_dn を 圧 縮 し て 、 長 さ length の バ ッ フ ァ ー comp_dn に 保 存 す る 。 圧 縮 に は ポ イ ン タ ー 配 列 dnptrs を 用 い る 。 こ れ ら の ポ イ ン タ ー は 、 現 在 の メ ッ セ ー ジ の 中 に あ る 以 前 に 圧 縮 さ れ た 名 前 を 指 す 。 最 初 の ポ イ ン タ ー は メ ッ セ ー ジ の 冒 頭 を 指 し 、 そ の リ ス ト は NULL で 終 わ る 。 配 列 の 範 囲 は lastdnptr で 決 め ら れ る 。 dnptr が NULL な ら ば ド メ イ ン 名 は 圧 縮 さ れ な い 。 lastdnptr が NULL な ら ば 、 そ の ラ ベ ル の リ ス ト は ア ッ プ デ ー ト さ れ な い 。

dn_expand() 関 数 は 、 圧 縮 さ れ た ド メ イ ン 名 comp_dn か ら サ イ ズ が lengthexp_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/ に 書 か れ て い る 。