diff options
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | daemon/config.c | 20 | ||||
-rw-r--r-- | tools/rrdbot-create.c | 22 |
3 files changed, 39 insertions, 4 deletions
@@ -1,6 +1,7 @@ 0.4 - Reduced memory usage of SNMP requests - Added asynchronous DNS resolver + - Added support for RRD files not in the normal places 0.3 - Initial public release diff --git a/daemon/config.c b/daemon/config.c index 3e7c534..a47b5f2 100644 --- a/daemon/config.c +++ b/daemon/config.c @@ -58,6 +58,7 @@ typedef struct _config_ctx { const char* confname; + const char* rrdname; uint interval; uint timeout; rb_item* items; @@ -68,6 +69,8 @@ config_ctx; * STRINGS */ +#define CONFIG_GENERAL "general" +#define CONFIG_RRD "rrd" #define CONFIG_POLL "poll" #define CONFIG_INTERVAL "interval" #define CONFIG_TIMEOUT "timeout" @@ -141,8 +144,12 @@ config_done(config_ctx* ctx) ctx->timeout = g_state.timeout; /* And a nice key for lookups */ - snprintf(key, sizeof(key), "%d-%d:%s/%s.rrd", ctx->timeout, - ctx->interval, g_state.rrddir, ctx->confname); + if(ctx->rrdname) + snprintf(key, sizeof(key), "%d-%d:%s", ctx->timeout, ctx->interval, + ctx->rrdname); + else + snprintf(key, sizeof(key), "%d-%d:%s/%s.rrd", ctx->timeout, + ctx->interval, g_state.rrddir, ctx->confname); key[sizeof(key) - 1] = 0; /* See if we have one of these pollers already */ @@ -294,6 +301,15 @@ config_value(const char* header, const char* name, char* value, { char* suffix; + if(strcmp(header, CONFIG_GENERAL) == 0) + { + if(strcmp(name, CONFIG_RRD) == 0) + ctx->rrdname = value; + + /* Ignore other [general] options */ + return; + } + if(strcmp(header, CONFIG_POLL) != 0) return; diff --git a/tools/rrdbot-create.c b/tools/rrdbot-create.c index c75b95f..f3699a1 100644 --- a/tools/rrdbot-create.c +++ b/tools/rrdbot-create.c @@ -55,6 +55,7 @@ #define DEFAULT_WORK "/var/db/rrdbot" #define CONFIG_CREATE "create" +#define CONFIG_GENERAL "general" #define CONFIG_POLL "poll" #define CONFIG_INTERVAL "interval" #define CONFIG_ARCHIVE "archive" @@ -62,6 +63,7 @@ #define CONFIG_MIN "min" #define CONFIG_MAX "max" #define CONFIG_CF "cf" +#define CONFIG_RRD "rrd" #define VAL_UNKNOWN "U" #define VAL_ABSOLUTE "ABSOLUTE" @@ -125,6 +127,7 @@ typedef struct _create_ctx { const char* workdir; const char* confname; + const char* rrdname; uint interval; const char *cf; int create; @@ -439,8 +442,13 @@ check_create_file(create_ctx* ctx) if(!ctx->create) return; - snprintf(rrd, sizeof(rrd), "%s/%s.rrd", ctx->workdir, ctx->confname); - rrd[sizeof(rrd) - 1] = 0; + if(ctx->rrdname) + strlcpy(rrd, ctx->rrdname, sizeof(rrd)); + else + { + snprintf(rrd, sizeof(rrd), "%s/%s.rrd", ctx->workdir, ctx->confname); + rrd[sizeof(rrd) - 1] = 0; + } /* Make sure it exists */ if(access(rrd, F_OK) == 0) @@ -603,6 +611,16 @@ cfg_value(const char* filename, const char* header, const char* name, return 0; } + if(strcmp(header, CONFIG_GENERAL) == 0) + { + /* rrd option */ + if(strcmp(name, CONFIG_RRD) == 0) + ctx->rrdname = value; + + /* Ignore other options */ + return 0; + } + /* The rest is in the [create] section */ if(strcmp(header, CONFIG_CREATE) != 0) return 0; |