diff --git a/userspace/falco/app_actions/load_rules_files.cpp b/userspace/falco/app_actions/load_rules_files.cpp index a4879c2b..c2573d67 100644 --- a/userspace/falco/app_actions/load_rules_files.cpp +++ b/userspace/falco/app_actions/load_rules_files.cpp @@ -19,6 +19,21 @@ limitations under the License. using namespace falco::app; +bool application::check_rules_plugin_requirements(std::string& err) +{ + // Ensure that all plugins are compatible with the loaded set of rules + // note: offline inspector contains all the loaded plugins + std::vector plugin_reqs; + for (const auto &plugin : m_state->offline_inspector->get_plugin_manager()->plugins()) + { + falco_engine::plugin_version_requirement req; + req.name = plugin->name(); + req.version = plugin->plugin_version().as_string(); + plugin_reqs.push_back(req); + } + return m_state->engine->check_plugin_requirements(plugin_reqs, err); +} + void application::check_for_ignored_events() { /* Get the events from the rules. */ @@ -134,20 +149,10 @@ application::run_result application::load_rules_files() } } - // Ensure that all plugins are compatible with the loaded set of rules - // note: offline inspector contains all the loaded plugins - std::string plugin_vers_err = ""; - std::vector plugin_reqs; - for (const auto &plugin : m_state->offline_inspector->get_plugin_manager()->plugins()) - { - falco_engine::plugin_version_requirement req; - req.name = plugin->name(); - req.version = plugin->plugin_version().as_string(); - plugin_reqs.push_back(req); - } - if (!m_state->engine->check_plugin_requirements(plugin_reqs, plugin_vers_err)) + std::string err = ""; + if (!check_rules_plugin_requirements(err)) { - return run_result::fatal(plugin_vers_err); + return run_result::fatal(err); } for (const auto& substring : m_options.disabled_rule_substrings) diff --git a/userspace/falco/application.h b/userspace/falco/application.h index 13e56234..0cc761b8 100644 --- a/userspace/falco/application.h +++ b/userspace/falco/application.h @@ -284,6 +284,7 @@ private: bool create_handler(int sig, void (*func)(int), run_result &ret); void configure_output_format(); void check_for_ignored_events(); + bool check_rules_plugin_requirements(std::string& err); void format_plugin_info(std::shared_ptr p, std::ostream& os) const; run_result open_offline_inspector(); run_result open_live_inspector(std::shared_ptr inspector, const std::string& source);