IFMIB(4) FreeBSD カーネルインタフェースマニュアル IFMIB(4)
名称
ifmib − ネットワークインタフェースの MIB |
概要
#include <sys/types.h> |
解説
ifmib 機能は、 netstat(1,) slstat(8) 及び SNMP 管理エージェントのようなク ライアントアプリケーションに対し、ネットワークインタフェースに関する管理 情報を提供する sysctl(3) インタフェースのアプリケーションです。この情報 は、表のそれぞれの行が論理的なネットワークインタフェース (ハードウェアデ バイスまたは lo(4) のようなソフトウェアによる仮想デバイスのどちらか) から なる表形式で構築されます。表には 2 つの列があり、それぞれの列はひとつの構 造体を持ちます。ひとつの列はすべてのインタフェースに関連する一般的な情報 を含み、もう一方の列はインタフェースの特定のクラスに固有な情報を含みま す。 (一般的に後者は、もし存在しカーネルに実装可能であれば、特定のインタ フェースクラスを定義する 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 番目の行から 開始し、指定されたインタフェースが検出されるか、インタフェースの総数に達 するまで、行から行へと表を移動します。 すべてのインタフェースに共通な、一般的なインタフェース情報は下記の手順で アクセスできます: int get_ifmib_general(int row, struct ifmibdata *ifmd) { |
int name[6]; |
||
name[0] = CTL_NET; |
||
name[1] = PF_LINK; |
||
name[2] = NETLINK_GENERIC; |
||
name[3] = IFMIB_IFDATA; |
||
name[4] = row; |
||
name[5] = IFDATA_GENERAL; |
||
return sysctl(name, 6, ifmd, sizeof *ifmd, (void *)0, 0); |
} ifmibdata 構造体のフィールドは下記のとおりです: |
ifmd_name
(char []) ユニット番号を含む、インタフェースの名前 ifmd_pcount ifmd_flags ifmd_snd_len ifmd_snd_drops ifmd_data クラス固有な情報は IFDATA_LINKSPECIFIC 列を代わりに調べることによって取得 できます。構造体の形式および長さはインタフェースのクラスに依存することに 注意して下さい。 IFT_ETHER, IFT_ISO88023, IFT_STARLAN インタフェースにつ いては, 構造体は ‘‘struct ifmib_iso_8802_3’’ ( 〈net/if_mib.h〉 で定義され ています) と呼ばれていて、イーサネットライクなネットワークのための RFC 1650 MIB のスーパセットを実装しています。 IFT_SLIP については, 構造体は ‘‘struct sl_softc’’ (〈net/if_slvar.h〉) です。 関連項目 |
F. Kastenholz, Definitions of Managed Objects for the Ethernet-likeInterface Types Using SMIv2, 1994年 8月, RFC 1650.
バグ
ほとんどのイーサネットライクなインタフェースは Ethernet MIB をまだサポー トしていません。サポートすることを知られているインタフェースには ed(4) 及 び de(4) を含みます。にもかかわらず、すべてのインタフェースは自動的に generic MIB をサポートします。 |
歴史
ifmib は FreeBSD 2.2 で初めて出現しました。 FreeBSD 2.2 November 15, 1996 FreeBSD 2.2 |