Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ resolver(3) — NEWS-os 3.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

named(8)

resolver(5)

RESOLVER(3)  —  UNIX Programmer’s Manual

名称

res_mkquery, res_send, res_init, dn_comp, dn, expand − 解析ルーチン

形式

#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>

res_mkquery(op, dname, class, type, data, datalen, newrr, buf, buflen)
int op;
char ∗dname;
int class, type;
char ∗data;
int datalen;
struct rrec ∗newrr;
char ∗buf;
int buflen;

res_send(msg, msglen, answer, anslen)
char ∗msg;
int msglen;
char ∗answer;
int anslen;

res_init()

dn_comp(exp_dn, comp_dn, length, dnptrs, lastdnptr)
char ∗exp_dn, ∗comp_dn;
int length;
char ∗∗dnptrs, ∗∗lastdnptr;

dn_expand(msg, eomorig, comp_dn, exp_dn, length)
char ∗msg, ∗eomorig, ∗comp_dn, exp_dn;
int length;

解説

これらのルーチンを 使用して、 インターネットドメインのネームサーバへの、 パケットを 作成、 送信および解釈します。 解析ルーチンで使用するグローバル情報は、 変数 _res に保存されます。 この値のほとんどは適切なデフォルト値なので、 無視することができます。 _res.options に格納されるオプションは resolv.h で定義され、 次に述べるとおりです。 また、 オプションは、 単一のビットを マスクしたもので、 そのために論理和がとれます。

RES_INT
イニシャルネームサーバのアドレスとデフォルトのドメイン名が 初期設定されている場合に、真。 (例えば、 res_init がすでに呼び出されている場合。)

RES_DEBUG
デバッグ用メッセージを出力する。

RES_AAONLY
信頼できる回答のみを受け入れる。 res_send は、 信頼できる回答が見つかるか、 あるいはエラーを検出するまで続けられる。 現在、これは実装されていない。

RES_USEVC
問い合わせのために、 UDP の代わりに、 TCP 接続を使用する。

RES_STAYOPEN
RES_USEVC と共に使って、 問い合わせの間、 オープンした TCP 接続を保存する。 これは、 定期的に大量の問い合わせを 出すプログラムについてのみ有用です。 また、 UDP はノーマルモードで使われるべきです。

RES_IGNTC
現在使用されていません(これは、トランケーションエラーを 無視するもので、 例えば、 TCP ではリトライしません)。

RES_RECURSE
問い合わせ中は、 recoursion に bit をセットします。 これは、 デフォルトです (res_send は、 ネームサーバが再帰を扱うのを除いて、 問い合わせを繰り返しません)。

RES_DEFNAMES
デフォルトのドメイン名を、 単一ラベルの問い合わせに付け加える。 これは、 デフォルトです。

res_init

は、 初期設定ファイルを読み込み、 デフォルトのドメイン名と、 ネームサーバが最初に走行するイニシャルホストのインターネットアドレスを 得ます。 この回線が存在しない場合、 解析ルーチンが走行するホストのインターネットアドレスで試まれます。 res_mkquery は、 標準の問い合わせメッセージを作成し、 buf に格納します。 また、 res_mkquery は、 問い合わせのサイズを返しますが、 そのサイズが buflen より大きい場合は、−1 を返します。 通常、 op は QUERY ですが、 nameser.h で定義される問い合わせのタイプのどれかにすることができます。 dname は、 ドメイン名です。 dname が単一ラベルで構成され、 RES_DEFNAMES フラグが許可の状態である場合(デフォルト)、 dname は現在のドメイン名に付け加えられます。 現在のドメイン名は、 システムファイルで定義されますが、 環境変数 LOCALDOMAIN で変更できます。 newrr は現在使用されていませんが、 更新メッセージの作成を予定しています。

res_send は、 問い合わせをネームサーバへ送信し、 回答を返します。 RES_INIT がセットされていない場合、 このルーチンは res_init を呼び出し、 問い合わせをローカルネームサーバへ送信し、 タイムアウトとリトライを処理します。 このルーチンは、 メッセージの長さを返しますが、 エラーが発生した場合は、 −1 を返します。

dn_expand は、短縮したドメイン名 comp_dn を、完全なドメイン名に展開します。 展開された名前は、 大文字に変換されます。 msg は、メッセージの先頭を指すポインタです。 exp_dn は、 結果を格納するためのサイズ length のバッファを指すポインタです。 このルーチンは、 短縮された名前のサイズを返しますが、 エラーが発生した場合は、−1 を返します。

dn_comp は、 ドメイン名 exp_dn を短縮し、 それを comp_dn に格納します。 このルーチンは、 簡約された名前のサイズを返しますが、 エラーが発生した場合は、 −1 を返します。 length は、 comp_dn のサイズです。 dnptrs は、 現メッセージ中で以前に短縮された名前を 指すポインタのリストです。 最初のポインタはメッセージの先頭を指し、 リストの最後は NULL 文字で終了します。 lastdnptr は、 dnptrs で指し示される配列の最後を指すポインタです。 副次的効果として、 dn_comp によって名前が短縮され、 メッセージ中に挿入されたラベルを 指すポインタのリストを、 更新することができます。 dnptr が NULL 文字の場合、 名前の短縮は行われません。 また、 lastdnptr が NULL 文字の場合、 リストの更新は行われません。

関連ファイル

/etc/resolv.conf resolver(5)を 参照してください。

関連事項

named(8), resolver(5), RFC882, RFC883, RFC973, RFC974, SMM:11 Name Server Operations Guide for BIND

NEWS-OSRelease 3.3

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026