On 21/07/2010 06:05, Gaurav Chaturvedi wrote:
Hi Martin,
Please use the following code after your mentioned part of code.
You need to call "snmp_sess_select_info", "select" and
"snmp_sess_read" after snmp_sess_read() function. These functions help
in reading the data from socket and call the callback function.
Also, there is no issue in using localhost in snmptrap/snmpinform
commands.
if (transport = netsnmp_tdomain_transport(port, 1, "udp")) {
ss = snmp_sess_add(&session, transport, NULL, NULL);
}
while (1) {
numfds = 0;
FD_ZERO(&fdset);
block = 1; /* note: will be set by snmp_sess_select_info */
tvp = &timeout;
if (block) timerclear(tvp);
snmp_sess_select_info(ss,&numfds, &fdset, tvp, &block);
if (block == 1) {
tvp = NULL;
}
count = select(numfds, &fdset, 0, 0, tvp);
if (count > 0) {
snmp_sess_read (ss,&fdset);
} else
....
....
} /* End of while */
if (ss) {
snmp_sess_close(ss);
ss = NULL;
}
Thanks
Gaurav Chaturvedi
On Tue, Jul 20, 2010 at 10:13 PM, Martin Townsend
<[email protected]
<mailto:[email protected]>> wrote:
Hi,
I'm having problems processing traps in my management application,
After
looking through the snmptrapd code I've added calls to
netsnmp_transport_open_server(app_name, "udp:162");
and then initialise a session with
snmp_sess_init
with the following initialisation
session_p->peername = SNMP_DEFAULT_PEERNAME; /* Original code had
NULL here */
session_p->version = SNMP_DEFAULT_VERSION;
session_p->community_len = SNMP_DEFAULT_COMMUNITY_LEN;
session_p->retries = SNMP_DEFAULT_RETRIES;
session_p->timeout = SNMP_DEFAULT_TIMEOUT;
session_p->callback = snmp_input;
session_p->callback_magic = (void *) transport_trap_server_p;
session_p->authenticator = NULL;
session_p->isAuthoritative = SNMP_SESS_UNKNOWNAUTH;
which sets up the callback snmp_input.
then snmp_add to add the session to the opened transport server.
In snmp_input I have a printf to make sure that the routine is getting
called that will output the operation_id value.
Then using snmptrap or snmpinform send the trap, e.g.
snmpinform -v2c -c public localhost ""
PO-RECTIFIER-TEST-MIB::alarmMajorHighBattVoltTrapPO
PO-RECTIFIER-TEST-M
IB::alarmMajorHighBattVoltPO.0 i 1
snmpinform: Timeout
with no success.
Is it ok to use snmpinform/trap with localhost and will the code above
receive the trap PDU on localhost?
My application runs as a process that waits for commands to arrive
over
a socket so it will be blocked, would this cause problems?
Any other ideas/things to try out?
Many Thanks in advance,
Martin.
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first <http://sprint.com/first> --
http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Net-snmp-users mailing list
[email protected]
<mailto:[email protected]>
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users
Thank you Gaurav, using the single session api I now have a separate
pthread to handle the traps. Just in case anyone else tries this be
warned that you must store the opaque session pointer returned from
snmp_sess_add (or maybe pass it via the callback_magic field) as it is
different to the one passed to the snmp_input callback routine of the
session structure. In the snmp_input routine I was trying to use
snmp_sess_send to send the INFORM reply message using the session
pointer that was passed as an input parameter which caused a seg fault.
After stepping through the code I could see that the opaque session
pointer is acutally a struct session_list * as returned by
snmp_sess_add_ex.
PS does anyone know if there's a routine that takes an OID and returns
the name/description from the MIB?
Cheers,
Martin.
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users