init_snmp

Robert Frank <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <[email protected]>
[applogies if the post show twice, the first was a mistake]
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), and I 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 init_snmp() function (with  
a parameter of "snmpapp"), but on

Mac OS X 10.4.11 ppc and 10.5.8 intel all's fine. (And, in fact, for  
the ppc it is required!)

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. */
  init_snmp("snmpapp"); // <- segfaults on linux
	
  /* 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.