SNMP_ATM(3) | FreeBSD Library Functions Manual | SNMP_ATM(3) |
名称
atmif_event_f, atm_find_if_name, atm_find_if, atm_notify_aif, atm_unnotify_aif — snmpd のための ATM ドライバモジュールライブラリ
(begemotSnmpdModulePath."netgraph" = /usr/lib/snmp_netgraph.so (FreeBSD)) (begemotSnmpdModulePath."mibII" = /usr/lib/snmp_mibII.so) (begemotSnmpdModulePath."atm" = /usr/lib/snmp_atm.so)書式
#include < bsnmp/snmpmod.h>#include < bsnmp/snmp_mibII.h>
#include < bsnmp/snmp_atm.h>
typedef void
(*atmif_event_f)( struct atmif *aif, enum atmif_notify event, uintptr_t data, void *uarg);
struct atmif *
atm_find_if_name( const char *name);
struct atmif *
atm_find_if( u_int ifindex);
void *
atm_notify_aif( struct atmif *aif, const struct lmodule *mod, atmif_event_f func, void *uarg);
void
atm_unnotify_aif( void *not);
解説
snmp_atm モジュールはリモートアクセスをシステムの ATM デバイスで有効にする多くのテーブルとスカラを実装します。また、多くの関数をエクスポートして、他のモジュールが容易に ATM デバイスにアクセスできるようにします。モジュールはすべての ATM デバイスのために snmp_mibII(3) によってエクスポートされたインタフェース構造体への拡張を保守します。この構造体には、次のフィールドがあります:
struct atmif { struct mibif *ifp; /* 共通インタフェースデータ */ struct atmif_mib *mib; /* ATM MIB */ enum atmif_carrier_state carrier; enum atmif_suni_mode mode; /* SUNI モード SDH または SONET */ };
フィールドには、次の意味があります:
- ifp
- フィールドは snmp_mibII(3) インタフェース構造体を指します。
- mib
- 特別な ATM インタフェース MIB (下記参照)。
- carrier
-
キャリアの現在の状態。次の 1 つです:
- ATMIF_CARRIER_ON
- キャリア検出
- ATMIF_CARRIER_OFF
- キャリアなし
- ATMIF_CARRIER_UNKNOWN
- キャリアの状態は未知
- ATMIF_CARRIER_NONE
- デバイスは、キャリアの考えがない、かそれをセンスすることができない
- mode
-
SUNI チップがある ATM デバイスに関しては、インタフェースの現在のモードです:
- ATMIF_SUNI_MODE_SONET
- インタフェースは、SONET モード
- ATMIF_SUNI_MODE_SDH
- インタフェースは、SDH モード
- ATMIF_SUNI_MODE_UNKNOWN
- インタフェースには、SUNI インタフェースがないか、またはモードは未知です (例えば、インタフェースがダウンしている)。
名前か SNMP インタフェースインデックスによって ATM インタフェースを見つけることができます (インタフェースインデックスの議論に関しては snmp_mibII(3) 参照)。関数 atm_find_if_name() は与えられた名前でインタフェースを探します。関数 atm_find_if() はインタフェースインデックスによってインタフェースを探します。両方の関数はインタフェースを見つけることができないなら、NULL を返します。
ATM MIB は次のフィールドを含んでいます:
struct atmif_mib { u_int version; /* 現在 0 */ u_int device; /* ハードウェアのタイプ (システム特有) */ u_int serial; /* カードシリアル番号 (デバイス特有) */ u_int hw_version; /* カードバージョン (デバイス特有) */ u_int sw_version; /* ファームウェアバージョン (デバイス特有) */ u_int media; /* 物理的メディア (MIB 参照) */ u_char esi[6]; /* 終わりのシステム識別子 (MAC) */ u_int pcr; /* サポートされたピークセルレート */ u_int vpi_bits; /* VPI フィールドの使用されたビットの数 */ u_int vci_bits; /* VCI フィールドの使用されたビットの数 */ u_int max_vpcs; /* VPC の最大数 */ u_int max_vccs; /* VCC の最大数 */ };
通知
あるイベントが ATM インタフェースで起こるとき、他のモジュールは、通知を受信するために atmif_event_f で登録することができます。インタフェースへのポインタ、呼び出しモジュールのポインタ、コールバック関数、とコールバック関数に渡されるユーザ引数を取って、 atm_notify_aif() で登録は行われます。コールバック関数はインタフェースポインタ、通知コード、通知引数、とユーザ引数で呼び出されます。次の通知が定義されています:- ATMIF_NOTIFY_DESTROY
- インタフェースは破壊されます。通知引数は使用されません。
- ATMIF_NOTIFY_CARRIER
- インタフェースのキャリア状態は変化しました。引数はキャリアの 古い 状態です。新しい状態はインタフェース構造から得ることができます。
- ATMIF_NOTIFY_VCC
-
不変の VCC が作成されているか、または破壊されています。引数は次のように復号化 (デコード) することができる u_int です:
vpi = (arg >> 24) & 0xff; vci = (arg >> 8) & 0xffff; state = arg & 1;
state は、VCC が破壊されているなら 0、それが作成されているら 1 です。
MIB
モジュールによって実装された MIB は BEGEMOT-ATM.txt で定義されています。汎用部品では、2 つのテーブルと 1 つのスカラがあります、また、システムの特有のグループがあります:- begemotAtmIfTable
- このテーブルは ifTable の拡張です。それは、それぞれの ATM インタフェースの列 (row) を含んでいて、 ifIndex があるインデックスです。すべてのフィールドは begemotAtmIfMode カラムを除いて読み込み専用です。
- begemotAtmIfTableLastChange
- 行 (row) が上記のテーブルで作成されたか、または破壊されたとき、度数 (tick) を含むか、または、SNMP エージェントの始まりのときからテーブルが変更されていなかったなら 0 です。
- begemotAtmHWTable
- また、 ifIndex によってインデックス付けされて、ハードウェア特有の情報を含んでいます。このテーブルは読み込み専用です。
関連ファイル
- /usr/share/snmp/defs/atm_tree.def
- atmif_event_f. によって実装された MIB ツリーの記述。
- /usr/share/snmp/mibs/BEGEMOT-ATM.txt
- これはこのモジュールによって実装される MIB です。
作者
<harti@FreeBSD.org>May 23, 2005 | FreeBSD |