X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fnetapp.c;h=d73969646f7ca9be74c966fcd3da03d2754cc0a0;hb=3d74a63ae43c1786eb9b966e2209c24c5643dae8;hp=8a8a7fe4ea0863e3aed4f18052abd11e03c5de96;hpb=f0b5610723ae8962ae264f84210f8bac483bcd20;p=collectd.git diff --git a/src/netapp.c b/src/netapp.c index 8a8a7fe4..d7396964 100644 --- a/src/netapp.c +++ b/src/netapp.c @@ -27,6 +27,7 @@ **/ #include "collectd.h" + #include "common.h" #include "utils_ignorelist.h" @@ -464,10 +465,9 @@ static disk_t *get_disk(cfg_disk_t *cd, const char *name) /* {{{ */ return d; } - d = malloc(sizeof(*d)); + d = calloc (1, sizeof (*d)); if (d == NULL) return (NULL); - memset (d, 0, sizeof (*d)); d->next = NULL; d->name = strdup(name); @@ -513,10 +513,9 @@ static data_volume_usage_t *get_volume_usage (cfg_volume_usage_t *cvu, /* {{{ */ return (NULL); /* Not found: allocate. */ - new = malloc (sizeof (*new)); + new = calloc (1, sizeof (*new)); if (new == NULL) return (NULL); - memset (new, 0, sizeof (*new)); new->next = NULL; new->name = strdup (name); @@ -581,10 +580,9 @@ static data_volume_perf_t *get_volume_perf (cfg_volume_perf_t *cvp, /* {{{ */ return (NULL); /* Not found: allocate. */ - new = malloc (sizeof (*new)); + new = calloc (1, sizeof (*new)); if (new == NULL) return (NULL); - memset (new, 0, sizeof (*new)); new->next = NULL; new->name = strdup (name); @@ -882,7 +880,7 @@ static cdtime_t cna_child_get_cdtime (na_elem_t *data) /* {{{ */ } /* }}} cdtime_t cna_child_get_cdtime */ -/* +/* * Query functions * * These functions are called with appropriate data returned by the libnetapp @@ -892,15 +890,12 @@ static cdtime_t cna_child_get_cdtime (na_elem_t *data) /* {{{ */ static int cna_handle_wafl_data (const char *hostname, cfg_wafl_t *cfg_wafl, /* {{{ */ na_elem_t *data, cdtime_t interval) { - cfg_wafl_t perf_data; + cfg_wafl_t perf_data = { 0 }; const char *plugin_inst; na_elem_t *instances; - na_elem_t *counter; na_elem_iter_t counter_iter; - memset (&perf_data, 0, sizeof (perf_data)); - perf_data.timestamp = cna_child_get_cdtime (data); instances = na_elem_child(na_elem_child (data, "instances"), "instance-data"); @@ -923,7 +918,7 @@ static int cna_handle_wafl_data (const char *hostname, cfg_wafl_t *cfg_wafl, /* /* Iterate over all counters */ counter_iter = na_child_iterator (na_elem_child (instances, "counters")); - for (counter = na_iterator_next (&counter_iter); + for (na_elem_t *counter = na_iterator_next (&counter_iter); counter != NULL; counter = na_iterator_next (&counter_iter)) { @@ -1059,13 +1054,12 @@ static int cna_handle_disk_data (const char *hostname, /* {{{ */ { cdtime_t timestamp; na_elem_t *instances; - na_elem_t *instance; na_elem_iter_t instance_iter; disk_t *worst_disk = NULL; if ((cfg_disk == NULL) || (data == NULL)) return (EINVAL); - + timestamp = cna_child_get_cdtime (data); instances = na_elem_child (data, "instances"); @@ -1079,17 +1073,15 @@ static int cna_handle_disk_data (const char *hostname, /* {{{ */ /* Iterate over all children */ instance_iter = na_child_iterator (instances); - for (instance = na_iterator_next (&instance_iter); + for (na_elem_t *instance = na_iterator_next (&instance_iter); instance != NULL; instance = na_iterator_next(&instance_iter)) { disk_t *old_data; - disk_t new_data; + disk_t new_data = { 0 }; na_elem_iter_t counter_iterator; - na_elem_t *counter; - memset (&new_data, 0, sizeof (new_data)); new_data.timestamp = timestamp; new_data.disk_busy_percent = NAN; @@ -1099,7 +1091,7 @@ static int cna_handle_disk_data (const char *hostname, /* {{{ */ /* Look for the "disk_busy" and "base_for_disk_busy" counters */ counter_iterator = na_child_iterator(na_elem_child(instance, "counters")); - for (counter = na_iterator_next(&counter_iterator); + for (na_elem_t *counter = na_iterator_next(&counter_iterator); counter != NULL; counter = na_iterator_next(&counter_iterator)) { @@ -1256,8 +1248,7 @@ static int cna_handle_volume_perf_data (const char *hostname, /* {{{ */ cdtime_t timestamp; na_elem_t *elem_instances; na_elem_iter_t iter_instances; - na_elem_t *elem_instance; - + timestamp = cna_child_get_cdtime (data); elem_instances = na_elem_child(data, "instances"); @@ -1270,20 +1261,18 @@ static int cna_handle_volume_perf_data (const char *hostname, /* {{{ */ } iter_instances = na_child_iterator (elem_instances); - for (elem_instance = na_iterator_next(&iter_instances); + for (na_elem_t *elem_instance = na_iterator_next(&iter_instances); elem_instance != NULL; elem_instance = na_iterator_next(&iter_instances)) { const char *name; - data_volume_perf_t perf_data; + data_volume_perf_t perf_data = { 0 }; data_volume_perf_t *v; na_elem_t *elem_counters; na_elem_iter_t iter_counters; - na_elem_t *elem_counter; - memset (&perf_data, 0, sizeof (perf_data)); perf_data.timestamp = timestamp; name = na_child_get_string (elem_instance, "name"); @@ -1300,7 +1289,7 @@ static int cna_handle_volume_perf_data (const char *hostname, /* {{{ */ continue; iter_counters = na_child_iterator (elem_counters); - for (elem_counter = na_iterator_next(&iter_counters); + for (na_elem_t *elem_counter = na_iterator_next(&iter_counters); elem_counter != NULL; elem_counter = na_iterator_next(&iter_counters)) { @@ -1425,9 +1414,7 @@ static int cna_query_volume_perf (host_config_t *host) /* {{{ */ static int cna_submit_volume_usage_data (const char *hostname, /* {{{ */ cfg_volume_usage_t *cfg_volume, int interval) { - data_volume_usage_t *v; - - for (v = cfg_volume->volumes; v != NULL; v = v->next) + for (data_volume_usage_t *v = cfg_volume->volumes; v != NULL; v = v->next) { char plugin_instance[DATA_MAX_NAME_LEN]; @@ -1522,9 +1509,8 @@ static int cna_submit_volume_usage_data (const char *hostname, /* {{{ */ static int cna_change_volume_status (const char *hostname, /* {{{ */ data_volume_usage_t *v) { - notification_t n; + notification_t n = { 0 }; - memset (&n, 0, sizeof (n)); n.time = cdtime (); sstrncpy (n.host, hostname, sizeof (n.host)); sstrncpy (n.plugin, "netapp", sizeof (n.plugin)); @@ -1549,7 +1535,7 @@ static void cna_handle_volume_snap_usage(const host_config_t *host, /* {{{ */ data_volume_usage_t *v) { uint64_t snap_used = 0, value; - na_elem_t *data, *elem_snap, *elem_snapshots; + na_elem_t *data, *elem_snapshots; na_elem_iter_t iter_snap; data = na_server_invoke_elem(host->srv, v->snap_query); @@ -1581,7 +1567,7 @@ static void cna_handle_volume_snap_usage(const host_config_t *host, /* {{{ */ } iter_snap = na_child_iterator (elem_snapshots); - for (elem_snap = na_iterator_next (&iter_snap); + for (na_elem_t *elem_snap = na_iterator_next (&iter_snap); elem_snap != NULL; elem_snap = na_iterator_next (&iter_snap)) { @@ -1696,7 +1682,6 @@ static void cna_handle_volume_sis_saved (const host_config_t *host, /* {{{ */ static int cna_handle_volume_usage_data (const host_config_t *host, /* {{{ */ cfg_volume_usage_t *cfg_volume, na_elem_t *data) { - na_elem_t *elem_volume; na_elem_t *elem_volumes; na_elem_iter_t iter_volume; @@ -1710,7 +1695,7 @@ static int cna_handle_volume_usage_data (const host_config_t *host, /* {{{ */ } iter_volume = na_child_iterator (elem_volumes); - for (elem_volume = na_iterator_next (&iter_volume); + for (na_elem_t *elem_volume = na_iterator_next (&iter_volume); elem_volume != NULL; elem_volume = na_iterator_next (&iter_volume)) { @@ -1736,7 +1721,7 @@ static int cna_handle_volume_usage_data (const host_config_t *host, /* {{{ */ if ((v->flags & CFG_VOLUME_USAGE_SNAP) != 0) cna_handle_volume_snap_usage(host, v); - + if ((v->flags & CFG_VOLUME_USAGE_DF) == 0) continue; @@ -1834,7 +1819,6 @@ static int cna_query_volume_usage (host_config_t *host) /* {{{ */ static int cna_handle_quota_data (const host_config_t *host, /* {{{ */ cfg_quota_t *cfg_quota, na_elem_t *data) { - na_elem_t *elem_quota; na_elem_t *elem_quotas; na_elem_iter_t iter_quota; @@ -1848,7 +1832,7 @@ static int cna_handle_quota_data (const host_config_t *host, /* {{{ */ } iter_quota = na_child_iterator (elem_quotas); - for (elem_quota = na_iterator_next (&iter_quota); + for (na_elem_t *elem_quota = na_iterator_next (&iter_quota); elem_quota != NULL; elem_quota = na_iterator_next (&iter_quota)) { @@ -1960,7 +1944,6 @@ static int cna_query_quota (host_config_t *host) /* {{{ */ static int cna_handle_snapvault_data (const char *hostname, /* {{{ */ cfg_snapvault_t *cfg_snapvault, na_elem_t *data, cdtime_t interval) { - na_elem_t *status; na_elem_iter_t status_iter; status = na_elem_child (data, "status-list"); @@ -1970,7 +1953,7 @@ static int cna_handle_snapvault_data (const char *hostname, /* {{{ */ } status_iter = na_child_iterator (status); - for (status = na_iterator_next (&status_iter); + for (na_elem_t *status = na_iterator_next (&status_iter); status != NULL; status = na_iterator_next (&status_iter)) { @@ -2020,7 +2003,6 @@ static int cna_handle_snapvault_iter (host_config_t *host, /* {{{ */ const char *tag; uint32_t records_count; - uint32_t i; records_count = na_child_get_uint32 (data, "records", UINT32_MAX); if (records_count == UINT32_MAX) @@ -2032,7 +2014,7 @@ static int cna_handle_snapvault_iter (host_config_t *host, /* {{{ */ DEBUG ("netapp plugin: Iterating %u SV records (tag = %s)", records_count, tag); - for (i = 0; i < records_count; ++i) { + for (uint32_t i = 0; i < records_count; ++i) { na_elem_t *elem; elem = na_server_invoke (host->srv, @@ -2121,7 +2103,6 @@ static int cna_handle_system_data (const char *hostname, /* {{{ */ cfg_system_t *cfg_system, na_elem_t *data, int interval) { na_elem_t *instances; - na_elem_t *counter; na_elem_iter_t counter_iter; derive_t disk_read = 0, disk_written = 0; @@ -2131,7 +2112,7 @@ static int cna_handle_system_data (const char *hostname, /* {{{ */ const char *instance; cdtime_t timestamp; - + timestamp = cna_child_get_cdtime (data); instances = na_elem_child(na_elem_child (data, "instances"), "instance-data"); @@ -2153,7 +2134,7 @@ static int cna_handle_system_data (const char *hostname, /* {{{ */ } counter_iter = na_child_iterator (na_elem_child (instances, "counters")); - for (counter = na_iterator_next (&counter_iter); + for (na_elem_t *counter = na_iterator_next (&counter_iter); counter != NULL; counter = na_iterator_next (&counter_iter)) { @@ -2198,7 +2179,7 @@ static int cna_handle_system_data (const char *hostname, /* {{{ */ && (HAS_ALL_FLAGS (counter_flags, 0x01 | 0x02))) submit_two_derive (hostname, instance, "disk_octets", NULL, disk_read, disk_written, timestamp, interval); - + if ((cfg_system->flags & CFG_SYSTEM_NET) && (HAS_ALL_FLAGS (counter_flags, 0x04 | 0x08))) submit_two_derive (hostname, instance, "if_octets", NULL, @@ -2398,17 +2379,15 @@ static int cna_config_volume_performance (host_config_t *host, /* {{{ */ const oconfig_item_t *ci) { cfg_volume_perf_t *cfg_volume_perf; - int i; if ((host == NULL) || (ci == NULL)) return (EINVAL); if (host->cfg_volume_perf == NULL) { - cfg_volume_perf = malloc (sizeof (*cfg_volume_perf)); + cfg_volume_perf = calloc (1, sizeof (*cfg_volume_perf)); if (cfg_volume_perf == NULL) return (ENOMEM); - memset (cfg_volume_perf, 0, sizeof (*cfg_volume_perf)); /* Set default flags */ cfg_volume_perf->query = NULL; @@ -2441,10 +2420,10 @@ static int cna_config_volume_performance (host_config_t *host, /* {{{ */ host->cfg_volume_perf = cfg_volume_perf; } cfg_volume_perf = host->cfg_volume_perf; - - for (i = 0; i < ci->children_num; ++i) { + + for (int i = 0; i < ci->children_num; ++i) { oconfig_item_t *item = ci->children + i; - + /* if (!item || !item->key || !*item->key) continue; */ if (strcasecmp(item->key, "Interval") == 0) cna_config_get_interval (item, &cfg_volume_perf->interval); @@ -2526,24 +2505,22 @@ static void cna_config_volume_usage_default (cfg_volume_usage_t *cvu, /* {{{ */ static int cna_config_quota (host_config_t *host, oconfig_item_t *ci) /* {{{ */ { cfg_quota_t *cfg_quota; - int i; if ((host == NULL) || (ci == NULL)) return (EINVAL); if (host->cfg_quota == NULL) { - cfg_quota = malloc (sizeof (*cfg_quota)); + cfg_quota = calloc (1, sizeof (*cfg_quota)); if (cfg_quota == NULL) return (ENOMEM); - memset (cfg_quota, 0, sizeof (*cfg_quota)); cfg_quota->query = NULL; host->cfg_quota = cfg_quota; } cfg_quota = host->cfg_quota; - for (i = 0; i < ci->children_num; ++i) { + for (int i = 0; i < ci->children_num; ++i) { oconfig_item_t *item = ci->children + i; if (strcasecmp (item->key, "Interval") == 0) @@ -2559,17 +2536,15 @@ static int cna_config_quota (host_config_t *host, oconfig_item_t *ci) /* {{{ */ /* Corresponds to a block */ static int cna_config_disk(host_config_t *host, oconfig_item_t *ci) { /* {{{ */ cfg_disk_t *cfg_disk; - int i; if ((host == NULL) || (ci == NULL)) return (EINVAL); if (host->cfg_disk == NULL) { - cfg_disk = malloc (sizeof (*cfg_disk)); + cfg_disk = calloc (1, sizeof (*cfg_disk)); if (cfg_disk == NULL) return (ENOMEM); - memset (cfg_disk, 0, sizeof (*cfg_disk)); /* Set default flags */ cfg_disk->flags = CFG_DISK_ALL; @@ -2579,10 +2554,10 @@ static int cna_config_disk(host_config_t *host, oconfig_item_t *ci) { /* {{{ */ host->cfg_disk = cfg_disk; } cfg_disk = host->cfg_disk; - - for (i = 0; i < ci->children_num; ++i) { + + for (int i = 0; i < ci->children_num; ++i) { oconfig_item_t *item = ci->children + i; - + /* if (!item || !item->key || !*item->key) continue; */ if (strcasecmp(item->key, "Interval") == 0) cna_config_get_interval (item, &cfg_disk->interval); @@ -2605,17 +2580,15 @@ static int cna_config_disk(host_config_t *host, oconfig_item_t *ci) { /* {{{ */ static int cna_config_wafl(host_config_t *host, oconfig_item_t *ci) /* {{{ */ { cfg_wafl_t *cfg_wafl; - int i; if ((host == NULL) || (ci == NULL)) return (EINVAL); if (host->cfg_wafl == NULL) { - cfg_wafl = malloc (sizeof (*cfg_wafl)); + cfg_wafl = calloc (1, sizeof (*cfg_wafl)); if (cfg_wafl == NULL) return (ENOMEM); - memset (cfg_wafl, 0, sizeof (*cfg_wafl)); /* Set default flags */ cfg_wafl->flags = CFG_WAFL_ALL; @@ -2624,9 +2597,9 @@ static int cna_config_wafl(host_config_t *host, oconfig_item_t *ci) /* {{{ */ } cfg_wafl = host->cfg_wafl; - for (i = 0; i < ci->children_num; ++i) { + for (int i = 0; i < ci->children_num; ++i) { oconfig_item_t *item = ci->children + i; - + if (strcasecmp(item->key, "Interval") == 0) cna_config_get_interval (item, &cfg_wafl->interval); else if (!strcasecmp(item->key, "GetNameCache")) @@ -2674,17 +2647,15 @@ static int cna_config_volume_usage(host_config_t *host, /* {{{ */ const oconfig_item_t *ci) { cfg_volume_usage_t *cfg_volume_usage; - int i; if ((host == NULL) || (ci == NULL)) return (EINVAL); if (host->cfg_volume_usage == NULL) { - cfg_volume_usage = malloc (sizeof (*cfg_volume_usage)); + cfg_volume_usage = calloc (1, sizeof (*cfg_volume_usage)); if (cfg_volume_usage == NULL) return (ENOMEM); - memset (cfg_volume_usage, 0, sizeof (*cfg_volume_usage)); /* Set default flags */ cfg_volume_usage->query = NULL; @@ -2708,10 +2679,10 @@ static int cna_config_volume_usage(host_config_t *host, /* {{{ */ host->cfg_volume_usage = cfg_volume_usage; } cfg_volume_usage = host->cfg_volume_usage; - - for (i = 0; i < ci->children_num; ++i) { + + for (int i = 0; i < ci->children_num; ++i) { oconfig_item_t *item = ci->children + i; - + /* if (!item || !item->key || !*item->key) continue; */ if (strcasecmp(item->key, "Interval") == 0) cna_config_get_interval (item, &cfg_volume_usage->interval); @@ -2736,17 +2707,15 @@ static int cna_config_snapvault (host_config_t *host, /* {{{ */ const oconfig_item_t *ci) { cfg_snapvault_t *cfg_snapvault; - int i; if ((host == NULL) || (ci == NULL)) return EINVAL; if (host->cfg_snapvault == NULL) { - cfg_snapvault = malloc (sizeof (*cfg_snapvault)); + cfg_snapvault = calloc (1, sizeof (*cfg_snapvault)); if (cfg_snapvault == NULL) return ENOMEM; - memset (cfg_snapvault, 0, sizeof (*cfg_snapvault)); cfg_snapvault->query = NULL; host->cfg_snapvault = cfg_snapvault; @@ -2754,7 +2723,7 @@ static int cna_config_snapvault (host_config_t *host, /* {{{ */ cfg_snapvault = host->cfg_snapvault; - for (i = 0; i < ci->children_num; ++i) { + for (int i = 0; i < ci->children_num; ++i) { oconfig_item_t *item = ci->children + i; if (strcasecmp (item->key, "Interval") == 0) @@ -2772,17 +2741,15 @@ static int cna_config_system (host_config_t *host, /* {{{ */ oconfig_item_t *ci) { cfg_system_t *cfg_system; - int i; - + if ((host == NULL) || (ci == NULL)) return (EINVAL); if (host->cfg_system == NULL) { - cfg_system = malloc (sizeof (*cfg_system)); + cfg_system = calloc (1, sizeof (*cfg_system)); if (cfg_system == NULL) return (ENOMEM); - memset (cfg_system, 0, sizeof (*cfg_system)); /* Set default flags */ cfg_system->flags = CFG_SYSTEM_ALL; @@ -2792,7 +2759,7 @@ static int cna_config_system (host_config_t *host, /* {{{ */ } cfg_system = host->cfg_system; - for (i = 0; i < ci->children_num; ++i) { + for (int i = 0; i < ci->children_num; ++i) { oconfig_item_t *item = ci->children + i; if (strcasecmp(item->key, "Interval") == 0) { @@ -2827,10 +2794,9 @@ static host_config_t *cna_alloc_host (void) /* {{{ */ { host_config_t *host; - host = malloc(sizeof(*host)); - if (! host) + host = calloc (1, sizeof (*host)); + if (host == NULL) return (NULL); - memset (host, 0, sizeof (*host)); host->name = NULL; host->protocol = NA_SERVER_TRANSPORT_HTTPS; @@ -2906,7 +2872,6 @@ static int cna_read (user_data_t *ud); static int cna_register_host (host_config_t *host) /* {{{ */ { char cb_name[256]; - user_data_t ud; if (host->vfiler) ssnprintf (cb_name, sizeof (cb_name), "netapp-%s-%s", @@ -2914,9 +2879,10 @@ static int cna_register_host (host_config_t *host) /* {{{ */ else ssnprintf (cb_name, sizeof (cb_name), "netapp-%s", host->name); - memset (&ud, 0, sizeof (ud)); - ud.data = host; - ud.free_func = (void (*) (void *)) free_host_config; + user_data_t ud = { + .data = host, + .free_func = (void (*) (void *)) free_host_config + }; plugin_register_complex_read (/* group = */ NULL, cb_name, /* callback = */ cna_read, @@ -2932,7 +2898,6 @@ static int cna_config_host (host_config_t *host, /* {{{ */ oconfig_item_t *item; _Bool is_vfiler = 0; int status; - int i; if (! strcasecmp (ci->key, "VFiler")) is_vfiler = 1; @@ -2946,7 +2911,7 @@ static int cna_config_host (host_config_t *host, /* {{{ */ if (status != 0) return (1); - for (i = 0; i < ci->children_num; ++i) { + for (int i = 0; i < ci->children_num; ++i) { item = ci->children + i; status = 0; @@ -3085,9 +3050,8 @@ static int cna_init_host (host_config_t *host) /* {{{ */ static int cna_init (void) /* {{{ */ { - char err[256]; + char err[256] = { 0 }; - memset (err, 0, sizeof (err)); if (!na_startup(err, sizeof(err))) { err[sizeof (err) - 1] = 0; ERROR("netapp plugin: Error initializing netapp API: %s", err); @@ -3156,10 +3120,9 @@ static int cna_read (user_data_t *ud) { /* {{{ */ } /* }}} int cna_read */ static int cna_config (oconfig_item_t *ci) { /* {{{ */ - int i; oconfig_item_t *item; - for (i = 0; i < ci->children_num; ++i) { + for (int i = 0; i < ci->children_num; ++i) { item = ci->children + i; if (strcasecmp(item->key, "Host") == 0)