Назад | Перейти на главную страницу

netsnmp - как прописать строку?

Я использую net-snmp. Я пытаюсь добавить свои собственные mib (обработчик не нужен, просто MIB, который я могу получить и установить с помощью вызова snmp), поэтому я выполнил скалярный пример. Чтобы добавить свои собственные 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);

}

Я не знаю, правильный ли это способ, но он работает.

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));
}