.\" Copyright (c) 1983, 1990, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" From: @(#)inet.3 8.1 (Berkeley) 6/4/93 .\" %Id: inet.3,v 1.6 1997/03/19 19:41:20 bde Exp % .\" .Dd June 17, 1996 .Dt INET 3 .Os BSD 4.2 .Sh 名称 .Nm inet_aton , .Nm inet_addr , .Nm inet_network , .Nm inet_ntoa , .Nm inet_makeaddr , .Nm inet_lnaof , .Nm inet_netof .Nd インターネットアドレス操作関数 .Sh 書式 .Fd #include .Fd #include .Fd #include .Fd #include .Ft int .Fn inet_aton "const char *cp" "struct in_addr *pin" .Ft unsigned long .Fn inet_addr "const char *cp" .Ft unsigned long .Fn inet_network "const char *cp" .Ft char * .Fn inet_ntoa "struct in_addr in" .Ft struct in_addr .Fn inet_makeaddr "unsigned long net" "unsigned long lna" .Ft unsigned long .Fn inet_lnaof "struct in_addr in" .Ft unsigned long .Fn inet_netof "struct in_addr in" .Sh 解説 .Fn inet_aton , .Fn inet_addr および .Fn inet_network ルーチンはインターネット標準の .Ql \&. 表記法で示される数値を表現するキャラクタ・ストリングを解釈します。 .Fn inet_aton ルーチンは指定キャラクタ・ストリングを インターネット・アドレスと解釈し、アドレスを供給された構造体の中に 置きます。 ストリングが正常に解釈されると同ルーチンは 1 を返し、ストリングが 無効のとき 0 を返します。 .Fn inet_addr と .Fn inet_network 関数はそれぞれ、 インターネット・アドレスとインターネット・ネットワーク番号として使うのに 適した数値を返します。 .Fn inet_ntoa ルーチンはインターネット・アドレスを取り込み、 .Ql \&. 表記法のアドレスを示す .Tn ASCII ストリングを返します。 .Fn inet_makeaddr ルーチンはインターネット・ネットワーク番号と ローカル・ネットワーク・アドレスを取り込み、 それを基にインターネット・アドレスを生成します。 .Fn inet_netof と .Fn inet_lnaof ルーチンはインターネット・ホスト・アドレスを分割して、 それぞれネットワーク番号とローカル・ネットワーク・アドレス部として返します。 .Pp すべてのインターネット・アドレスはネットワーク順序 ( 左から右への バイト順 ) で返されます。 ネットワーク番号とローカル・アドレス部はすべてマシン形式の整数値で 返されます。 .Pp .Sh インターネット・アドレス .Ql \&. 表記法で指定される値は次のどれか一つの形式を取ります。 .Bd -literal -offset indent a.b.c.d a.b.c a.b a .Ed .Pp 4 個の部分アドレスが指定されると、各部分は 1 バイトのデータと解釈されて、 左から右の順でインターネット・アドレスの 4 バイトに割り当てられます。 インターネット・アドレスが .Tn VAX 上で32 ビットの整数量であると見なされるとき、上記に該当するバイトは、 .Dq Li d.c.b.a . と表示されます。すなわち、 .Tn VAX のバイト順序は右から左順になります。 .Pp 3 個の部分アドレスが指定されると、最後の部分が 16 ビット量と解釈されて、 ネットワーク・アドレスの右端の 2 バイトになります。これは、 3 つの部分 アドレス形式でも Class B ネットワーク・アドレスを .Dq Li 128.net.host として指定可能にする便宜操作です。 .Pp 2 個の部分アドレスが供給されると、最後の部分アドレスが 24 ビット量として 解釈されて、ネットワーク・アドレスの右端の 3 バイトになります。 これは 2 個の部分アドレス形式でも Class A ネットワーク・アドレスを .Dq Li net.host . として指定可能にする便宜操作です。 .Pp 1 個の部分アドレスだけ指定されると、値はバイトの再調整なしに 直接ネットワーク・アドレスに保存されます。 .Pp .Ql \&. 表記法で .Dq 部分 として供給される数値はすべて、 C 言語で 指定される 10 進数、 8 進数、 16 進数のいづれかの形式を取ることができます ( すなわち、先行の 0x または 0X は 16 進数、 その他は先行する 0 が 8 進数、または数値が 10 進数と解釈されます ) 。 .Pp .Fn inet_aton と .Fn inet_ntoa 関数は .Xr addr2ascii 3 ファミリに妥協した完全に確立されていない関数です。 しかし、これらの関数はまだ広く使用されていないため、 当面は移植性のあるプログラムはこれらの存在に依存せずに .Xr inet 3 関数の使用を継続します。 .Sh 診断 .Fn inet_addr と .Fn inet_network は形式違反の要求に .Dv INADDR_NONE 定数を返します。 .Sh 関連項目 .Xr addr2ascii 3 , .Xr gethostbyname 3 , .Xr getnetent 3 , .Xr hosts 5 , .Xr networks 5 .Sh 歴史 ここで扱う関数は .Bx 4.2 で取り入れられました。 .Pp .Sh バグ .Dv INADDR_NONE (0xffffffff) 値は有効な同報通信アドレスですが、 .Fn inet_addr はエラー表示なしにこの値を返すことができません。 新しい .Fn inet_aton 関数はこの問題を解決しました。 ホスト・バイト順序対ネットワーク・バイト順序の問題は混乱しがちです。 .Fn inet_ntoa が返すストリングはスタチック・メモリ領域に常駐します。 .Pp Inet_addr は .Fa struct in_addr を返す必要があります。