Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
getipnodebyname, getipnodebyaddr, freehostent - ネットワークホストの名前とアドレスの取得
書式
#include <sys/types.h> #include <sys/socket.h> #include <netdb.h> struct hostent *getipnodebyname(const char *name, int af, int flags, int *error_num); struct hostent *getipnodebyaddr(const void *addr, size_t len, int af, int *error_num); void freehostent(struct hostent *ip);
説明
これらの関数は非推奨である (glibc では利用できない)。 代わりに getaddrinfo(3) と getnameinfo(3) を使うこと。 getipnodebyname() と getipnodebyaddr() は、ネットワークホストの名前とアドレスを返す。 こ れらの関数は、以下の構造体へのポインターを返す。 struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; }; これらの関数は、 IPv4 ネットワークアドレスファミリーにしかアクセスできない gethostbyname(3) や gethostbyaddr(3) を置き換えるものである。 getipnodebyname() 関数と getipnodebyaddr() 関数は複数のネットワークアドレスファミリーにアクセス可能になっている。 これらの関数は、 gethostby の関数群と異なり、動的に割り当てられたメモリーへのポインターを 返す。 呼び出し元がこれらの hostent 構造体を必要としなくなった後は、 freehostent() 関数を 用いれば動的な割り当てメモリーを解放できる。 getipnodebyname() の引数 getipnodebyname() 関数は name 引数で指定されたホストのネットワークアドレスを引く。 af 引 数には以下の値のいずれかを指定する。 AF_INET name 引数は、ドットで 4 つに区切られた IPv4 アドレスか、 IPv4 ネットワークホストの 名前へのポインターである。 AF_INET6 name 引数は、16 進の IPv6 アドレスか、 IPv6 ネットワークホストの名前へのポインター である。 flags パラメーターには追加のオプションを指定する。 複数のフラグを指定するには、それらの ビット単位の OR をとって指定すればよい。 オプションをひとつも指定したくないときには、 flags に 0 を設定する必要がある。 AI_V4MAPPED このフラグは AF_INET6 と共に用いられ、IPv6 アドレスの代わりに IPv4 アドレスを問い合 わせる。 問い合わせる IPv4 アドレスは IPv6 アドレスにマップされる。 AI_ALL このフラグは AI_V4MAPPED と共に用いられ、IPv4 アドレスと IPv6 アドレスの両方を問い 合わせる。 見つかった IPv4 アドレスは、すべて IPv6 アドレスにマップされる。 AI_ADDRCONFIG このフラグは AF_INET6 と共に用いられ、 IPv6 が割り当てられたネットワークインター フェースが システムにひとつもなければ IPv6 アドレスの問い合わせを行わず、 IPv4 が割 り当てられたネットワークインターフェースが システムにひとつもなければ IPv4 アドレス の問い合わせを行わないように要求する。 このフラグは単独でも、あるいは AI_V4MAPPED フラグと共にでも用いることができる。 AI_DEFAULT このフラグは (AI_ADDRCONFIG|AI_V4MAPPED) と等価である。 getipnodebyaddr() の引数 getipnodebyaddr() 関数は、ネットワークアドレスが addr 引数で指定されたホストの名前を引 く。 af 引数には以下の値のいずれかを指定する。 AF_INET addr 引数は struct in_addr へのポインターであり、 len 引数は sizeof(struct in_addr) に設定しなければならない。 AF_INET6 addr 引数は struct in6_addr へのポインターであり、 len 引数は sizeof(struct in6_addr) に設定しなければならない。
返り値
エラーが起こると NULL が返され、 error_num に以下にリストされたエラーコードのいずれかが設 定される。 HOST_NOT_FOUND ホスト名またはネットワークアドレスが見つからなかった。 NO_ADDRESS ドメインネームサーバーは そのネットワークアドレスまたはネットワーク名を認識したが、 返事が返ってこなかった。原因としては、 例えば IPv4 アドレスしか持たないネットワーク ホストに対して IPv6 の情報の問い合わせが行われた (およびその逆) などが考えられる。 NO_RECOVERY ドメインネームサーバーから恒久的な失敗 (permanent failure) を意味する返事が返され た。 TRY_AGAIN ネームサーバーから一時的な失敗 (temporary failure) を意味する返事が返された。次に はもうちょっと運が必要かも。 問い合わせに成功すると、 hostent 構造体へのポインターが返される。 この構造体は以下のフィー ルドからなる。 h_name これはこのネットワークホストのオフィシャルな名前である。 h_aliases これは、そのホストのオフィシャルでない別名へのポインターの配列である。 配列はヌルポ インターで終端する。 h_addrtype これは getipnodebyname() または getipnodebyaddr() に与えられた af 引数のコピーで ある。 af 引数が AF_INET なら h_addrtype は常に AF_INET になり、 af 引数が AF_INET6 なら h_addrtype も常に AF_INET6 になる。 h_length このフィールドは、 h_addrtype が AF_INET なら sizeof(struct in_addr) に、 h_addrtype が AF_INET6 なら sizeof(struct in6_addr) に設定される。 h_addr_list これはひとつ以上のポインターの配列で、 それぞれのポインターは、 そのネットワークホ ストに対応するネットワークアドレス構造体を指す。 この配列はヌルポインターで終端す る。
準拠
RFC 2553.
注意
これらの関数は glibc 2.1.91-95 に存在したが、再び削除された。 いくつかの UNIX 風システムは これらの関数に対応しているが、 これらの関数は全て推奨されない。
関連項目
getaddrinfo(3), getnameinfo(3), inet_ntop(3), inet_pton(3)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。