diff --git a/scripts/base/frameworks/analyzer/main.bro b/scripts/base/frameworks/analyzer/main.bro index dcadb402fb..8d2df76e4f 100644 --- a/scripts/base/frameworks/analyzer/main.bro +++ b/scripts/base/frameworks/analyzer/main.bro @@ -5,6 +5,9 @@ module Analyzer; # as they are loaded. export { + ## XXX + global disable_all = F &redef; + ## XXX. global enable_analyzer: function(tag: Analyzer::Tag) : bool; @@ -63,8 +66,11 @@ export { global ports: table[Analyzer::Tag] of set[port]; -event bro_init() +event bro_init() &priority=-5 { + if ( disable_all ) + __disable_all_analyzers(); + for ( a in disabled_analyzers ) disable_analyzer(a); } diff --git a/src/analyzer.bif b/src/analyzer.bif index 92b533308a..69c648f7d3 100644 --- a/src/analyzer.bif +++ b/src/analyzer.bif @@ -20,6 +20,12 @@ function Analyzer::__disable_analyzer%(id: Analyzer::Tag%) : bool return new Val(result, TYPE_BOOL); %} +function Analyzer::__disable_all_analyzers%(%) : any + %{ + analyzer_mgr->DisableAllAnalyzers(); + return 0; + %} + function Analyzer::__register_for_port%(id: Analyzer::Tag, p: port%) : bool %{ bool result = analyzer_mgr->RegisterAnalyzerForPort(id->AsEnumVal(), p); diff --git a/src/analyzer/Manager.cc b/src/analyzer/Manager.cc index e30976b9e3..70b22bfc26 100644 --- a/src/analyzer/Manager.cc +++ b/src/analyzer/Manager.cc @@ -224,6 +224,14 @@ bool Manager::DisableAnalyzer(EnumVal* val) return true; } +void Manager::DisableAllAnalyzers() + { + DBG_LOG(DBG_ANALYZER, "Disabling all analyzers"); + + for ( analyzer_map_by_tag::const_iterator i = analyzers_by_tag.begin(); i != analyzers_by_tag.end(); i++ ) + i->second->SetEnabled(false); + } + bool Manager::IsEnabled(Tag tag) { if ( ! tag ) diff --git a/src/analyzer/Manager.h b/src/analyzer/Manager.h index 0284504f35..cb749bab7f 100644 --- a/src/analyzer/Manager.h +++ b/src/analyzer/Manager.h @@ -113,6 +113,11 @@ public: */ bool DisableAnalyzer(EnumVal* tag); + /** + * Disables all currently registered analyzers. + */ + void DisableAllAnalyzers(); + /** * Returns true if an analyzer is enabled. *