IF_NAMETOINDEX(3) | FreeBSD Library Functions Manual | IF_NAMETOINDEX(3) |
名称
if_nametoindex, if_indextoname, if_nameindex, if_freenameindex — インタフェース名とインデックスの間のマッピングを提供する書式
#include < sys/types.h>#include < sys/socket.h>
#include < net/if.h>
unsigned int
if_nametoindex( const char *ifname);
char *
if_indextoname( unsigned int ifindex, char *ifname);
struct if_nameindex *
if_nameindex( void);
void
if_freenameindex( struct if_nameindex *ptr);
解説
if_nametoindex() 関数は、対応するインデックスの ifname で指定されたインタフェース名をマップします。指定されたインタフェースが存在しない場合、それは 0 を返します。if_indextoname() 関数は、少なくとも IFNAMSIZ バイトでなければならない ifname によって指されるバッファにコピーされる、対応する名前のための ifindex で指定されたインタフェースインデックスをマップします。さらに、このポインタは関数の返り値です。指定されたインデックスに対応するインタフェースがない場合、 NULL が返されます。
if_nameindex() 関数は、インクルードファイル < net/if.h> に定義されている、 1 つのインタフェース当たり 1 つの構造体で if_nameindex 構造体の配列を返します。 if_nameindex 構造体は少なくとも次のエントリを含んでいます。
unsigned int if_index; /* 1, 2, ... */ char *if_name; /* ヌル文字で終了する名前: "le0", ... */
構造体の配列の終りは、0 の if_index および NULL の if_name の構造体によって示されます。 NULL ポインタはエラーの場合、返されます。
if_freenameindex() 機能は、 if_nameindex() によって割り付けられたダイナミックメモリを解放します。
戻り値
成功して終了すれば、 if_nametoindex() は、インタフェースのインデックス番号を返します。インタフェースが見つからない場合、0 の値は返され、 errno に ENXIO が設定されます。また、 getifaddrs(3) によってインタフェースのリストを検索する間にエラーが生じる場合、0 の値が返されます。成功して終了すれば、 if_indextoname() は ifname を返します。インタフェースが見つからない場合、 NULL ポインタは返され、 errno に ENXIO が設定されます。また、 getifaddrs(3) によってインタフェースのリストを検索する間にエラー生じる場合、 NULL ポインタが返されます。
getifaddrs(3) によってインタフェースのリストを検索する間にエラー生じる場合、あるいは十分なメモリを割り付けることができない場合、 if_nameindex() は NULL ポインタを返します。
規格
if_nametoindex(), if_indextoname(), if_nameindex() と if_freenameindex() 関数は、 RFC 2553 に適合しています。歴史
実装は、 BSDI BSD/OS ではじめて登場しました。November 23, 2005 | FreeBSD |