[Bro-Dev] Config Framework Feedback
Christian Kreibich
christian at corelight.com
Tue Oct 30 13:17:57 PDT 2018
Hi folks,
I would agree that it takes a bit of experimentation to figure out
exactly when a change handler fires and how to reliably initialize or
update things based on an option's value.
Consider this:
module Foo;
export { option foo = F; }
function foo_handler(ID: string, foo_new: bool): bool
{
print fmt("New foo: %s", foo_new);
# Update stuff here based on foo's value
# ...
return foo_new;
}
event bro_init() {
Option::set_change_handler("Foo::foo", foo_handler);
}
... foo_handler doesn't get called when you simply run the script
without redefing Config::config_files. When you do redef it, the handler
fires both when the config file sets foo to T, and when it sets it to F.
So you have to make sure that your initialization happens even when the
handler doesn't get called, and you cannot write your handler assuming
that the new value is actually different from the old one.
These arguably aren't bugs, but imo they do take getting used to.
Best,
-C.
More information about the bro-dev
mailing list