Wednesday, March 09, 2011

С този пач - http://people.freebsd.org/~syrinx/snmp/bsnmpbulkwalk-20110308-01.diff - bsnmpwalk(1) във FreeBSD вече може да прави BulkWalks, т.е. да обхожда MIB променливи/таблици с Requests от вида "Дай ми следващите 90 обекта след този" вместо с "Дай ми следващия обект след този", например по следния начин -


#bsnmpwalk -p getbulk -M 90 -v 2 -s public@


Определено работи по-добре но при големи заявки за над 95 обекта агентът се чупи


> sudo /usr/sbin/bsnmpd -d -c /etc/snmpd.config
snmpd[36702]: stack overflow detected; terminated
> sudo gdb bsnmpd
...
Program received signal SIGABRT, Aborted.
0x281cfb27 in kill () from /lib/libc.so.7
(gdb) bt
#0 0x281cfb27 in kill () from /lib/libc.so.7
#1 0x28106f6c in __stack_chk_fail_local () from /lib/libc.so.7
#2 0x0804f7a1 in snmp_input_finish (pdu=Variable "pdu" is not available.
)
at /usr/compat/linux/home/shteryana/bsnmp_usm/usr.sbin/bsnmpd/bsnmpd/../../../contrib/bsnmp/snmpd/main.c:759
#3 0x00000001 in ?? ()
...

Вторият пач, който чака в опашката от декември месец е за "коректна" работа със connected UDP sockets - http://people.freebsd.org/~syrinx/snmp/bsnmp-20101220-03.diff .
Така се решава проблемът с едни неприятни логове

snmpd[29955]: send: Connection refused

когато агента се опитва да прати трап, но от другата страна на UDP сокета не слуша никой. Но пък се появи нов проблем, който впрочем погрешка е вече в SVN - linkUp траповете се изпращат преди coldStart.

И двата фикса ще трябва да се доизтестват и изчистят преди да заминат в SVN, но няма лошо да са в нет-а.