+/*
+ * <VolumeUsage>
+ * Capacity "vol0"
+ * Capacity "vol1"
+ * Capacity "vol2"
+ * Capacity "vol3"
+ * Capacity "vol4"
+ * IgnoreSelectedCapacity false
+ *
+ * Snapshot "vol0"
+ * Snapshot "vol3"
+ * Snapshot "vol4"
+ * Snapshot "vol7"
+ * IgnoreSelectedSnapshot false
+ * </VolumeUsage>
+ */
+/* Corresponds to a <VolumeUsage /> block */
+static int cna_config_volume_usage(host_config_t *host, 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));
+ if (cfg_volume_usage == NULL)
+ return (ENOMEM);
+ memset (cfg_volume_usage, 0, sizeof (*cfg_volume_usage));
+
+ /* Set default flags */
+ cfg_volume_usage->query = NULL;
+ cfg_volume_usage->volumes = NULL;
+
+ cfg_volume_usage->il_capacity = ignorelist_create (/* invert = */ 1);
+ if (cfg_volume_usage->il_capacity == NULL)
+ {
+ sfree (cfg_volume_usage);
+ return (ENOMEM);
+ }
+
+ cfg_volume_usage->il_snapshot = ignorelist_create (/* invert = */ 1);
+ if (cfg_volume_usage->il_snapshot == NULL)
+ {
+ ignorelist_free (cfg_volume_usage->il_capacity);
+ sfree (cfg_volume_usage);
+ return (ENOMEM);
+ }
+
+ host->cfg_volume_usage = cfg_volume_usage;
+ }
+ cfg_volume_usage = host->cfg_volume_usage;
+
+ for (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);
+ else if (!strcasecmp(item->key, "Capacity"))
+ cna_config_volume_usage_option (cfg_volume_usage, item);
+ else if (!strcasecmp(item->key, "Snapshot"))
+ cna_config_volume_usage_option (cfg_volume_usage, item);
+ else if (!strcasecmp(item->key, "IgnoreSelectedCapacity"))
+ cna_config_volume_usage_default (cfg_volume_usage, item);
+ else if (!strcasecmp(item->key, "IgnoreSelectedSnapshot"))
+ cna_config_volume_usage_default (cfg_volume_usage, item);
+ }
+
+ return (0);
+} /* }}} int cna_config_volume_usage */
+