LINK_ADDR(3) FreeBSD ライブラリ関数マニュアル LINK_ADDR(3)
名称
link_addr, link_ntoa − リンクレベルアクセス用基本アドレス指定ルーチン |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <sys/types.h> void |
link_addr(const char *addr, struct sockaddr_dl *sdl); char * |
link_ntoa(const struct sockaddr_dl *sdl); |
解説 |
link_addr() ルーチンは、リンクレベルアドレスを表す文字列を解釈し、システ ムコールで使用するのに適したバイナリ情報を返します。 link_ntoa() ルーチン は、リンクレベルアドレスを引数に取り、リンクレベルアドレス自身、存在する 場合はそのインタフェース名や番号などを含んだ、現在の情報を示す ASCII 文字 列を返します。この機能はまだ試用段階であり、変更される可能性があります。 link_addr() に対して、文字列 addr には、 ifconfig(8) の第一引数となりうる ‘‘name unit-number’’ という形の任意指定のネットワークインタフェース識別子 を含むことができ、その後にコロン、そしてピリオドで区切られた 16 進数の組 の形のインタフェースアドレスが続きます。それぞれの組はアドレスの 1 バイト を示しており、アドレスバイトは左から右へ、低位のバイトから高位のバイトへ と占められます。 つまり le0:8.0.9.13.d.30 は 1 つ目の Lance イーサネットインタフェースへ転 送されるイーサネットアドレスを表します。 これらの関数を直接使うのは避けられる傾向があり、むしろ addr2ascii(3) イン タフェースが使われます。しかし、このインタフェースはまだ広くは実装されて いないので、移植性のあるプログラムでは、このインタフェースに依存するわけ にはいきません。 |
戻り値
link_ntoa() は、常にヌルで終了する文字列を返します。 link_addr() 関数は戻 り値を返しません ( バグ参照のこと)。 |
関連項目
歴史
link_addr() および link_ntoa() 関数は 4.3BSD−Reno で登場しました。 |
バグ
link_ntoa() の戻り値は静的なメモリ領域にあります。 関数 link_addr() は、不適切な形式の入力を診断する機能が必要であり、これを 認識するあいまいでない方法が必要となります。 リンクソケットアドレスの sdl_len フィールドが 0 の場合、 link_ntoa() は、 インタフェースアドレスバイトの前にコロンを挿入しません。変換されたアドレ スが、最初のコロンが挿入されずに link_addr() に渡された場合、この関数はア ドレスを正しく解釈しないでしょう。 FreeBSD 10.0 June 17, 1996 FreeBSD 10.0 |