Man page - inet_net_ntop(3)

Packages contains this manual

Available languages:

en fr ja ru

Manual

INET_NET_PTON

名 前
書 åŧ
čĒŦ 明
inet_net_pton()
inet_net_ntop()
čŋ” り 値
エ ナ ãƒŧ
æē– 拠
æŗ¨ 意
inet_net_pton() ぎ å…Ĩ 力 ぎ 襨 記 åŊĸ åŧ
inet_net_pton() ぎ čŋ” り 値
例
プ ロ グ ナ ム ぎ ã‚Ŋ ãƒŧ ゚
é–ĸ 逪 項 į›Ž
こ ぎ 文 書 ãĢ つ い ãĻ

名 前

inet_net_pton, inet_net_ntop - イ ãƒŗ ã‚ŋ ãƒŧ ネ ッ ト ぎ ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ 変 換

書 åŧ

#include <arpa/inet.h>

int inet_net_pton(int af , const char * pres ,
void *
netp , size_t nsize );

char *inet_net_ntop(int af , const void * netp , int bits ,
char *
pres , size_t psize );

-lresolv で ãƒĒ ãƒŗ ク す る 。

glibc 向 け ぎ 抟 čƒŊ 検 æŸģ マ ク ロ ぎ čρ äģļ ( feature_test_macros (7) 参 į…§ ):

inet_net_pton (), inet_net_ntop ():

glibc 2.20 äģĨ 降 :

_DEFAULT_SOURCE

glibc 2.20 よ り 前 :

_BSD_SOURCE || _SVID_SOURCE

čĒŦ 明

こ れ ら ぎ é–ĸ 数 は (印 字 可 čƒŊ ãĒ ) 襨 記 åŊĸ åŧ と ネ ッ ト ワ ãƒŧ ク åŊĸ åŧ (バ イ ナ ãƒĒ ãƒŧ åŊĸ åŧ ) 間 ぎ 変 換 を 行 う 。

お ãĄ ら ぎ é–ĸ 数 で も af は 変 換 を 行 う ã‚ĸ ド ãƒŦ ゚ フ ã‚Ą ミ ãƒĒ ãƒŧ を 指 厚 す る 。 ã‚ĩ ポ ãƒŧ ト さ れ ãĻ い る 値 は AF_INET だ け で あ る 。

inet_net_pton()

inet_net_pton () é–ĸ 数 は 、 襨 記 åŊĸ åŧ で イ ãƒŗ ã‚ŋ ãƒŧ ネ ッ ト ネ ッ ト ワ ãƒŧ ク į•Ē åˇ を æ ŧ į´ し た NULL įĩ‚ į̝ さ れ た 文 字 列 で あ る pres を ネ ッ ト ワ ãƒŧ ク åŊĸ åŧ ãĢ 変 換 す る 。 ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ ãƒŧ ぎ 変 換 įĩ 果 は netp が 指 す バ ッ フ ã‚Ą ãƒŧ ãĢ æ ŧ į´ さ れ る ( netp åŧ• 数 は 通 常 in_addr 構 造 äŊ“ を 指 し ãĻ い る )。 nsize åŧ• 数 は netp で 刊 ᔍ 可 čƒŊ ãĒ バ イ ト 数 を į¤ē す 。

成 功 す る と inet_net_pton () は netp ãĢ æ ŧ į´ し た įĩ 果 ぎ ネ ッ ト ワ ãƒŧ ク į•Ē åˇ フ ã‚Ŗ ãƒŧ ãƒĢ ド ぎ ビ ッ ト 数 を čŋ” す 。 å…Ĩ 力 ぎ 襨 記 åŊĸ åŧ と čŋ” り 値 ãĢ é–ĸ す る č­° čĢ– は 「 æŗ¨ 意 」 ぎ ᝀ を 参 į…§ 。

æŗ¨ 意 : netp が 指 す バ ッ フ ã‚Ą ãƒŧ は inet_net_pton () ぎ å‘ŧ ãŗ å‡ē し 前 ãĢ 0 で 埋 め る ず き で あ る 。 å‘ŧ ãŗ å‡ē し で は ネ ッ ト ワ ãƒŧ ク į•Ē åˇ で åŋ… čρ ãĒ バ イ ト だ け が 書 き čžŧ ぞ れ 、 そ ぎ バ イ ト 数 は 厌 全 ãĒ ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ ぎ バ イ ト 数 よ り も 少 ãĒ い こ と も あ る 。

inet_net_ntop()

inet_net_ntop () é–ĸ 数 は netp が 指 す バ ッ フ ã‚Ą ãƒŧ ぎ ネ ッ ト ワ ãƒŧ ク į•Ē åˇ を 襨 記 åŊĸ åŧ ãĢ 変 換 す る 。 *netp は ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ ãƒŧ で ぎ 値 と し ãĻ č§Ŗ 釈 さ れ る 。 bits åŧ• 数 は *netp ぎ ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ ビ ッ ト 数 を 指 厚 す る 。

NULL įĩ‚ į̝ さ れ た 襨 記 åŊĸ åŧ ぎ 文 字 列 は pres が 指 す バ ッ フ ã‚Ą ãƒŧ ãĢ æ ŧ į´ さ れ る 。 psize åŧ• 数 は pres で 刊 ᔍ 可 čƒŊ ãĒ バ イ ト 数 を 指 厚 す る 。 襨 記 åŊĸ åŧ は CIDR åŊĸ åŧ 、 つ ぞ り 、 ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ を 襨 す ド ッ ト åŒē 切 り ぎ 10 進 数 ãĢ 、 ゚ ナ ッ ã‚ˇ ãƒĨ と ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ ビ ッ ト ã‚ĩ イ ã‚ē が įļš ã åŊĸ åŧ で あ る 。

čŋ” り 値

成 功 す る と inet_net_pton () は ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ ビ ッ ト 数 を čŋ” す 。 エ ナ ãƒŧ ぎ å ´ 合 、 -1 を čŋ” し 、 errno ãĢ エ ナ ãƒŧ を į¤ē す 値 を 設 厚 す る 。

成 功 す る と inet_net_ntop () は pres を čŋ” す 。 エ ナ ãƒŧ ぎ å ´ 合 、 NULL を čŋ” し 、 errno ãĢ エ ナ ãƒŧ を į¤ē す 値 が ã‚ģ ッ ト さ れ る 。

エ ナ ãƒŧ

EAFNOSUPPORT

af ãĢ AF_INET äģĨ 外 ぎ 値 が 指 厚 さ れ た 。

EMSGSIZE

å‡ē 力 バ ッ フ ã‚Ą ãƒŧ ぎ ã‚ĩ イ ã‚ē が 十 分 で ãĒ か ãŖ た 。

ENOENT

( inet_net_pton () ぎ å ´ 合 ) pres が æ­Ŗ し い 襨 記 åŊĸ åŧ で は ãĒ か ãŖ た 。

æē– 拠

é–ĸ 数 inet_net_pton () と inet_net_ntop () は 非 標 æē– だ が 、 多 く ぎ ã‚ˇ ゚ テ ム で 刊 ᔍ 可 čƒŊ で あ る 。

æŗ¨ 意

inet_net_pton() ぎ å…Ĩ 力 ぎ 襨 記 åŊĸ åŧ

ネ ッ ト ワ ãƒŧ ク į•Ē åˇ は 、 16 進 数 値 、 ぞ た は ド ッ ト åŒē 切 り ぎ 10 進 数 襨 記 で 指 厚 で き る 。

先 é ­ ãĢ "0x" か "0X" が あ る å ´ 合 16 進 数 値 と ãĒ る 。 16 進 数 は ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ ãƒŧ ぎ åˇĻ か ら åŗ へ 半 ã‚Ē ク テ ッ ト (4 ビ ッ ト ) ず つ 順 į•Ē ãĢ 埋 め ら れ る 。

ド ッ ト åŒē 切 り ぎ 10 進 数 襨 記 で は 、 最 大 4 つ ぎ ã‚Ē ク テ ッ ト を ド ッ ト åŒē 切 り ぎ 10 進 数 で 指 厚 す る 。 し た が ãŖ ãĻ 、 äģĨ 下 ぎ åŊĸ åŧ を 指 厚 で き る 。

a.b.c.d
a.b.c
a.b
a

各 部 分 は 0 か ら 255 ぎ ᝄ 回 ぎ 数 字 で 、 ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ 各 バ イ ト ãĢ åˇĻ か ら åŗ ãĢ ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ ãƒŧ (ビ ッ グ エ ãƒŗ デ ã‚Ŗ ã‚ĸ ãƒŗ ) で 順 į•Ē ãĢ 埋 め ら れ る 。 ᜁ į•Ĩ さ れ た 部 分 が あ れ ば 、 寞 åŋœ す る ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ バ イ ト は 0 と ãĒ る 。

16 進 数 と ド ッ ト åŒē 切 り ぎ 10 進 数 åŊĸ åŧ ぎ お ãĄ ら ぎ å ´ 合 も 、 ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ 垌 ろ ãĢ ゚ ナ ッ ã‚ˇ ãƒĨ と 0 か ら 32 ぎ ᝄ 回 ぎ 数 字 を ã‚Ē プ ã‚ˇ ョ ãƒŗ で äģ˜ ã‘ る こ と が で き る 。 こ ぎ 数 字 は ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ ビ ッ ト 単 äŊ ぎ ã‚ĩ イ ã‚ē を į¤ē す も ぎ で あ る 。

inet_net_pton() ぎ čŋ” り 値

inet_net_pton () ぎ čŋ” り 値 は ネ ッ ト ワ ãƒŧ ク į•Ē åˇ フ ã‚Ŗ ãƒŧ ãƒĢ ド ぎ ビ ッ ト 数 で あ る 。 å…Ĩ 力 ぎ 襨 記 åŊĸ åŧ ぎ 文 字 列 が ゚ ナ ッ ã‚ˇ ãƒĨ と ã‚ĩ イ ã‚ē ぎ 明 į¤ē įš„ ãĒ 値 で įĩ‚ わ ãŖ ãĻ い る å ´ 合 、 指 厚 さ れ た ã‚ĩ イ ã‚ē が inet_net_pton () ぎ čŋ” り 値 と ãĒ る 。 そ う で ãĒ い å ´ 合 は 、 čŋ” り 値 bits が äģĨ 下 ぎ よ う ãĢ し ãĻ 推 æ¸Ŧ さ れ る 。

*

ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ 最 上 äŊ バ イ ト が 240 äģĨ 上 ぎ å ´ 合 、 bits は 32 と ãĒ る 。

*

そ れ äģĨ 外 で 、 ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ 最 上 äŊ バ イ ト が 224 äģĨ 上 ぎ å ´ 合 、 bits は 4 と ãĒ る 。

*

そ れ äģĨ 外 で 、 ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ 最 上 äŊ バ イ ト が 192 äģĨ 上 ぎ å ´ 合 、 bits は 24 と ãĒ る 。

*

そ れ äģĨ 外 で 、 ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ 最 上 äŊ バ イ ト が 128 äģĨ 上 ぎ å ´ 合 、 bits は 16 と ãĒ る 。

*

そ れ äģĨ 外 ぎ å ´ 合 、 bits は 8 と ãĒ る 。

上 記 ぎ 手 順 か ら åž— ら れ る bits ぎ 値 が 8 äģĨ 上 だ が 、 ネ ッ ト ワ ãƒŧ ク į•Ē åˇ で 指 厚 さ れ た ã‚Ē ク テ ッ ト 数 が bits/8 よ り 大 き い å ´ 合 、 bits ãĢ は 原 際 ãĢ 指 厚 さ れ た ã‚Ē ク テ ッ ト 数 を 8 倍 し た 値 が 設 厚 さ れ る 。

例

äģĨ 下 ぎ プ ロ グ ナ ム は inet_net_pton () と inet_net_ntop () ぎ äŊŋ ᔍ 例 を į¤ē す も ぎ で あ る 。 inet_net_pton () を äŊŋ ãŖ ãĻ 、 ã‚ŗ マ ãƒŗ ド ナ イ ãƒŗ ぎ 最 初 ぎ åŧ• 数 で æ¸Ą さ れ た 襨 記 åŊĸ åŧ ぎ ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ を バ イ ナ ãƒĒ ãƒŧ åŊĸ åŧ ãĢ 変 換 し 、 inet_net_pton () ぎ čŋ” り 値 を å‡ē 力 す る 。 そ れ か ら inet_net_ntop () を äŊŋ ãŖ ãĻ バ イ ナ ãƒĒ ãƒŧ åŊĸ åŧ を 襨 記 åŊĸ åŧ ãĢ 再 åēĻ æˆģ し ãĻ 、 įĩ 果 ぎ 文 字 列 を å‡ē 力 す る 。

inet_net_pton () が netp åŧ• 数 ぎ す ず ãĻ ぎ バ イ ト ãĢ 書 き čžŧ む わ け で は ãĒ い こ と を į¤ē す た め 、 プ ロ グ ナ ム ãĢ は ã‚Ē プ ã‚ˇ ョ ãƒŗ で 2 į•Ē į›Ž ぎ ã‚ŗ マ ãƒŗ ド ナ イ ãƒŗ åŧ• 数 を 指 厚 す る こ と が で き 、 そ ぎ åŧ• 数 ぎ 数 字 を äŊŋ ãŖ ãĻ inet_net_pton () を å‘ŧ ãŗ å‡ē す 前 ãĢ バ ッ フ ã‚Ą ãƒŧ を 初 期 化 す る 。 å‡ē 力 ぎ 最 įĩ‚ 行 と し ãĻ 、 ãƒĻ ãƒŧ ã‚ļ ãƒŧ が お ぎ バ イ ト が inet_net_pton () ãĢ よ ãŖ ãĻ 変 更 さ れ ãĒ か ãŖ た か を įĸē čĒ で き る よ う ãĢ 、 プ ロ グ ナ ム は inet_net_pton () が čŋ” し た バ ッ フ ã‚Ą ãƒŧ ぎ 全 バ イ ト を 襨 į¤ē す る 。

こ ぎ 原 行 例 で は 、 inet_net_pton () が 推 æ¸Ŧ し た ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ ビ ッ ト 数 を 襨 į¤ē す る 。

$ ./a.out 193.168
inet_net_pton() returned: 24
inet_net_ntop() yielded: 193.168.0/24
Raw address: c1a80000

inet_net_pton () が įĩ 果 ぎ バ ッ フ ã‚Ą ãƒŧ ぎ æœĒ äŊŋ ᔍ バ イ ト を 0 埋 め し ãĒ い こ と を įĸē čĒ す る 。

$ ./a.out 193.168 0xffffffff
inet_net_pton() returned: 24
inet_net_ntop() yielded: 193.168.0/24
Raw address: c1a800ff

襨 記 åŊĸ åŧ ぎ 文 字 列 で æ¸Ą さ れ た バ イ ト 数 が 推 æ¸Ŧ し た 値 よ り 大 き い å ´ 合 、 inet_net_pton () が 推 æ¸Ŧ す る ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ ã‚ĩ イ ã‚ē を åēƒ ã’ る こ と を įĸē čĒ す る 。

$ ./a.out 193.168.1.128
inet_net_pton() returned: 32
inet_net_ntop() yielded: 193.168.1.128/32
Raw address: c1a80180

ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ ã‚ĩ イ ã‚ē が 明 į¤ē įš„ ãĢ 指 厚 す る と 、 推 æ¸Ŧ さ れ る ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ぎ ã‚ĩ イ ã‚ē が 上 書 き さ れ る (た だ し 、 明 į¤ē įš„ ãĢ 指 厚 さ れ た 掋 り ぎ バ イ ト は inet_net_pton () で äŊŋ ᔍ さ れ 、 įĩ 果 ぎ バ ッ フ ã‚Ą ãƒŧ ãĢ 書 き čžŧ ぞ れ る )。

$ ./a.out 193.168.1.128/24
inet_net_pton() returned: 24
inet_net_ntop() yielded: 193.168.1/24
Raw address: c1a80180

プ ロ グ ナ ム ぎ ã‚Ŋ ãƒŧ ゚

/* "-lresolv" で ãƒĒ ãƒŗ ク す る */

#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>

#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \
} while (0)

int
main(int argc, char *argv[])
{
char buf[100];
struct in_addr addr;
int bits;

if (argc < 2) {
fprintf(stderr,
"Usage: %s presentation-form [addr-init-value]\n",
argv[0]);
exit(EXIT_FAILURE);
}

/* argv[2] (数 値 ) が 指 厚 さ れ る と 、 そ ぎ 数 字 を äŊŋ ãŖ ãĻ inet_net_pton()
ãĢ æ¸Ą す å‡ē 力 バ ッ フ ã‚Ą ãƒŧ を 初 期 化 す る 。 こ れ ãĢ よ り inet_net_pton() が
ネ ッ ト ワ ãƒŧ ク į•Ē åˇ ãĢ åŋ… čρ ãĒ バ イ ト だ け を 書 き čžŧ む こ と を įĸē čĒ で き る よ う
ãĢ す る 。 argv[2] が 指 厚 さ れ ãĒ か ãŖ た å ´ 合 、 バ ッ フ ã‚Ą ãƒŧ は 0 で 初 期 化
す る (こ れ が 推 åĨ¨ さ れ る æ–š æŗ• で あ る )。 */

addr.s_addr = (argc > 2) ? strtod(argv[2], NULL) : 0;

/* argv[1] ぎ 襨 記 åŊĸ åŧ ぎ ネ ッ ト ワ ãƒŧ ク į•Ē åˇ を バ イ ナ ãƒĒ ãƒŧ åŊĸ åŧ ãĢ 変 換 す る */

bits = inet_net_pton(AF_INET, argv[1], &addr, sizeof(addr));
if (bits == -1)
errExit("inet_net_ntop");

printf("inet_net_pton() returned: %d\n", bits);

/* inet_net_pton() が čŋ” し た 'bits' を äŊŋ ãŖ ãĻ 、
バ イ ナ ãƒĒ ãƒŧ åŊĸ åŧ を 襨 記 åŊĸ åŧ ãĢ 変 換 す る */

if (inet_net_ntop(AF_INET, &addr, bits, buf, sizeof(buf)) == NULL)
errExit("inet_net_ntop");

printf("inet_net_ntop() yielded: %s\n", buf);

/* 'addr' を 名 前 ぎ åŊĸ で (ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ ãƒŧ で ) 襨 į¤ē す る 。
こ れ ãĢ よ り inet_net_ntop() が 襨 į¤ē し ãĒ い バ イ ト を įĸē čĒ で き る 。
こ れ ら ぎ バ イ ト ぎ 一 部 は inet_net_ntop() で は 変 更 さ れ ãĒ い å ´ 合 が あ り 、
そ ぎ å ´ 合 argv[2] で 指 厚 さ れ た 初 期 値 ぎ ぞ ぞ ãĢ ãĒ る 。 */

printf("Raw address: %x\n", htonl(addr.s_addr));

exit(EXIT_SUCCESS);
}

é–ĸ 逪 項 į›Ž

inet (3), networks (5)

こ ぎ 文 書 ãĢ つ い ãĻ

こ ぎ man ペ ãƒŧ ジ は Linux man-pages プ ロ ジ ェ ク ト ぎ ãƒĒ ãƒĒ ãƒŧ ゚ 5.10 ぎ 一 部 で あ る 。 プ ロ ジ ェ ク ト ぎ čĒŦ 明 と バ グ å ą 告 ãĢ é–ĸ す る 情 å ą は https://www.kernel.org/doc/man-pages/ ãĢ 書 か れ ãĻ い る 。