.\" Copyright 2000 Sam Varshavchik .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" References: RFC 2553 .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 2001 NAKANO Takeo all rights reserved. .\" Translated Sun Jan 14 2001 by NAKANO Takeo .\" Updated Tue Nov 26 2002 by Kentaro Shirakata .\" .TH GETIPNODEBYNAME 3 2010\-09\-04 Linux "Linux Programmer's Manual" .SH 名前 getipnodebyname, getipnodebyaddr, freehostent \- ネットワークホストの名前とアドレスの取得 .SH 書式 .nf \fB#include \fP \fB#include \fP \fB#include \fP .sp \fBstruct hostent *getipnodebyname(const char *\fP\fIname\fP\fB, int \fP\fIaf\fP\fB,\fP \fB int \fP\fIflags\fP\fB, int *\fP\fIerror_num\fP\fB);\fP .sp \fBstruct hostent *getipnodebyaddr(const void *\fP\fIaddr\fP\fB, size_t \fP\fIlen\fP\fB,\fP \fB int \fP\fIaf\fP\fB, int *\fP\fIerror_num\fP\fB);\fP .sp \fBvoid freehostent(struct hostent *\fP\fIip\fP\fB);\fP .fi .SH 説明 これらの関数は非推奨である (glibc では利用できない)。 代わりに \fBgetaddrinfo\fP(3) と \fBgetnameinfo\fP(3) を使うこと。 .LP \fBgetipnodebyname\fP() と \fBgetipnodebyaddr\fP() は、ネットワークホストの名前とアドレスを返す。 これらの関数は、以下の構造体へのポインターを返す。 .sp .in +4n .nf struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; }; .in .fi .PP これらの関数は、 IPv4 ネットワークアドレスファミリーにしかアクセスできない \fBgethostbyname\fP(3) や \fBgethostbyaddr\fP(3) を置き換えるものである。 \fBgetipnodebyname\fP() 関数と \fBgetipnodebyaddr\fP() 関数は複数のネットワークアドレスファミリーにアクセス可能になっている。 .PP これらの関数は、 \fBgethostby\fP の関数群と異なり、動的に割り当てられたメモリーへのポインターを返す。 呼び出し元がこれらの \fIhostent\fP 構造体を必要としなくなった後は、 \fBfreehostent\fP() 関数を用いれば動的な割り当てメモリーを解放できる。 .SS "getipnodebyname() の引き数" \fBgetipnodebyname\fP() 関数は \fIname\fP 引き数で指定されたホストのネットワークアドレスを引く。 \fIaf\fP 引き数には以下の値のいずれかを指定する。 .TP \fBAF_INET\fP \fIname\fP 引き数は、ドットで 4 つに区切られた IPv4 アドレスか、 IPv4 ネットワークホストの名前へのポインターである。 .TP \fBAF_INET6\fP \fIname\fP 引き数は、16 進の IPv6 アドレスか、 IPv6 ネットワークホストの名前へのポインターである。 .PP \fIflags\fP パラメーターには追加のオプションを指定する。 複数のフラグを指定するには、それらのビット単位の OR をとって指定すればよい。 オプションをひとつも指定したくないときには、 \fIflags\fP に 0 を設定する必要がある。 .TP \fBAI_V4MAPPED\fP このフラグは \fBAF_INET6\fP と共に用いられ、IPv6 アドレスの代わりに IPv4 アドレスを問い合わせる。 問い合わせる IPv4 アドレスは IPv6 アドレスにマップされる。 .TP \fBAI_ALL\fP このフラグは \fBAI_V4MAPPED\fP と共に用いられ、IPv4 アドレスと IPv6 アドレスの両方を問い合わせる。 見つかった IPv4 アドレスは、すべて IPv6 アドレスにマップされる。 .TP \fBAI_ADDRCONFIG\fP このフラグは \fBAF_INET6\fP と共に用いられ、 IPv6 が割り当てられたネットワークインターフェースが システムにひとつもなければ IPv6 アドレスの問い合わせを行わず、 IPv4 が割り当てられたネットワークインターフェースが システムにひとつもなければ IPv4 アドレスの問い合わせを行わないように要求する。 このフラグは単独でも、あるいは \fBAI_V4MAPPED\fP フラグと共にでも用いることができる。 .TP \fBAI_DEFAULT\fP このフラグは \fB(AI_ADDRCONFIG\fP|\fBAI_V4MAPPED)\fP と等価である。 .SS "getipnodebyaddr() の引き数" \fBgetipnodebyaddr\fP() 関数は、ネットワークアドレスが \fIaddr\fP 引き数で指定されたホストの名前を引く。 \fIaf\fP 引き数には以下の値のいずれかを指定する。 .TP \fBAF_INET\fP \fIaddr\fP 引き数は \fIstruct in_addr\fP へのポインターであり、 \fIlen\fP 引き数は \fIsizeof(struct in_addr)\fP に設定しなければならない。 .TP \fBAF_INET6\fP \fIaddr\fP 引き数は \fIstruct in6_addr\fP へのポインターであり、 \fIlen\fP 引き数は \fIsizeof(struct in6_addr)\fP に設定しなければならない。 .SH 返り値 エラーが起こると NULL が返され、 \fIerror_num\fP に以下にリストされたエラーコードのいずれかが設定される。 .TP \fBHOST_NOT_FOUND\fP ホスト名またはネットワークアドレスが見つからなかった。 .TP \fBNO_ADDRESS\fP ドメインネームサーバーは そのネットワークアドレスまたはネットワーク名を認識したが、 返事が返ってこなかった。原因としては、 例えば IPv4 アドレスしか持たないネットワークホストに対して IPv6 の情報の問い合わせが行われた (およびその逆) などが考えられる。 .TP \fBNO_RECOVERY\fP ドメインネームサーバーから恒久的な失敗 (permanent failure) を意味する返事が返された。 .TP \fBTRY_AGAIN\fP ネームサーバーから一時的な失敗 (temporary failure) を意味する返事が返された。次にはもうちょっと運が必要かも。 .PP 問い合わせに成功すると、 \fIhostent\fP 構造体へのポインターが返される。 この構造体は以下のフィールドからなる。 .TP \fIh_name\fP これはこのネットワークホストのオフィシャルな名前である。 .TP \fIh_aliases\fP これは、そのホストのオフィシャルでない別名へのポインターの配列である。 配列はヌルポインターで終端する。 .TP \fIh_addrtype\fP これは \fBgetipnodebyname\fP() または \fBgetipnodebyaddr\fP() に与えられた \fIaf\fP 引き数のコピーである。 \fIaf\fP 引き数が \fBAF_INET\fP なら \fIh_addrtype\fP は常に \fBAF_INET\fP になり、 \fIaf\fP 引き数が \fBAF_INET6\fP なら \fIh_addrtype\fP も常に \fBAF_INET6\fP になる。 .TP \fIh_length\fP このフィールドは、 \fIh_addrtype\fP が \fBAF_INET\fP なら \fIsizeof(struct in_addr)\fP に、 \fIh_addrtype\fP が \fBAF_INET6\fP なら \fIsizeof(struct in6_addr)\fP に設定される。 .TP \fIh_addr_list\fP これはひとつ以上のポインターの配列で、 それぞれのポインターは、 そのネットワークホストに対応するネットワークアドレス構造体を指す。 この配列はヌルポインターで終端する。 .SH 準拠 .\" Not in POSIX.1-2001. RFC\ 2553. .SH 注意 これらの関数は glibc 2.1.91\-95 に存在したが、再び削除された。 いくつかの UNIX 風システムはこれらの関数に対応しているが、 これらの関数は全て推奨されない。 .SH 関連項目 \fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3), \fBinet_ntop\fP(3), \fBinet_pton\fP(3) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man\-pages/ に書かれている。