void stop_plugins_one (void) { for (int i = PLUGIN_TYPE_GENERAL - 1; i >= 0; i --) stop_plugins (i); vfs_set_lookup_func (NULL); plugin_system_cleanup (); }
int main(int argc, char *argv[]) { mrp_context_t *ctx; ctx = create_context(); setup_signals(ctx); create_ruleset(ctx); parse_cmdline(ctx, argc, argv); load_configuration(ctx); start_plugins(ctx); load_ruleset(ctx); prepare_ruleset(ctx); setup_logging(ctx); daemonize(ctx); run_mainloop(ctx); stop_plugins(ctx); cleanup_context(ctx); return 0; }
void stop_plugins_two (void) { for (int i = PLUGIN_TYPES - 1; i >= PLUGIN_TYPE_GENERAL; i --) stop_plugins (i); }
int main(int argc, char *argv[]) { GPtrArray *plugin_array = g_ptr_array_new(); GOptionContext *ctx = g_option_context_new(" target port"); signal(SIGPIPE, signal_callback_handler); int plugin_num = enumerate_plugins(SYSLOG_NG_PATH_LOGGEN_PLUGIN_DIR, plugin_array, ctx); DEBUG("%d plugin successfuly loaded\n",plugin_num); /* create sub group for file reader functions */ GOptionGroup *group = g_option_group_new("file-reader", "file-reader", "Show options", NULL, NULL); g_option_group_add_entries(group, get_file_reader_options()); g_option_context_add_group(ctx, group); GError *error = NULL; if (!g_option_context_parse(ctx, &argc, &argv, &error)) { ERROR("option parsing failed: %s\n", error->message); g_ptr_array_free(plugin_array,TRUE); if (error) g_error_free(error); return 1; } /* debug option defined by --debug command line option */ set_debug_level(debug); if (argc>=3) { global_plugin_option.target = g_strdup(argv[1]); global_plugin_option.port = g_strdup(argv[2]); } else if (argc>=2) { global_plugin_option.target = g_strdup(argv[1]); global_plugin_option.port = NULL; } else { global_plugin_option.target = NULL; global_plugin_option.port = NULL; DEBUG("no port and address specified"); } DEBUG("target=%s port=%s\n",global_plugin_option.target,global_plugin_option.port); if (global_plugin_option.message_length > MAX_MESSAGE_LENGTH) { ERROR("warning: defined message length (%d) is too big. truncated to (%d)\n",global_plugin_option.message_length, MAX_MESSAGE_LENGTH); global_plugin_option.message_length = MAX_MESSAGE_LENGTH; } read_from_file = init_file_reader(global_plugin_option.active_connections); if (read_from_file < 0) { ERROR("error while opening input file. exit.\n"); return 1; } message_counter_lock = g_mutex_new(); init_logline_generator(plugin_array); init_csv_statistics(); if (start_plugins(plugin_array) > 0) { wait_all_plugin_to_finish(plugin_array); stop_plugins(plugin_array); } close_file_reader(global_plugin_option.active_connections); if (message_counter_lock) g_mutex_free(message_counter_lock); g_free((gpointer)global_plugin_option.target); g_free((gpointer)global_plugin_option.port); g_ptr_array_free(plugin_array,TRUE); g_free(thread_stat_count_last); g_free(thread_stat_count); return 0; }