实现一个net-snmp子代理(linux/C)



我了解了如何使用net-snmp库实现snmp子代理(http://net-snmp.sourceforge.net/tutorial/tutorial-5/toolkit/demon/index.html)

示例运行良好,但我想问一个关于"netsnmp_register_int_instance(&variable)"中引用传递的变量的问题

当snmp deamon接收到snmp请求时,会读取此变量,该命令会要求"agentx"请求子代理提供变量的值。

但是洛克斯呢?我将把子代理与我自己的二进制文件链接起来,允许他每秒钟提供有关其状态的信息。

有时,变量可能被snmp库代码读取,而被我自己的代码写入?

我必须修改读取变量的snmp库块的代码来设置锁?

谢谢。

如果您的二进制文件是多线程的,那么您需要锁。如果没有,不要担心。

最简单的做法是在调用代理x处理例程(例如agent_check_and_process)之前设置锁。如果您需要更细粒度的锁定,那么您必须实现自己的处理程序,而不是使用net_snmp_register_int_instance。

最新更新