Manpages

名 前

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_addrtypeAF_INET な ら sizeof(struct in_addr) に 、 h_addrtypeAF_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 プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。