X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fsnmp.c;h=abeda436795427f9597e281c30ce1e8ae656b519;hb=b847e8ff2fd928813397466a941947c8fce66d66;hp=8b327308eac6ba534448c813a58bc237d33a7d5d;hpb=2761915bed8c6caea41018be3e675aa712cc0b0a;p=collectd.git diff --git a/src/snmp.c b/src/snmp.c index 8b327308..abeda436 100644 --- a/src/snmp.c +++ b/src/snmp.c @@ -634,7 +634,6 @@ static int csnmp_config_add_host (oconfig_item_t *ci) /* Registration stuff. */ char cb_name[DATA_MAX_NAME_LEN]; - user_data_t cb_data = { 0 }; hd = calloc (1, sizeof (*hd)); if (hd == NULL) @@ -765,11 +764,13 @@ static int csnmp_config_add_host (oconfig_item_t *ci) ssnprintf (cb_name, sizeof (cb_name), "snmp-%s", hd->name); - cb_data.data = hd; - cb_data.free_func = csnmp_host_definition_destroy; + user_data_t ud = { + .data = hd, + .free_func = csnmp_host_definition_destroy + }; status = plugin_register_complex_read (/* group = */ NULL, cb_name, - csnmp_read_host, hd->interval, /* user_data = */ &cb_data); + csnmp_read_host, hd->interval, /* user_data = */ &ud); if (status != 0) { ERROR ("snmp plugin: Registering complex read function failed."); @@ -1360,8 +1361,12 @@ static int csnmp_dispatch_table (host_definition_t *host, data_definition_t *dat for (i = 0; i < data->values_len; i++) vl.values[i] = value_table_ptr[i]->value; - /* If we get here `vl.type_instance' and all `vl.values' have been set */ - plugin_dispatch_values (&vl); + /* If we get here `vl.type_instance' and all `vl.values' have been set + * vl.type_instance can be empty, i.e. a blank port description on a + * switch if you're using IF-MIB::ifDescr as Instance. + */ + if (vl.type_instance[0] != '\0') + plugin_dispatch_values (&vl); if (instance_list != NULL) instance_list_ptr = instance_list_ptr->next;