Adding options Analyzer::disable_all to disable all analyzers at

startup.

One can then selectively enable the ones one wants inside a bro_init()
handler.
This commit is contained in:
Robin Sommer 2013-04-04 15:24:15 -07:00
parent b122b39874
commit bccaea6883
4 changed files with 26 additions and 1 deletions

View file

@ -5,6 +5,9 @@ module Analyzer;
# as they are loaded. # as they are loaded.
export { export {
## XXX
global disable_all = F &redef;
## XXX. ## XXX.
global enable_analyzer: function(tag: Analyzer::Tag) : bool; global enable_analyzer: function(tag: Analyzer::Tag) : bool;
@ -63,8 +66,11 @@ export {
global ports: table[Analyzer::Tag] of set[port]; 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 ) for ( a in disabled_analyzers )
disable_analyzer(a); disable_analyzer(a);
} }

View file

@ -20,6 +20,12 @@ function Analyzer::__disable_analyzer%(id: Analyzer::Tag%) : bool
return new Val(result, TYPE_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 function Analyzer::__register_for_port%(id: Analyzer::Tag, p: port%) : bool
%{ %{
bool result = analyzer_mgr->RegisterAnalyzerForPort(id->AsEnumVal(), p); bool result = analyzer_mgr->RegisterAnalyzerForPort(id->AsEnumVal(), p);

View file

@ -224,6 +224,14 @@ bool Manager::DisableAnalyzer(EnumVal* val)
return true; 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) bool Manager::IsEnabled(Tag tag)
{ {
if ( ! tag ) if ( ! tag )

View file

@ -113,6 +113,11 @@ public:
*/ */
bool DisableAnalyzer(EnumVal* tag); bool DisableAnalyzer(EnumVal* tag);
/**
* Disables all currently registered analyzers.
*/
void DisableAllAnalyzers();
/** /**
* Returns true if an analyzer is enabled. * Returns true if an analyzer is enabled.
* *