реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Протокол SNMP в LwIP.
Whisper_84
сообщение Aug 14 2015, 06:46
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 15-11-10
Пользователь №: 60 898



Пытаюсь разобраться с работой SNMP в стеке LwIP. Нужно реализовать агент и посылать трапы.
Есть ли у кого-нибудь опыт реализации агента в LwIP?
Go to the top of the page
 
+Quote Post
ab1000
сообщение Aug 14 2015, 07:45
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 26-05-05
Из: г. Челябинск
Пользователь №: 5 387



На сайте LwIP есть собрание примеров в файле contrib-1.4.1.zip. Там есть пример написания своего private_mib. Так же в дистрибутиве LwIP в папке doc есть файл snmp_agent.txt там кратенько описано как начать работать с SNMP.
Go to the top of the page
 
+Quote Post
Whisper_84
сообщение Aug 14 2015, 08:07
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 15-11-10
Пользователь №: 60 898



Цитата(ab1000 @ Aug 14 2015, 10:45) *
На сайте LwIP есть собрание примеров в файле contrib-1.4.1.zip. Там есть пример написания своего private_mib. Так же в дистрибутиве LwIP в папке doc есть файл snmp_agent.txt там кратенько описано как начать работать с SNMP.

Спасибо за отклик. Недавно смотрел реализацию private_mib в версии contrib-1.4.0, собственно, мало что понял. Сейчас гляну 1.4.1, может там есть изменения.
Я написал простенький MIB файл в txt и переконвертировал его с помощью python скрипта в с-файл. Скрипт специально написан для LwIP и рекомендован пользователями. В полученном исходнике необходимо написать реализацию функции lwip_privmib_init(). С этим возникли проблемы.
Прикрепил файлы текстового MIB и полученного исходника (исходник в txt, с - загрузить не могу).

Прикрепленные файлы
Прикрепленный файл  TestMIB.txt ( 520 байт ) Кол-во скачиваний: 47
Прикрепленный файл  private_mib.txt ( 4.63 килобайт ) Кол-во скачиваний: 60
 
Go to the top of the page
 
+Quote Post
ab1000
сообщение Aug 14 2015, 08:39
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 26-05-05
Из: г. Челябинск
Пользователь №: 5 387



У меня этой функции нет, она не реализована, вернее закоментирована. Я так понял в ней реализовывается какой нибудь предврительный код перед работой с Вашими MIB.
Я си файл без утилиты питоновской создавал (вернее правил, содавал коллега rolleyes.gif так что основа у меня была).
А что, с полученными файлами проект не компилируется? Что то не работает?
Go to the top of the page
 
+Quote Post
Whisper_84
сообщение Aug 14 2015, 09:34
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 15-11-10
Пользователь №: 60 898



Цитата(ab1000 @ Aug 14 2015, 11:39) *
У меня этой функции нет, она не реализована, вернее закоментирована. Я так понял в ней реализовывается какой нибудь предврительный код перед работой с Вашими MIB.
Я си файл без утилиты питоновской создавал (вернее правил, содавал коллега rolleyes.gif так что основа у меня была).
А что, с полученными файлами проект не компилируется? Что то не работает?


Проект компилируется, но непонятно как подцепить мой объект из private_mib ко внутренностям snmp.

А как у вас проходит инициализация и работа самого snmp? В коротком описании сказано что необходимо вызывать функцию snmp_inc_sysuptime() каждые 10ms. Разве этого достаточно?

Извиняюсь за возможно глупые вопросы, но я пытаюсь разобраться.

Вы можете привести свой private_mib хотя бы частично?
Go to the top of the page
 
+Quote Post
ab1000
сообщение Aug 14 2015, 10:24
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 26-05-05
Из: г. Челябинск
Пользователь №: 5 387



Да, функцию snmp_inc_sysuptime() нужно вызывать в приложении каждые 10 мс. Кроме того должны быть разрешены как минимум 2 UDP соединения это настройка MEMP_NUM_UDP_PCB. Ну и в настройках SNMP должно быть включено само SNMP и использование private _mib. Но судя по тому, что проект у Вас компилируется это все включено.

Моя функция для инициализации SNMP:
CODE
// подготовка к работе SNMP ---------------------------------------------------
void SnmpPrepareForWork(void)
{
struct ip_addr xIpAddr;
struct snmp_obj_id SnmpObjId;


// установка sysName
snmp_set_sysname((u8_t*)Sysname, (u8_t*)&Sysname_len);
// установка sysDescr
snmp_set_sysdesr((u8_t*)Sysdescr, (u8_t*)&Sysdescr_len);
// установка sysContact
snmp_set_syscontact((u8_t*)Syscontact, (u8_t*)&Syscontact_len);
// установка sysLocation
snmp_set_syslocation((u8_t*)Syslocation, (u8_t*)&Syslocation_len);

// задаем SNMP_SYSOBJID
SnmpObjId.len = 9;
SnmpObjId.id[0] = 1;
SnmpObjId.id[1] = 3;
SnmpObjId.id[2] = 6;
SnmpObjId.id[3] = 1;
SnmpObjId.id[4] = 4;
SnmpObjId.id[5] = 1;
SnmpObjId.id[6] = ENTERPRISE_ID;
SnmpObjId.id[7] = 2;
SnmpObjId.id[8] = 4;
snmp_set_sysobjid(&SnmpObjId);

// включение трапов
if ((gSNMP_IPaddr1[0] & gSNMP_IPaddr1[1] & gSNMP_IPaddr1[2] & gSNMP_IPaddr1[3]) != 0xFF &&
(gSNMP_IPaddr1[0] | gSNMP_IPaddr1[1] | gSNMP_IPaddr1[2] | gSNMP_IPaddr1[3]) != 0)
{
IP4_ADDR(&xIpAddr, gSNMP_IPaddr1[0], gSNMP_IPaddr1[1], gSNMP_IPaddr1[2], gSNMP_IPaddr1[3]);
snmp_trap_dst_enable(0, 1);
snmp_trap_dst_ip_set(0, &xIpAddr);
}
else
{
snmp_trap_dst_enable(0, 0);
}
if ((gSNMP_IPaddr2[0] & gSNMP_IPaddr2[1] & gSNMP_IPaddr2[2] & gSNMP_IPaddr2[3]) != 0xFF &&
(gSNMP_IPaddr2[0] | gSNMP_IPaddr2[1] | gSNMP_IPaddr2[2] | gSNMP_IPaddr2[3]) != 0)
{
IP4_ADDR(&xIpAddr, gSNMP_IPaddr2[0], gSNMP_IPaddr2[1], gSNMP_IPaddr2[2], gSNMP_IPaddr2[3]);
snmp_trap_dst_enable(1, 1);
snmp_trap_dst_ip_set(1, &xIpAddr);
}
else
{
snmp_trap_dst_enable(1, 0);
}
if ((gSNMP_IPaddr3[0] & gSNMP_IPaddr3[1] & gSNMP_IPaddr3[2] & gSNMP_IPaddr3[3]) != 0xFF &&
(gSNMP_IPaddr3[0] | gSNMP_IPaddr3[1] | gSNMP_IPaddr3[2] | gSNMP_IPaddr3[3]) != 0)
{
IP4_ADDR(&xIpAddr, gSNMP_IPaddr3[0], gSNMP_IPaddr3[1], gSNMP_IPaddr3[2], gSNMP_IPaddr3[3]);
snmp_trap_dst_enable(2, 1);
snmp_trap_dst_ip_set(2, &xIpAddr);
}
else
{
snmp_trap_dst_enable(2, 0);
}

// отправка трапа холодного старта
snmp_coldstart_trap();
}


Cвой private_mib я бы частично мог привести, но мне его надо будет почистить так чтобы не вырезать лишнего. Но он довольно большой и в нем разбираться будет труднее чем в файле из примера.

У Вас сам прибор то в сети пингуется? Соединение UDP устанавливает? Какой программой Вы проверяете чтение или запись переменных?
Go to the top of the page
 
+Quote Post
Whisper_84
сообщение Aug 14 2015, 11:09
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 15-11-10
Пользователь №: 60 898



Я установил программу iReasoning MIB Browser, там возможна загрузка своего MIB, отправка GET SET запросов и прием трапов.
Поэтому и хотел оттолкнуться от текстового MIB, чтобы он был универсальным. Но чувствую придется вручную писать реализацию private_mib.c.
Сейчас разберусь с вашей инициализацией SNMP. Большое спасибо!

До чтения и установки переменных я пока не дошел. Тот сишник, что сгенерил мне скрипт мало походит на сишник из примера.
А в примере пока толком не разобрался. UDP работает.
Если будет возможность - скиньте private_mib - буду очень признателен. На чистку можете не тратить время, постараюсь разобраться.
Go to the top of the page
 
+Quote Post
ab1000
сообщение Aug 14 2015, 11:50
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 26-05-05
Из: г. Челябинск
Пользователь №: 5 387



Прикрепил свой private_mib
Прикрепленные файлы
Прикрепленный файл  private_mib.zip ( 12.7 килобайт ) Кол-во скачиваний: 48
 
Go to the top of the page
 
+Quote Post
Whisper_84
сообщение Aug 14 2015, 14:56
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 15-11-10
Пользователь №: 60 898



Большое спасибо! Буду разбираться.
Go to the top of the page
 
+Quote Post
Whisper_84
сообщение Mar 31 2016, 09:47
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 15-11-10
Пользователь №: 60 898



Цитата(ab1000 @ Aug 14 2015, 14:50) *
Прикрепил свой private_mib


Большое Вас спасибо за помощь, помогли разобраться.
К счастью проект почти закончен, а часть с snmp там давно и успешно работает.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th July 2025 - 14:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01433 секунд с 7
ELECTRONIX ©2004-2016