gpt4 book ai didi

c++ - SNMP 代理 X : Howto register for OIDs?

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:31 25 4
gpt4 key购买 nike

我正在用 C++ 为 Net-SNMP 编写 AgentX 子代理。

我尝试像这样注册 OID 1.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);

奇怪的是,1.3.6.1.4.1.4711.1.1 的 snmpget 失败,我的处理程序仅在我为 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,这样我就不必定义这么多处理程序?

最佳答案

您正在尝试做的是一个不受支持的 SNMP 用例,使用 Net-SNMP 库可能无法实现(尽管我不确定您是否无法破解自己的荣耀之路并让它发挥作用) .

它不受支持的原因是标量(或者换句话说,不是表)根据定义应该以 base_oid.0 结尾。另一方面,表格以表格条目的索引结尾:base_oid.1 表示您正在查看表格中索引为 1 的条目。

如果您仍然需要 OID 以 .1 而不是 .0 结尾,则支持的选项是注册一个表处理程序。

关于c++ - SNMP 代理 X : Howto register for OIDs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10438899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com