Provide a default implementation for the configure hook which simply calls ulogd_parse_configfile(), so simple plugins only need to provide the config_keyset. This also triggers an "unknown key" error if a plugin defines no config_keyset (aka it has no options), but the config file contains directives for it. Signed-off-by: Corubba Smith <corubba@xxxxxx> --- Changes in v2: - None src/conffile.c | 7 ++++++- src/ulogd.c | 21 ++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/conffile.c b/src/conffile.c index f412804..b9027da 100644 --- a/src/conffile.c +++ b/src/conffile.c @@ -158,7 +158,12 @@ int config_parse_file(const char *section, struct config_keyset *kset) } if (!found) { - err = -ERRSECTION; + if (kset->num_ces == 0) { + /* If there are no options, then no section isnt an error. */ + err = 0; + } else { + err = -ERRSECTION; + } goto cpf_error; } diff --git a/src/ulogd.c b/src/ulogd.c index cc4f2da..9f562f7 100644 --- a/src/ulogd.c +++ b/src/ulogd.c @@ -869,15 +869,22 @@ create_stack_resolve_keys(struct ulogd_pluginstance_stack *stack) pi_cur->plugin->name); /* call plugin to tell us which keys it requires in * given configuration */ + int ret; if (pi_cur->plugin->configure) { - int ret = pi_cur->plugin->configure(pi_cur, - stack); - if (ret < 0) { - ulogd_log(ULOGD_ERROR, "error during " - "configure of plugin %s\n", - pi_cur->plugin->name); - return ret; + ret = pi_cur->plugin->configure(pi_cur, stack); + } else { + struct config_keyset empty_kset = {.num_ces=0}; + struct config_keyset *kset = &empty_kset; + if (pi_cur->config_kset) { + kset = pi_cur->config_kset; } + ret = ulogd_parse_configfile(pi_cur->id, kset); + } + if (ret < 0) { + ulogd_log(ULOGD_ERROR, "error during " + "configure of plugin %s\n", + pi_cur->plugin->name); + return ret; } } -- 2.48.1