tail head cat sleep
QR code linking to this page

manページ  — LINK_ADDR

名称

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

内容

ライブラリ

Standard C Library (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() 関数は BSD 4.3 Reno で登場しました。

バグ

link_ntoa() の戻り値は静的なメモリ領域にあります。

関数 link_addr() は、不適切な形式の入力を診断する機能が必要であり、 これを認識するあいまいでない方法が必要となります。

リンクソケットアドレスの sdl_len フィールドが 0 の場合、 link_ntoa() は、インタフェースアドレスバイトの前にコロンを挿入しません。 変換されたアドレスが、最初のコロンが挿入されずに link_addr() に渡された場合、この関数はアドレスを正しく解釈しないでしょう。


LINK_ADDR (3) June 17, 1996

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

C isn't that hard: void (*(*f[])())() defines f as an array of unspecified size, of pointers to functions that return pointers to functions that return void