Большая картинка:
Цель состоит в том, чтобы создать подпрограммы (C ++), предоставляемые процессами, выполняемые SNMP NMS (системой управления сетью), с одной стороны, через агент SNMP.
С другой стороны, процессам необходима возможность сообщать свое состояние (например, инициализация, активен, остановлен) и регистрировать сообщения в SNMP NMS через агента SNMP.
Самый многообещающий подход, который я нашел, - это реализация субагента C ++ Net-SNMP, который предоставляет небольшой API.
e.g.
- setCallback (Обратный вызов c)
- logMsg (строка s)
- setState (State st)
Соответствующие Процессы могут реализовать этот API и передавать объекты обратного вызова, устанавливать фактическое состояние и сообщения журнала.
Дело в том, что подпрограммы, предоставляемые объектами обратного вызова, должны быть описаны в MIB (базе управляющей информации), чтобы сделать их доступными для NMS. Так как конкретные подпрограммы неизвестны во время компиляции, я ищу способ перевести сигнатуру подпрограммы в описание SMIv2 (ASN.1) для расширения MIB во время выполнения.
Знаете ли вы структуру, инструмент или подход, которые удовлетворяют требованиям, или метод, позволяющий сделать подпрограммы «доступными» в MIB агента SNMP?
Можно ли вообще расширить MIB агента во время выполнения?