スポンサーリンク

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

名称

link_addr, link_ntoa − リンクレベルアクセス用基本アドレス指定ルーチン

ライブラリ

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

書式

#include <sys/types.h>
#include <sys/socket.h>
#include <net/if_dl.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() 関数は戻 り値を返しません ( バグ参照のこと)。

関連項目

addr2ascii(3)

歴史

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

スポンサーリンク