EN JA
IFMIB(4)
IFMIB(4) FreeBSD Kernel Interfaces Manual IFMIB(4)

名称

ifmibネットワークインタフェースのための管理情報ベース (MIB)

書式

#include < sys/types.h>
#include < sys/socket.h>
#include < sys/sysctl.h>
#include < sys/time.h>
#include < net/if.h>
#include < net/if_mib.h>

解説

ifmib 機能は、 netstat(1), slstat(8) と SNMP 管理エージェントのようなクライアントアプリケーションにネットワークインタフェースに関する管理情報を提供する sysctl(3) インタフェースのアプリケーションです。この情報は、テーブルの各行が ( lo(4) のような、ハードウェアデバイスまたはソフトウェア疑似デバイスのいずれかの) 論理的なネットワークインタフェースを表す、テーブルとして構造化されています。それぞれ次の単一の構造体を含んでいる、テーブルに 2 つの列があります: 1 つの列は、すべてのインタフェースに関連する位版的な情報を含んでいて、もう一方は、特定のクラスのインタフェースへの特有の情報を含んでいます。 (一般的に、後者は、それが存在し、カーネルに実装することができるなら、特有のインタフェースクラスのために定義された SNMP MIB を実装しています。)

ifmib 機能は、 sysctl(3) MIB の“ net.link.generic”ブランチによってアクセスされます。 sysctl(3) name の各レベルための明白な定数は、 < net/if_mib.h> に定義されています。テーブルの最後の行のインデックスは、“ net.link.generic.system.ifcount”によって (または、明白な定数、 CTL_NET, PF_LINK, NETLINK_GENERIC, IFMIB_SYSTEM, IFMIB_IFCOUNT を使用して) 与えられます。特定のインタフェースを検索する管理アプリケーションは、望ましいインタフェースが見つかるか、またはインタフェースのカウントに到達されるまで、行 1 で始まり行ごとのテーブルを通して継続するべきです。テーブルは、スパース (まばら) であるかもしれないことに注意してください、すなわち、与えられた行は、 ENOENTerrno によって示され、存在しないかもしれません。そのようなエラーは、無視されるべきで、次の行がチェックされるべきです。

すべてのインタフェースに共通の一般的なインタフェース情報は、次の手続きによってアクセスすることができます:

int 
get_ifmib_general(int row, struct ifmibdata *ifmd) 
{ 
 int name[6]; 
 size_t len; 
 
 name[0] = CTL_NET; 
 name[1] = PF_LINK; 
 name[2] = NETLINK_GENERIC; 
 name[3] = IFMIB_IFDATA; 
 name[4] = row; 
 name[5] = IFDATA_GENERAL; 
 
 len = sizeof(*ifmd); 
 
 return sysctl(name, 6, ifmd, &len, (void *)0, 0); 
}

struct ifmibdata のフィールドは、次の通りです:

ifmd_name
( char []) ユニット番号を含むインタフェースの名前
ifmd_pcount
( int) 不規則なリスナの数
ifmd_flags
( int) ( < net/if.h> に定義された) インタフェースのフラグ
ifmd_snd_len
( int) 送信キューの現在の瞬間的の長さ
ifmd_snd_drops
( int) 送信キューが満杯だったので、このインタフェースで落されたパケットの数
ifmd_data
( struct if_data) < net/if.h> に定義された構造体からのより多くの情報 ( if_data(9) を参照)

クラス特有の情報は、代わりに IFDATA_LINKSPECIFIC 列を調べることによって検索して取り出すことができる。構造体の形式と長さは、インタフェースのクラスに依存することに注意してください。 IFT_ETHER, IFT_ISO88023IFT_STARLAN インタフェースについて、構造体は、 ( < net/if_mib.h> に定義された) “ struct ifmib_iso_8802_3”と呼ばれ、イーサネットのようなネットワークのための RFC 1650 MIB のスーパセットを実装します。

関連項目

sysctl(3), intro(4), ifnet(9) F. Kastenholz, Definitions of Managed Objects for the Ethernet-like Interface Types Using SMIv2, August 1994, RFC 1650.

歴史

ifmib インタフェースは、 FreeBSD 2.2 ではじめて登場しました。

バグ

多くのイーサネットのようなインタフェースは、まだイーサネット MIB をサポートしていません。それをサポートすることが知られているインタフェースは、 ed(4)de(4) を含んでいます。にもかかわらず、すべてのインタフェースは、自動的に一般的な MIB をサポートしています。
October 28, 2009 FreeBSD