使用net-snmp API并使用mib2c生成框架代码,是否可以支持表的延迟初始化?我的意思是,在不直接查询表中的任何成员之前,表不会初始化。这样做的原因是,成员数据是从另一台服务器获取的,并且我希望能够启动snmpd守护程序而无需另一台服务器联机/准备好进行请求。我想过用可能在查询成员时使用实际值更新的伪数据初始化表,但是我不确定这是否是最佳方法。

该表也只有一行条目,因此使用mib2c.iterate.conf生成表迭代器并处理所有这些似乎是不必要的。我想到也许只是实现MIB中定义的序列,而不是实际表,但这并不是我所看到的所有示例中通常这样做的方式。我查看了/mibgroup/examples/delayed_instance.c,但这并不是我想要的。我将mib2c与mib2c.create-dataset.conf配置文件一起使用是最容易使它容易工作的方法,但是此配置文件假定数据是静态的而不是外部的(在我的情况下这都不是真的),所以它不会工作。如果不容易做到,我可能只会实现序列而不是表,但是我希望有一种简单的方法。提前致谢。

最佳答案

迭代器方法可以正常工作。在调用_first和_next例程之前,它不会加载任何数据。因此,在这些例程和_handler例程中,由您决定从远程服务器请求数据。实际上,默认情况下,它根本不缓存数据,因此可以让您查询远程服务器的每个请求。如果表中有很多数据,这可能会很慢,因此在这种情况下,建议添加一个高速缓存以将数据存储N秒。

10-06 15:21