diff options
author | laforge <laforge> | 2005-04-17 16:34:03 +0000 |
---|---|---|
committer | laforge <laforge> | 2005-04-17 16:34:03 +0000 |
commit | 020b7f900c76c108294dfd66e98db53de0c9f2c3 (patch) | |
tree | 86e9198586061f36705c3ed6695495d5e9014515 /ulogd.c | |
parent | 75968f47126e94cf8e162a88c76446a0628cd9b5 (diff) |
current snapshot (still not compiling)
- add more sophisticated signal delivery to pluginstances
- partial LOGEMU port to ulogd2
Diffstat (limited to 'ulogd.c')
-rw-r--r-- | ulogd.c | 40 |
1 files changed, 21 insertions, 19 deletions
@@ -684,44 +684,46 @@ static struct config_keyset ulogd_kset = { #define plugin_ce ulogd_ces[1] #define loglevel_ce ulogd_ces[2] #define stack_ce ulogd_ces[3] - + + +static void deliver_signal_pluginstances(int signal) +{ + struct ulogd_pluginstance *stack, *pi; + + list_for_each_entry(stack, &ulogd_pi_stack, stack_list) { + list_for_each_entry(pi, stack, list) { + if (pi->plugin->signal) + (*pi->plugin->signal)(pi, signal); + } + } +} static void sigterm_handler(int signal) { - struct ulogd_plugin *p; ulogd_log(ULOGD_NOTICE, "sigterm received, exiting\n"); - ipulog_destroy_handle(libulog_h); - free(libulog_buf); + deliver_signal_pluginstances(signal); + if (logfile != stdout) fclose(logfile); - for (p = ulogd_outputs; p; p = p->next) { - if (p->fini) - (*p->fini)(); - } - exit(0); } -static void sighup_handler(int signal) +static void signal_handler(int signal) { - struct ulogd_plugin *p; + ulogd_log(ULOGD_NOTICE, "signal received, calling pluginstances\n"); + + deliver_signal_pluginstances(signal); + /* reopen logfile */ if (logfile != stdout) { fclose(logfile); logfile = fopen(logf_ce.u.string, "a"); if (!logfile) sigterm_handler(signal); } - - ulogd_log(ULOGD_NOTICE, "sighup received, calling plugin handlers\n"); - - for (p = ulogd_outputs; p; p = p->next) { - if (p->signal) - (*p->signal)(SIGHUP); - } } static void print_usage(void) @@ -874,7 +876,7 @@ int main(int argc, char* argv[]) } signal(SIGTERM, &sigterm_handler); - signal(SIGHUP, &sighup_handler); + signal(SIGHUP, &signal_handler); ulogd_log(ULOGD_NOTICE, "initialization finished, entering main loop\n"); |