if_nametoindex, if_indextoname -
ネットワークインターフェースの名前とインデックスのマッピングを行う
#include <net/if.h>
unsigned int if_nametoindex(const char *ifname);
char *if_indextoname(unsigned int ifindex, char *ifname);
if_nametoindex() 関数は、
名前が
ifname
のネットワークインターフェースのインデックスを返す。
if_indextoname() 関数は、
インターフェースのインデックスが
ifindex
に対応するネットワークインターフェースの名前を返す。
名前は
ifname
が指すバッファーに格納される。
バッファーは少なくとも
IF_NAMESIZE
バイトの領域が必要である。
成功した場合、
if_nametoindex()
はネットワークインターフェースのインデックス番号を返す。エラーの場合、
0 を返し、
errno
を適切に設定にする。
成功した場合には
if_indextoname() は
ifname
を返す。エラー時には
NULL が返され、
errno
が適切に設定される。
if_nametoindex()
が失敗した場合には以下の
errno が設定される。
- ENODEV
- 指定された名前を持つインターフェースがない。
if_indextoname() は以下の
errno
で失敗する場合がある。
- ENXIO
- インデックスに対応するインターフェースがない。
if_nametoindex() と
if_indextoname() は、
socket(2) と
ioctl(2)
に対して規定されているエラーのいずれかで失敗する場合がある。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
if_nametoindex(), if_indextoname() |
Thread safety |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, RFC 3493.
この関数は BSDi
初めて登場した。
getifaddrs(3),
if_nameindex(3),
ifconfig(8)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。