tail head cat sleep
QR code linking to this page

manページ  — IFMIB

名称

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, RFC 1650, Definitions of Managed Objects for the Ethernet-like Interface Types Using SMIv2, 1994年 8月.

バグ

ほとんどのイーサネットライクなインタフェースは Ethernet MIB を まだサポートしていません。サポートすることを知られているインタフェースには ed(4) 及び de(4) を含みます。 にもかかわらず、すべてのインタフェースは自動的に generic MIB をサポートします。

歴史

ifmib は FreeBSD 2.2 で初めて出現しました。

FreeBSD 2.2 IFMIB (4) November 15, 1996

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

“ UNIX has been evolving feverishly for close to 30 years, sort of like bacteria in a cesspool — only not as attractive ”
— John Levine, "Unix for Dummies"