snmp_init

Robert Frank <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <[email protected]>
Hi,

I'm trying to write a simple snmp program to query some values of a  
sensor server. Following the tutorial as an example, all seemed fine,  
until I tried executing the program on different platforms.
Compiliation is fine on all, but running the programm often segfaults  
or gives other errors.

I am using protocol version 1 (because the sensor server only supports  
that), don't know the versions of the library. (where can I find what  
I am using?)
On linux machines, be it 32 or 64 bit, centos 5.3 or fedora4, 10, 11  
or whatever, I get a segfault if I use the snmp_init function (with a  
parameter of "snmpapp"), but on the

Mac OS X 10.5.8 intel all's fine.
On Mac OS X 10.4.11 ppc it returns a response.errstat of 2 when I  
don't use the snmp_init, and complains about a missing symbol  
(_RAND_bytes) if I do use it.

Unfortunately, the docs are absolutely not clear as to whether this  
function *must* be called, and about what the value of the paramter  
should be.

As mentioned, the program runs fine on all linux intel systems when  
*not* using snmp_init, but fails on ppc (big-endian problem?)


The relevant parts of the program are:

   /* Initialize snmp. */
   nit_snmp("snmpapp"); // <- segfaults on linux, causes dyn. linker  
problems on Mac OS X 10.4.11 ppc
	
   /* Initialize the connection. */
   struct snmp_session session;
   struct snmp_session *sess_handle;

   snmp_sess_init( &session );
   session.version = SNMP_VERSION_1;
   session.community = "public";
   session.community_len = strlen((const char *)session.community);
   session.peername = "my.host.this.domain";
   sess_handle = snmp_open(&session);

   /* Set up the object for reading. We will read all at once! */
   pdu = snmp_pdu_create(SNMP_MSG_GET);

   size_t status_len = MAX_OID_LEN;
   oid status_oid[MAX_OID_LEN];
   read_objid(".1.3.6.1.4.1.3854.1.2.2.1.16.1.4.0", status_oid,  
&status_len);
   snmp_add_null_var(pdu, status_oid, status_len);

   status = snmp_synch_response(sess_handle, pdu, &response);

   if ((status == STAT_SUCCESS) && (response->errstat ==  
SNMP_ERR_NOERROR) && response->variables) {
     for (d = 0, vars = response->variables; vars; vars = vars- 
 >next_variable, d++) {
       // process the values here
     }
   } else {
     // report the error here
   }

I'd be very grateful for any help or even just further questions!


Thanks in advance
Robert


Departement Informatik   FGB   tel   +41 (0)61 267 14 66
Universität Basel                          fax. +41 (0)61 267 14 61
Robert Frank
Klingelbergstrasse 50                 [email protected]
CH-4056 Basel
Switzerland                                   http://www.informatik.unibas.ch/personen/frank_r.html




------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
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.