diff --git a/src/snmp.c b/src/snmp.c
index b8bbee44b05d86f4ce5503f8e7a5a3c0a3b29a62..c4d043b9e70283e13136b20fd6e71e0805155aa7 100644 (file)
--- a/src/snmp.c
+++ b/src/snmp.c
/* TODO: Check if negative values wrap around. Problem: negative temperatures. */
static value_t csnmp_value_list_to_value (struct variable_list *vl, int type,
- double scale, double shift)
+ double scale, double shift,
+ const char *host_name, const char *data_name)
{
value_t ret;
uint64_t tmp_unsigned = 0;
oid_buffer);
else
#endif
- WARNING ("snmp plugin: I don't know the ASN type \"%i\" (OID: %s)",
- (int) vl->type, oid_buffer);
+ WARNING ("snmp plugin: I don't know the ASN type #%i "
+ "(OID: \"%s\", data block \"%s\", host block \"%s\")",
+ (int) vl->type, oid_buffer,
+ (data_name != NULL) ? data_name : "UNKNOWN",
+ (host_name != NULL) ? host_name : "UNKNOWN");
defined = 0;
}
static int csnmp_instance_list_add (csnmp_list_instances_t **head,
csnmp_list_instances_t **tail,
- struct snmp_pdu const *res,
- oid_t const *root)
+ const struct snmp_pdu *res,
+ const host_definition_t *hd, const data_definition_t *dd)
{
csnmp_list_instances_t *il;
struct variable_list *vb;
memset (il, 0, sizeof (*il));
il->next = NULL;
- status = csnmp_oid_suffix (&il->suffix, &vb_name, root);
+ status = csnmp_oid_suffix (&il->suffix, &vb_name, &dd->instance.oid);
if (status != 0)
{
sfree (il);
}
else
{
- value_t val = csnmp_value_list_to_value (vb, DS_TYPE_COUNTER, 1.0, 0.0);
+ value_t val = csnmp_value_list_to_value (vb, DS_TYPE_COUNTER,
+ /* scale = */ 1.0, /* shift = */ 0.0, hd->name, dd->name);
ssnprintf (il->instance, sizeof (il->instance),
"%llu", val.counter);
}
@@ -1392,7 +1397,7 @@ static int csnmp_read_table (host_definition_t *host, data_definition_t *data)
/* Allocate a new `csnmp_list_instances_t', insert the instance name and
* add it to the list */
if (csnmp_instance_list_add (&instance_list_head, &instance_list_tail,
- res, &data->instance.oid) != 0)
+ res, host, data) != 0)
{
ERROR ("snmp plugin: csnmp_instance_list_add failed.");
status = -1;
@@ -1460,7 +1465,7 @@ static int csnmp_read_table (host_definition_t *host, data_definition_t *data)
memset (vt, 0, sizeof (*vt));
vt->value = csnmp_value_list_to_value (vb, ds->ds[i].type,
- data->scale, data->shift);
+ data->scale, data->shift, host->name, data->name);
memcpy (&vt->suffix, &suffix, sizeof (vt->suffix));
vt->next = NULL;
@@ -1612,7 +1617,7 @@ static int csnmp_read_value (host_definition_t *host, data_definition_t *data)
if (snmp_oid_compare (data->values[i].oid, data->values[i].oid_len,
vb->name, vb->name_length) == 0)
vl.values[i] = csnmp_value_list_to_value (vb, ds->ds[i].type,
- data->scale, data->shift);
+ data->scale, data->shift, host->name, data->name);
} /* for (res->variables) */
if (res != NULL)
host = ud->data;
if (host->interval == 0)
- host->interval = interval_g;
+ host->interval = plugin_get_interval ();
time_start = cdtime ();