zeek/testing/btest/scripts/base/protocols/conn/removal-hooks.zeek
Jon Siwek 05cf511f18 GH-1119: add base/protcols/conn/removal-hooks.zeek
This adds two new functions: `Conn::register_removal_hook()` and
`Conn::unregister_removal_hook()` for registering a hook function to be
called back during `connection_state_remove`.  The benefit of using hook
callback approach is better scalability: the overhead of unrelated
protocols having to dispatch no-op `connection_state_remove` handlers is
avoided.
2020-09-11 12:12:10 -07:00

27 lines
765 B
Text

# @TEST-EXEC: zeek -b -r $TRACES/http/get.trace %INPUT >out
# @TEST-EXEC: zeek -b -r $TRACES/http/get.trace %INPUT test_unregister=T >>out
# @TEST-EXEC: btest-diff out
@load base/protocols/conn/removal-hooks
option test_unregister = F;
hook my_removal_hook(c: connection)
{
print "my_removal_hook", c$id;
}
event new_connection(c: connection)
{
print "new_connection", c$id;
print Conn::register_removal_hook(c, my_removal_hook);
print Conn::register_removal_hook(c, my_removal_hook);
print Conn::register_removal_hook(c, my_removal_hook);
if ( test_unregister )
{
print Conn::unregister_removal_hook(c, my_removal_hook);
print Conn::unregister_removal_hook(c, my_removal_hook);
print Conn::unregister_removal_hook(c, my_removal_hook);
}
}