スポンサーリンク

IFMIB(4) FreeBSD カーネルインタフェースマニュアル 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 つの列があり、それぞれの列はひとつの構 造体を持ちます。ひとつの列はすべてのインタフェースに関連する一般的な情報 を含み、もう一方の列はインタフェースの特定のクラスに固有な情報を含みま す。 (一般的に後者は、もし存在しカーネルに実装可能であれば、特定のインタ フェースクラスを定義する 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
(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 インタフェースにつ いては, 構造体は ‘‘struct ifmib_iso_8802_3’’ ( ⟨net/if_mib.h⟩ で定義され ています) と呼ばれていて、イーサネットライクなネットワークのための RFC 1650 MIB のスーパセットを実装しています。 IFT_SLIP については, 構造体は ‘‘struct sl_softc’’ (⟨net/if_slvar.h⟩) です。

関連項目

sysctl(3), intro(4), ifnet(9)

       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

スポンサーリンク