[Bro-Dev] Config Framework Feedback

Robin Sommer robin at corelight.com
Thu Nov 1 07:43:36 PDT 2018


The oberservations / thoughts in this thread seem worth a ticket I'd
say. We can refine this over time if the current semantics aren't
quite ideal yet.

Robin

On Tue, Oct 30, 2018 at 13:17 -0700, Christian Kreibich wrote:

> 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.
> _______________________________________________
> bro-dev mailing list
> bro-dev at bro.org
> http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev


-- 
Robin Sommer * Corelight, Inc. * robin at corelight.com * www.corelight.com


More information about the bro-dev mailing list