.\" Copyright (c) 1995 .\" Bill Paul . 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 Bill Paul. .\" 4. Neither the name of the author nor the names of any co-contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY Bill Paul 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. .\" .\" %FreeBSD: src/lib/libc/net/ethers.3,v 1.10.2.10 2001/12/14 18:33:55 ru Exp % .\" $FreeBSD$ .\" .Dd April 12, 1995 .Dt ETHERS 3 .Os .Sh 名称 .Nm ethers , .Nm ether_line , .Nm ether_aton , .Nm ether_ntoa , .Nm ether_ntohost , .Nm ether_hostton .Nd イーサネットアドレス変換および調査ルーチン .Sh ライブラリ .Lb libc .Sh 書式 .In sys/types.h .In sys/socket.h .In net/ethernet.h .Ft int .Fn ether_line "const char *l" "struct ether_addr *e" "char *hostname" .Ft struct ether_addr * .Fn ether_aton "const char *a" .Ft char * .Fn ether_ntoa "const struct ether_addr *n" .Ft int .Fn ether_ntohost "char *hostname" "const struct ether_addr *e" .Ft int .Fn ether_hostton "const char *hostname" "struct ether_addr *e" .Sh 解説 これらの関数は、 .Ar ether_addr 構造体を使用してイーサネットアドレスを操作します。 この構造体はヘッダファイル .Aq Pa netinet/if_ether.h に定義されています。 .Bd -literal -offset indent /* * イーサネット(MAC)アドレスのバイト数 */ #define ETHER_ADDR_LEN 6 /* * 48 ビットイーサネットアドレスの構造体 */ struct ether_addr { u_char octet[ETHER_ADDR_LEN]; }; .Ed .Pp .Fn ether_line 関数は、 .Xr ethers 5 形式の .Tn ASCII 文字列である .Ar l を走査し、文字列で指定されたイーサネットアドレスを .Ar e に設定し、ホスト名を .Ar h に設定します。 この関数は、 .Pa /etc/ethers の行をその構成部分にパースするのに使用されます。 .Pp .Fn ether_aton 関数は、イーサネットアドレスの .Tn ASCII 表現を .Ar ether_addr 構造体に変換します。 同様に、 .Fn ether_ntoa は、 .Ar ether_addr 構造体として指定されたイーサネットアドレスを .Tn ASCII 文字列に変換します。 .Pp .Fn ether_ntohost 関数と .Fn ether_hostton 関数は、イーサネットアドレスを .Pa /etc/ethers データベースで指定された対応するホスト名にマップします。 .Fn ether_ntohost は、イーサネットアドレスからホスト名への変換を行い、 .Fn ether_hostton は、ホスト名からイーサネットアドレスへの変換を行います。 .Sh 戻り値 .Fn ether_line は、処理が成功すると 0 を返します。 与えられた行 .Ar l の一部でもパースできなかった場合は 0 でない値を返します。 抽出されたイーサネットアドレスを与えられた .Ar ether_addr 構造体 .Ar e に返し、ホスト名を与えられた文字列 .Ar h に返します。 .Pp .Fn ether_ntoa は、処理が成功するとイーサネットアドレスの .Tn ASCII 表現が入った文字列へのポインタを返します。 与えられた .Ar ether_addr 構造体を変換できなかった場合は、 .Dv NULL ポインタを返します。 同じように、 .Fn ether_aton は成功すると .Ar ether_addr 構造体へのポインタを返し、失敗すると .Dv NULL ポインタを返します。 .Pp .Fn ether_ntohost 関数と .Fn ether_hostton 関数は両方とも、成功した場合は 0 を返し、 .Pa /etc/ethers データベース内に一致するものを見つけられなかった場合は 0 でない値を返します。 .Sh 注 ユーザは、 .Fn ether_line , .Fn ether_ntohost および .Fn ether_hostton の各関数に渡されるホスト名文字列が、 返されたホスト名を入れられるほど大きいことを保証する必要があります。 .Sh NIS 相互作用 .Pa /etc/ethers の中に 1 つの + が入った行がある場合、 .Fn ether_ntohost 関数と .Fn ether_hostton 関数は、 .Pa /etc/ethers ファイル内のデータに加えて、 NIS .Pa ethers.byname および .Pa ethers.byaddr マップを調べようとします。 .Sh 関連項目 .Xr yp 4 , .Xr ethers 5 .Sh バグ .Fn ether_aton 関数と .Fn ether_ntoa 関数は、これらが次に呼び出されたときには 上書きされる可能性のある静的メモリ領域に保存された値を返します。 .Sh 歴史 .Nm ライブラリ関数のこの実装は、 .Fx 2.1 のために作成され、登場しました。