SNMPpp, работа с counter64

В общем, мне нужно получить кол-во пройденного трафика по OID'у 1.3.6.1.2.1.31.1.1.1.6.x, где х - номер порта. Но, тип данных который установлен у него - counter64. Я использую библиотеку для работы с SNMP - SNMPpp. Counter32 получаю без проблем, 64 - с траблами.

Проблема в том, что значения которые приходят - они различаются. Получая значение с помощью snmpget, я условно получаю одно число, в своем - другое.


Ответы (1 шт):

Автор решения: kavo tavo

В общем, в структуре counter64 есть 2 поля, low и high. Нам нужно поле high умножить на 2^32 и прибавить low.

uint64_t number = counter64->high * pow(2,32) + counter64->low;

И мы получаем наше значение :)

→ Ссылка