diff --git a/src/daemon/config.c b/src/daemon/config.c
index 91746b10267cab4e304f0f1eb3a98b64a6c8eb0d..beb0217baa323d5bbd17aff02891aeaed73a5ea7 100644 (file)
--- a/src/daemon/config.c
+++ b/src/daemon/config.c
#include "liboconfig/utils.h"
#include <assert.h>
+#include <errno.h>
+
+#include <stdlib.h>
+#include <string.h>
#include <strings.h>
/*
return 0;
} /* config_get_interval */
+/*
+ * public parse results
+ */
+
+char **listen_addresses = NULL;
+size_t listen_addresses_num = 0;
+
/*
* token parser
*/
int (*dispatcher)(oconfig_item_t *);
} token_parser_t;
+static int
+daemon_add_listener(oconfig_item_t *ci)
+{
+ char **tmp;
+ char *address;
+
+ if (oconfig_get_string(ci, &address)) {
+ sdb_log(SDB_LOG_ERR, "config: Listen requires a single "
+ "string argument\n"
+ "\tUsage: Listen ADDRESS");
+ return ERR_INVALID_ARG;
+ }
+
+ tmp = realloc(listen_addresses,
+ (listen_addresses_num + 1) * sizeof(*listen_addresses));
+ if (! tmp) {
+ char buf[1024];
+ sdb_log(SDB_LOG_ERR, "config: Failed to allocate memory: %s",
+ sdb_strerror(errno, buf, sizeof(buf)));
+ return -1;
+ }
+
+ tmp[listen_addresses_num] = strdup(address);
+ if (! tmp[listen_addresses_num]) {
+ char buf[1024];
+ sdb_log(SDB_LOG_ERR, "config: Failed to allocate memory: %s",
+ sdb_strerror(errno, buf, sizeof(buf)));
+ return -1;
+ }
+
+ listen_addresses = tmp;
+ ++listen_addresses_num;
+ return 0;
+} /* daemon_add_listener */
+
static int
daemon_set_interval(oconfig_item_t *ci)
{
} /* daemon_configure_backend */
static token_parser_t token_parser_list[] = {
+ { "Listen", daemon_add_listener },
{ "Interval", daemon_set_interval },
{ "LoadPlugin", daemon_load_plugin },
{ "LoadBackend", daemon_load_backend },