+static host_config_t *global_host_config;
+
+/*
+ * Free functions
+ *
+ * Used to free the various structures above.
+ */
+static void free_volume (volume_t *volume) /* {{{ */
+{
+ volume_t *next;
+
+ next = volume->next;
+
+ sfree (volume->name);
+ sfree (volume);
+
+ free_volume (next);
+} /* }}} void free_volume */
+
+static void free_disk (disk_t *disk) /* {{{ */
+{
+ disk_t *next;
+
+ next = disk->next;
+
+ sfree (disk->name);
+ sfree (disk);
+
+ free_disk (next);
+} /* }}} void free_disk */
+
+static void free_cfg_service (cfg_service_t *service) /* {{{ */
+{
+ cfg_service_t *next;
+
+ next = service->next;
+
+ /* FIXME: Free service->data? */
+ sfree (service);
+
+ free_cfg_service (next);
+} /* }}} void free_cfg_service */
+
+static void free_host_config (host_config_t *hc) /* {{{ */
+{
+ host_config_t *next;
+
+ if (hc == NULL)
+ return;
+
+ next = hc->next;
+
+ sfree (hc->name);
+ sfree (hc->host);
+ sfree (hc->username);
+ sfree (hc->password);
+
+ free_cfg_service (hc->services);
+ free_disk (hc->disks);
+ free_volume (hc->volumes);
+
+ sfree (hc);
+
+ free_host_config (next);
+} /* }}} void free_host_config */