延迟表初始化

时间:2011-01-25 20:32:08

标签: c snmp net-snmp mib

使用net-snmp API并使用mib2c生成框架代码,是否可以支持延迟初始化表?我的意思是,在直接查询任何成员之前,表格不会被初始化。原因是成员数据是从另一台服务器获得的,我希望能够启动snmpd守护进程而不需要其他服务器在线/准备好请求。我想到可能用虚拟数据初始化表,当查询成员时,虚拟数据会使用实际值进行更新,但我不确定这是否是最好的方法。

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

1 个答案:

答案 0 :(得分:1)

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