EN JA
IF_NAMETOINDEX(3)
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 および NULLif_name の構造体によって示されます。 NULL ポインタはエラーの場合、返されます。

if_freenameindex() 機能は、 if_nameindex() によって割り付けられたダイナミックメモリを解放します。

戻り値

成功して終了すれば、 if_nametoindex() は、インタフェースのインデックス番号を返します。インタフェースが見つからない場合、0 の値は返され、 errnoENXIO が設定されます。また、 getifaddrs(3) によってインタフェースのリストを検索する間にエラーが生じる場合、0 の値が返されます。

成功して終了すれば、 if_indextoname() は ifname を返します。インタフェースが見つからない場合、 NULL ポインタは返され、 errnoENXIO が設定されます。また、 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