res_init() - ドメイン・ネーム・リゾルバーの初期化

標準

標準/拡張機能 C/C++ 依存項目

BSD 4.3

両方 OS/390 V2R8

形式

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

int res_init(void);
struct __res_state _res;

機能説明

res_init() 関数は、他のリゾルバー関数が使用できるように、__res_state 構造体を初期化するリゾルバー関数です。初期化は通常、一般に XL C/C++ ランタイム・ライブラリー・リゾルバーと呼ばれている IP アドレスの変換ルーチンのいずれかを、初めて呼び出したときに行われます。

res_init() ルーチンは、__res_state 構造体を z/OS® リゾルバーの CS に渡すことによって、初期化します。リゾルバーは "TCPIP.DATA" 構成ファイルを読み取り、__res_state 構造体を更新します。__res_state 構造体のデータは、"TCPIP.DATA" 構成ファイルの内容に基づいて埋められ、その後は、_res 変数で参照できます。resolver ルーチンが使用するグローバル構成および状態情報は、構造体 _res に保持されます。ほとんどの値には適切なデフォルトがあるため、変更せずにそのまま使用することができます。
説明
_res.retrans
再送時間間隔は、"TCPIP.DATA" 構成ファイルにある、ResolverTimeOut ステートメントから取得されます。
_res.retry
要求再送の回数。これは、"TCPIP.DATA" 構成ファイルにある ResolverUDPRetries ステートメントから取得されます。
_res.options
_res.options に格納されているオプションを以下にリストします。これらは、<resolv.h> に定義されています。オプションは、有効にされたオプションのビット単位の OR を含む、単純なビット・マスクとして格納されています。
オプション
説明
RES_INIT
res_init() が呼び出されたために、初期ネーム・サーバー・アドレスとデフォルトのドメイン・ネームが初期化された後、真になります。このオプションは、検査だけに使用し、res_init() 関数によってのみ設定するようにすべきです。
RES_DEBUG
デバッグ・メッセージを印刷します。
RES_AAONLY
信頼できる応答だけを受け入れます。このオプションを指定すると、res_send() は、信頼できる応答を検出するか、エラーを検出するまで継続します。通常、これはインプリメントされていません。
RES_USEVC
UDP データグラムの代わりに、照会のために TCP 接続を使用します。
RES_STAYOPEN
RES_USEVC と共に使用し、TCP 接続を、複数の照会の間オープンに保ちます。これは、常に多数の照会を行うプログラムで有効です。UDP は、使用されている通常モードにしておく必要があります。
RES_IGNTC
打ち切り誤差を無視します。つまり、TCP で再試行しません。現在は、使用されていません。
RES_RECURSE
照会に再帰希望ビットを設定します。これはデフォルトです。(res_send() は、反復照会を実行せず、再帰については、ネーム・サーバーが対処することを想定しています。)
RES_DEFNAMES
設定された場合、res_search() は、デフォルトのドメイン・ネームを (ドットを含まない) 単一コンポーネント名に追加します。このオプションは、デフォルトで使用可能になります。
RES_DNSRCH
このオプションを設定すると、res_search() は、現行ドメインと親ドメインでホスト名を検索します。これは、標準ホスト・ルックアップ・ルーチン gethostbyname() によって使用されます。このオプションは、デフォルトで使用可能になります。
RES_NOALIASES
このオプションは、"HOSTALIASES" 環境変数によって制御される、ユーザー・レベルの別名割り当てフィーチャーをオフにします。ネットワーク・デーモンは、このオプションを設定する必要があります。
_res.nscount
"TCPIP.DATA" 構成ファイルに指定されたネーム・サーバーの数です。
_res.*nsaddr_list[0]
"TCPIP.DATA" 構成ファイル内の NSINTERADDR または NameServer ステートメントによって指定された、ネーム・サーバーのアドレスです。
_res.dnsrch[0]
検索するドメイン・リストの先頭を示します。"TCPIP.DATA" 構成ファイル内の SEARCH ステートメントで指定されます。この構造体には、デフォルトの DOMAIN か SEARCH が入ります。
_res.defdname[0]
"TCPIP.DATA" 構成ファイル内の Domain または DomainOrigin ステートメントに指定されたデフォルトのドメイン・ネームです。この構造体には、デフォルトの DOMAIN か SEARCH が入ります。
_res.pfcode
通常、これはインプリメントされていません。
_res.ndots
ドメイン・ネームのドット数のしきい値です。"TCPIP.DATA" 構成ファイル内の OPTIONS ステートメント値 ndots:n に指定されます。デフォルトは、1 です。
_res.nsort
"TCPIP.DATA" 構成ファイル内の SORTLIST ステートメントにリストされた sort_list[] のエレメント数です。
_res.sort_list[0]
"TCPIP.DATA" 構成ファイル内の SORTLIST ステートメントに指定されたネットワーク・アドレスとサブネット・マスクです。

戻り値

正常に実行された場合、res_init() は 0 を戻します。

正常に実行されなかった場合、res_init() は -1 を戻して、h_errno を次のいずれかの 値に設定します。
エラー・コード
説明
NO_RECOVERY
再試行すると、連続して失敗するエラーが発生しました。このスレッドが _res 構造体を入れるためのストレージが獲得できませんでした。
TRY_AGAIN
選択された __res_state 構造体名を初期化しているときにエラーが発生しました。この処理は再試行できます。

正常に実行された場合、_res は、__res_state 構造体のアドレスを戻します。

正常に実行されなかった場合、_res は NULL を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
ENOMEM
_res 構造体を定義するために必要なストレージを、獲得できませんでした。

関連情報