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 robert.fr...@unibas.ch 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 Net-snmp-users@lists.sourceforge.net Please see the following page to unsubscribe or change other options: https://lists.sourceforge.net/lists/listinfo/net-snmp-users