# @TEST-EXEC: zeek -b -r $TRACES/tls/ecdhe.pcap %INPUT
# @TEST-EXEC: btest-diff .stdout

# Verify the state of internal tables after rules have been deleted...

@load base/frameworks/netcontrol

module NetControl;

export {
	global dump_state: function();
}

function dump_state()
	{
	print "Dumping state";
	print rules;
	print rule_entities;
	print rules_by_subnets;
	}

module GLOBAL;

global rules: vector of string;

event NetControl::init()
	{
	local netcontrol_debug = NetControl::create_debug(T);
	NetControl::activate(netcontrol_debug, 10);
	}

event remove_all()
	{
	for ( i in rules )
		NetControl::remove_rule(rules[i]);
	}

event dump_info()
	{
	NetControl::dump_state();
	}

event connection_established(c: connection)
	{
	local id = c$id;
	rules += NetControl::shunt_flow([$src_h=id$orig_h, $src_p=id$orig_p, $dst_h=id$resp_h, $dst_p=id$resp_p], 0secs);
	rules += NetControl::drop_address(id$orig_h, 0secs);
	rules += NetControl::whitelist_address(id$orig_h, 0secs);
	rules += NetControl::redirect_flow([$src_h=id$orig_h, $src_p=id$orig_p, $dst_h=id$resp_h, $dst_p=id$resp_p], 5, 0secs);

	schedule 1sec { remove_all() };
	schedule 2sec { dump_info() };
	}

