総合手引 | セクション 3 | English | オプション |
#include <sys/types.h>
#include <sys/socket.h>
#include <net/if_dl.h>
link_addr() に対して、文字列 addr には、 ifconfig(8) の第一引数となりうる "name unit-number" という形の任意指定のネットワークインタフェース識別子を含むことができ、 その後にコロン、そしてピリオドで区切られた 16 進数の組の形の インタフェースアドレスが続きます。 それぞれの組はアドレスの 1 バイトを示しており、 アドレスバイトは左から右へ、低位のバイトから高位のバイトへと占められます。
つまり le0:8.0.9.13.d.30 は 1 つ目の Lance イーサネットインタフェースへ転送される イーサネットアドレスを表します。
これらの関数を直接使うのは避けられる傾向があり、むしろ addr2ascii(3) インタフェースが使われます。 しかし、このインタフェースはまだ広くは実装されていないので、 移植性のあるプログラムでは、このインタフェースに依存するわけにはいきません。
関数 link_addr() は、不適切な形式の入力を診断する機能が必要であり、 これを認識するあいまいでない方法が必要となります。
リンクソケットアドレスの sdl_len フィールドが 0 の場合、 link_ntoa() は、インタフェースアドレスバイトの前にコロンを挿入しません。 変換されたアドレスが、最初のコロンが挿入されずに link_addr() に渡された場合、この関数はアドレスを正しく解釈しないでしょう。
LINK_ADDR (3) | June 17, 1996 |
総合手引 | セクション 3 | English | オプション |
このマニュアルページサービスについてのご意見は 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 | ” |