net-snmpを使用してさまざまなMIBSのリストを表示し、SNMPツリー構造に関連するその他の情報を表示したいと思います。
これで、顧客のSMIv1 MIBSはリストに表示されませんが、net-snmpによって正しくロードされていることがわかりました。
サンプルのnet-snmpコードは、メモリ内のMIB構造を通過し、ツリー内のMIBとMODULE-IDENTITYノートの間にSMIv2全単射があることを前提としています。したがって、MODULE-IDENTITYノードを見つけると、MIBが見つかります。
net-snmpを使用してSMIv1MIBSを一覧表示する正しい方法を知っている人はいますか?(または任意の回避策?)
// Read mibs and obtain memory structures
struct tree * head = read_all_mibs();
// Walk down the SNMP tree
for ( struct tree * tp = head; tp; tp = tp->next_peer )
{
// Module-indentity
if ( tp->type == TYPE_MODID )
{
// XXX We found a SMIv2 MIB, but SMIv1 MIBs have no MODULE-IDENTITY node
}
}
注意:コンバーターのsmidump(コマンドラインツール、またはhttp://www.ibr.cs.tu-bs.de/projects/libsmi/tools/のWebサービスとして)を見つけましたが、MODULEを追加しません- MIBへのIDENTITYノード。
編集:古いSNMP MIBをより新しいもの(SMIv2スタイル)に変換するツールであれば、問題を解決できることに注意してください。その特定の方向に何か助けはありますか?
1つの提案は、MODULE-IDENTIFIERがない場合に、MIBのルートOBJECT-IDENTIFIERを見つけることです(MIBは、多くの異なる無関係な場所にノードを追加するため、これは機能しません)。ルートノードを使用すると、そのMIBに関連するツリーのほとんどを表示できます。