GETIPNODEBYNAME
Section: Linux Programmer's Manual (3)
Updated: 2002-04-03
Index
JM Home Page
roff page
名前
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);
説明
これらの関数は推奨されない。代わりに
getaddrinfo(3)
と
getnameinfo(3)
を使うこと。
getipnodebyname(3)
と
getipnodebyaddr(3)
は、ネットワークホストの名前とアドレスを返す。
これらの関数は、以下の構造体へのポインタを返す。
struct hostent {
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
};
これらの関数は、 IPv4 ネットワークアドレスファミリにしかアクセスできない
gethostbyname(3)
や
gethostbyaddr(3)
を置き換えるものである。
getipnodebyname(3)
関数と
getipnodebyaddr(3)
関数は複数のネットワークアドレスファミリーにアクセス可能になっている。
これらの関数は、
gethostby
の関数群と異なり、動的に割り当てられたメモリへのポインタを返す。
呼び出し元がこれらの
hostent
構造体を必要としなくなった後は、
freehostent(3)
関数を用いれば動的な割り当てメモリを解放できる。
getipnodebyname の引き数
getipnodebyname(3)
関数は
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(3)
関数は、ネットワークアドレスが
addr
引き数で指定されたホストの名前を引く。
af
引き数には以下の値のいずれかを指定する。
- AF_INET
-
addr
引き数は
struct in_addr
へのポインターであり、
len
引き数は
sizeof(struct in_addr)
に設定しなければならない。
- AF_INET6
-
addr
引き数は
struct in6_addr
へのポインターであり、
len
引き数は
sizeof(struct in6_addr)
に設定しなければならない。
返り値
エラーが起こるとヌル・ポインターが返され、
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(3)
または
getipnodebyaddr(3)
に与えられた
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)
Index
- 名前
-
- 書式
-
- 説明
-
- getipnodebyname の引き数
-
- getipnodebyaddr のパラメータ
-
- 返り値
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:43 GMT, November 19, 2007