##! Definitions of built-in functions related to loading compiled-to-C++ ##! scripts. %%{ // C segment #include # #include "zeek/Reporter.h" #include "zeek/script_opt/ScriptOpt.h" #include "zeek/script_opt/CPP/Func.h" %%} ## Activates the compile-to-C++ scripts associated with the given hash. ## ## h: Hash of the set of C++ scripts. ## ## Returns: True if it was present and loaded, false if not. ## function load_CPP%(h: count%): bool %{ auto cb = detail::standalone_callbacks.find(h); if ( cb == detail::standalone_callbacks.end() || ! detail::CPP_init_hook ) { reporter->Error("load of non-existing C++ code (%" PRIu64 ")", h); return zeek::val_mgr->False(); } // Ensure that any compiled scripts are used. If instead // the AST is used, then when we activate the standalone // scripts, they won't be able to avoid installing redundant // event handlers. detail::analysis_options.use_CPP = true; // Mark this script as one we should activate after loading // compiled scripts. detail::standalone_activations.push_back(cb->second); return zeek::val_mgr->True(); %}