スポンサーリンク

ETHERS(3) FreeBSD ライブラリ関数マニュアル ETHERS(3)

名称

ethers, ether_line, ether_aton, ether_ntoa, ether_ntohost, ether_hostton − イーサネットアドレス変換および調査ルーチン

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <sys/types.h>
#include <sys/socket.h>
#include <net/ethernet.h>

int

ether_line(const char *l, struct ether_addr *e, char *hostname);

struct ether_addr *

ether_aton(const char *a);

char *

ether_ntoa(const struct ether_addr *n);

int

ether_ntohost(char *hostname, const struct ether_addr *e);

int

ether_hostton(const char *hostname, struct ether_addr *e);

解説

これらの関数は、 ether_addr 構造体を使用してイーサネットアドレスを操作し ます。この構造体はヘッダファイル ⟨netinet/if_ether.h⟩ に定義されていま す。

      /*
       * イーサネット(MAC)アドレスのバイト数
       */
      #define ETHER_ADDR_LEN          6

     /*
       * 48 ビットイーサネットアドレスの構造体
       */
      struct  ether_addr {
              u_char octet[ETHER_ADDR_LEN];
      };

ether_line() 関数は、 ethers(5) 形式の ASCII 文字列である l を走査し、文 字列で指定されたイーサネットアドレスを e に設定し、ホスト名を h に設定し ます。この関数は、 /etc/ethers の行をその構成部分にパースするのに使用され ます。

ether_aton() 関数は、イーサネットアドレスの ASCII 表現を ether_addr 構造 体に変換します。同様に、 ether_ntoa() は、 ether_addr 構造体として指定さ れたイーサネットアドレスを ASCII 文字列に変換します。

ether_ntohost() 関数と ether_hostton() 関数は、イーサネットアドレスを /etc/ethers データベースで指定された対応するホスト名にマップします。 ether_ntohost() は、イーサネットアドレスからホスト名への変換を行い、 ether_hostton() は、ホスト名からイーサネットアドレスへの変換を行います。

戻り値

ether_line() は、処理が成功すると 0 を返します。与えられた行 l の一部でも パースできなかった場合は 0 でない値を返します。抽出されたイーサネットアド レスを与えられた ether_addr 構造体 e に返し、ホスト名を与えられた文字列 h に返します。

ether_ntoa() は、処理が成功するとイーサネットアドレスの ASCII 表現が入っ た文字列へのポインタを返します。与えられた ether_addr 構造体を変換できな かった場合は、 NULL ポインタを返します。同じように、 ether_aton() は成功 すると ether_addr 構造体へのポインタを返し、失敗すると NULL ポインタを返 します。

ether_ntohost() 関数と ether_hostton() 関数は両方とも、成功した場合は 0 を返し、 /etc/ethers データベース内に一致するものを見つけられなかった場合 は 0 でない値を返します。

ユーザは、 ether_line(), ether_ntohost() および ether_hostton() の各関数 に渡されるホスト名文字列が、返されたホスト名を入れられるほど大きいことを 保証する必要があります。

NIS 相互作用

/etc/ethers の中に 1 つの + が入った行がある場合、 ether_ntohost() 関数と ether_hostton() 関数は、 /etc/ethers ファイル内のデータに加えて、 NIS ethers.byname および ethers.byaddr マップを調べようとします。

関連項目

yp(4), ethers(5)

バグ

ether_aton() 関数と ether_ntoa() 関数は、これらが次に呼び出されたときには 上書きされる可能性のある静的メモリ領域に保存された値を返します。

歴史

ethers ライブラリ関数のこの実装は、 FreeBSD 2.1 のために作成され、登場し ました。

FreeBSD 10.0 April 12, 1995 FreeBSD 10.0

スポンサーリンク