getipnodebyname - ライブラリコールの説明 - Linux コマンド集 一覧表
- 名前
- 書式
- 説明
- 返り値
- 注意
- 準拠
- 関連項目
名前
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
-
これはひとつ以上のポインターの配列で、
それぞれのポインターは、
そのネットワークホストに対応するネットワークアドレス構造体を指す。
この配列はヌル・ポインターで終端する。
注意
これらの関数は glibc 2.1.91-95 に存在したが、再び削除された。
いくつかの Unix 風システムはこれらの関数に対応しているが、
これらの関数は全て推奨されない。
準拠
関連項目
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする