EN JA
LINK_ADDR(3)
LINK_ADDR(3) FreeBSD Library Functions Manual LINK_ADDR(3)

名称

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() については、文字列 addrifconfig(8) の最初の引数にふさわしい、形式“名前ユニット番号”のオプションのネットワークインタフェース識別子に続いて、すべての場合に、コロンおよびピリオドによって分離された 16 進数の数字のグループの形式のインタフェースアドレスを含むことができます。各グループは、アドレスの 1 つのバイトを表現します。アドレスバイトは左から右に下位バイトから上位バイトで記入されます。

したがって、 le0:8.0.9.13.d.30 は、最初の Lance ethernet (イーサネット) インタフェースで送信されるイーサネットアドレスを表わします。

戻り値

link_ntoa() 関数は常にヌル文字で終了した文字列を返します。 link_addr() 関数には返り値はありません。 ( BUGS を参照。)

関連項目

getnameinfo(3)

歴史

link_addr() と link_ntoa() 関数は、 4.3BSD-Reno で登場しました。

バグ

link_ntoa で返される値は、静的メモリ領域に存在します。

関数 link_addr() は、形式化された入力を不適当に診断するべきです。また、これを認識する明白な方法があるべきです。

リンクソケットアドレス sdlsdl_len フィールドが 0 である場合、 link_ntoa() は、インタフェースアドレスバイトの前にコロンを挿入しないでしょう。初期のコロンを挿入せずに、この翻訳されたアドレスが link_addr() に与えられる場合、後者はそれを正確に解釈しないでしょう。

February 28, 2007 FreeBSD