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 で始まり行ごとのテーブルを通して継続するべきです。テーブルは、スパース (まばら) であるかもしれないことに注意してください、すなわち、与えられた行は、 ENOENT の errno によって示され、存在しないかもしれません。そのようなエラーは、無視されるべきで、次の行がチェックされるべきです。
すべてのインタフェースに共通の一般的なインタフェース情報は、次の手続きによってアクセスすることができます:
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_ISO88023 と IFT_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 |