Re: Traps/Informs

Martin Townsend <[email protected]>
Newsgroups gmane.network.net-snmp.user
Organization Power Oasis
Message-ID <[email protected]>
Hi,

A couple more questions.

1) How to close transport and session down.

I used
     if(mgr_p->session_p) {
         SNMPD_LOG(LOG_INFO, SNMPD_LOG_GROUP_TRAP, "Closing session.");
         snmp_sess_close(mgr_p->session_p);
     }

     if(mgr_p->transport_trap_server_p) {
         SNMPD_LOG(LOG_INFO, SNMPD_LOG_GROUP_TRAP, "Closing transport 
trap server.");
         netsnmp_transport_free(mgr_p->transport_trap_server_p);
     }
which seg faults on the netsnmp_transport_free.  Looking through the 
snmp_sess_close it does seem to close down the transport object, can 
anybody confirm this or should I be using some other way of closing down.

2) dmalloc is reporting memory leaks which are in calls inet_ntoa.  
Using gdb they relate to the following lines of netsnmp_udp_fmtaddr

             sprintf(tmp, "UDP: [%s]:%hu->",
                     inet_ntoa(to->sin_addr), ntohs(to->sin_port));
             sprintf(tmp + strlen(tmp), "[%s]", 
inet_ntoa(addr_pair->local_addr));

Here's the stack trace
#0  0x402770a8 in inet_ntoa () from /lib/libc.so.6
#1  0x4007db38 in netsnmp_udp_fmtaddr (t=0x0, data=0xbea90a80, len=0)
     at snmpUDPDomain.c:122
#2  0x4007ee3c in netsnmp_udp_transport (addr=0xbea90b54, local=1)
     at snmpUDPDomain.c:616
#3  0x400809b0 in netsnmp_udp_create_tstring (str=0x0, local=1,
     default_target=0x0) at snmpUDPDomain.c:1232
#4  0x4007d1dc in netsnmp_tdomain_transport_full (
     application=0x1571c "sscd_snmpd", str=0x16640 "udp:162", local=1,
     default_domain=0x0, default_target=0x0) at snmp_transport.c:443
#5  0x4007d9ac in netsnmp_transport_open_server (application=0x0,
     str=0xbea90a80 "") at snmp_transport.c:502
#6  0x0000df04 in snmpd_trap_mgr_open () at sscd_snmpd_trap.c:358
#7  0x0000a9a4 in main (argc=2, argv=0xbea90d04) at sscd_snmpd.c:349

I've read somewhere that there is a problem with inet_ntoa and memory 
leaks, is there a way of avoiding this call?

Cheers,
Martin.

On 22/07/2010 10:24, Gaurav Chaturvedi wrote:
> Hi Martin,
>
> Its good that you got the solution now.
>
> Following are the functions which can be used in your case as per the 
> requirement:
>
> *print_objid*, *fprint_objid*, *snprint_objid
>
> Synatx:
>
> **void print_objid(const oid **/objid/*, size_t* /objidlen/*);
> void fprint_objid(FILE **/fp/*, const oid **/objid/*, size_t* 
> /objidlen/*);
> int snprint_objid(char **/buf/*, size_t* /len/*, const oid **/objid/*, 
> size_t* /objidlen/*);*
>
> Thanks
> Gaurav
>
> On Thu, Jul 22, 2010 at 2:18 PM, Martin Townsend 
> <[email protected] 
> <mailto:[email protected]>> wrote:
>
>     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://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
>
>


-- 
Martin Townsend
PowerOasis
Suite 1, Unit 41
Shrivenham Hundred Business Park
Majors Road
Watchfield
Swindon
Wilts SN6 8TZ

Mobile 07884 444658

------------------------------------------------------------------------------
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.