I've found a problem that if the snmp version of the router doesn't support the ifHighSpeed variable so the check_snmp_int doesn't handle it properly.
The code breaks in check_snmp_int.c calling the get_snmp_oids function:
Get operating status & other if needed
********/
valueT=get_snmp_oids(ss,valOID,valOID_len,n_valOID,&error);
The function get_snmp_oids is defined in nagios_common_snmp.c.
You can test if your router support ifHighSpeed with:
snmpwalk -v1 -c public localhost ifHighSpeed
or
snmpwalk -v2c -c public localhost ifHighSpeed
There are not a fix yet, but you can try to comment the following lines in the check_snmp_int.c file.
line 380 and 381:
/ get interface high speed OID /
/ copy_oid_index(valOID[n_valOID],&valOID_len[n_valOID],speed_table_64,sizeof (speed_table_64)/sizeof (oid),index_match); /
/ n_valOID++; /
Another alternative is to insert response->errstat == SNMP_ERR_NOSUCHNAME in the file src/nagios_common_snmp.c
Line 391:
status=snmp_synch_response(session, pdu, &response); / Send request /
if (status == STAT_SUCCESS && (response->errstat == SNMP_ERR_NOSUCHNAME || response->errstat == SNMP_ERR_NOERROR)) {