From 51d46956e78b0bc204209f2fbbd0f2ce8d366aa7 Mon Sep 17 00:00:00 2001 From: Corubba Smith Date: Wed, 12 Mar 2025 15:55:55 +0100 Subject: ulogd: provide default configure implementation 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 Signed-off-by: Florian Westphal --- src/ulogd.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'src/ulogd.c') diff --git a/src/ulogd.c b/src/ulogd.c index c844767..b146f94 100644 --- a/src/ulogd.c +++ b/src/ulogd.c @@ -856,19 +856,29 @@ create_stack_resolve_keys(struct ulogd_pluginstance_stack *stack) /* pre-configuration pass */ llist_for_each_entry_reverse(pi_cur, &stack->list, list) { + int ret; + ulogd_log(ULOGD_DEBUG, "traversing plugin `%s'\n", pi_cur->plugin->name); /* call plugin to tell us which keys it requires in * given configuration */ 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; } } -- cgit v1.2.3