私はC++でNet-SNMP用のAgentXサブエージェントを書いています。
このようにOID1.3.6.1.4.1.4711.1.1に登録しようとしています
oid myOID[] = { 1, 3, 6, 1, 4, 1, 4711, 1, 1 };
handler = netsnmp_create_handler_registration("foo", handler, myOID, OID_LENGTH(myOID), HANDLER_CAN_RONLY);
if (handler)
netsnmp_register_scalar(handler);
不思議なことに、snmpgetは1.3.6.1.4.1.4711.1.1で失敗し、1.3.6.1.4.1.4711.1.1.0(ゼロを追加)でsnmpgetを実行した場合にのみハンドラーが呼び出されます。
1.3.6.1.4.1.4711.1.1に登録するにはどうすればよいですか?
net-snmp.orgの例はすべてインスタンス変数を登録していますが、値を収集するためにいくつかのコードを実行する必要があります。
コールバックをC++アプリケーションからのextern"C"として宣言する必要がありますか?
1.3.6.1.4.1.4711.1未満のすべてのOIDに登録する方法の例があるので、それほど多くのハンドラーを定義する必要はありませんか?