netsnmp-如何注册字符串?

netsnmp-如何注册字符串?

我使用 net-snmp。我尝试添加自己的 mib(不需要在处理程序中,只需一个我可以通过 snmp 调用获取和设置的 MIB),因此我遵循标量示例。为了添加我自己的 mib,我在 mib 文件中定义了它们并创建了一个代理扩展。(见下文)。

它工作正常,所以我现在有一个整数 MIB。现在我想添加字符串 mib,所以我定义了 MIB,但我没有找到字符串的注册 API,就像我为 int 找到的一样 - netsnmp_register_int_instance。我查看了包含文件,但没有找到匹配的。

代理人:

#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "monitor.h"


static int int_init = 0;  /* default value */


void init_monitor(void)
{

    oid  open_connections_count_oid[] =
        { 1, 3, 6, 1, 4, 1, 8075, 1, 0 };

    netsnmp_register_int_instance("open_connections_count",
                                  open_connections_count_oid,
                                  OID_LENGTH(open_connections_count_oid),
                                  &int_init, NULL);

}

答案1

我不知道这是否是正确的方法,但它有效。

static char errors_value[MY_MAX_LEN];
void init_monitor_snmp_agent(void) {
    const oid errors_oid[] = { 1, 3, 6, 1, 4, 1, 8075, 10 };//In this we dont add the 0 at the end
    strcpy(errors_value, "");
    netsnmp_register_watched_scalar(
            netsnmp_create_handler_registration("open_connections_list", NULL,
                    errors_oid, OID_LENGTH(errors_oid),
                    HANDLER_CAN_RWRITE),
            netsnmp_create_watcher_info(&errors_value, MY_MAX_LEN,
                    ASN_OCTET_STR, WATCHER_MAX_SIZE));
}

相关内容