Я использую 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));
}