Fix packet analyzer replacement.

Also reworking the existing test, which was pretty odd/broken.
This commit is contained in:
Robin Sommer 2024-04-30 11:30:35 +02:00
parent 3a469b3619
commit ccfeffaf2b
No known key found for this signature in database
GPG key ID: D8187293B3FFE5D0
5 changed files with 26 additions and 26 deletions

View file

@ -18,11 +18,23 @@ void Component::Initialize() {
}
void Component::SetEnabled(bool arg_enabled) {
plugin::Component::SetEnabled(arg_enabled);
auto analyzer = packet_mgr->GetAnalyzer(Tag().AsVal().get());
if ( analyzer ) {
// We can only toggle the analyzer if it's not replacing another one,
// otherwise our dispatching tables would be wrong.
if ( packet_mgr->ProvidesComponentMapping(Tag()) ) {
reporter->Warning(
"attempt to toggle packet analyzer %s, which replaces another one; toggling replacement analyzers is "
"not supported",
analyzer->GetAnalyzerName());
return;
}
// If we already have instantiated an analyzer, update its state.
if ( auto analyzer = packet_mgr->Lookup(Tag().AsVal().get(), false) )
// Update the existing analyzer's state.
analyzer->SetEnabled(arg_enabled);
}
plugin::Component::SetEnabled(arg_enabled);
}
void Component::DoDescribe(ODesc* d) const {