zeek/testing/btest/scripts/base/utils/site-defaults.test
2023-03-15 17:11:08 -07:00

89 lines
2.2 KiB
Text

# This tests the relationship of Site::local_nets and Site::private_address_space.
# The former defaults to the same values as the latter and both are config options.
# Therefore both redefs and runtime updates only affect the respective variable,
# not the other.
#
# @TEST-EXEC: zeek -b %INPUT > output
# @TEST-EXEC: btest-diff output
@TEST-START-FILE common.zeek
function check_addr(ip: addr)
{
print fmt("%s is private: %s", ip, Site::is_private_addr(ip));
print fmt("%s is local: %s", ip, Site::is_local_addr(ip));
if ( ip in Site::local_nets_table )
print fmt("local subnet is %s", Site::local_nets_table[ip]);
else
print fmt("no local subnet");
}
event zeek_init()
{
check_addr(10.0.0.1);
check_addr(1.2.3.4);
}
@TEST-END-FILE
# (1) The common case: 10/8 is private, implying local, and 1/8 is not.
@load ./common
@TEST-START-NEXT
# (2) Removing 10/8 from private space implies we remove it from local, too.
@load ./common
redef Site::private_address_space -= { 10.0.0.0/8 };
@TEST-START-NEXT
# (3) Adding 1/8 to private space implies we add it to local, too.
@load ./common
redef Site::private_address_space = { 1.0.0.0/8 };
@TEST-START-NEXT
# (4) Adding 1/8 to local space doesn't change the private one.
@load ./common
redef Site::local_nets += { 1.0.0.0/8 };
@TEST-START-NEXT
# (5) Resetting the local space to 1/8 does not lose the private space.
@load ./common
redef Site::local_nets = { 1.0.0.0/8 };
@TEST-START-NEXT
# (6) Resetting the private space dynamically does propagate into local space.
@load ./common
event zeek_init() &priority=5
{
Config::set_value("Site::private_address_space", set(1.0.0.0/8));
}
@TEST-START-NEXT
# (7) Resetting local space dynamically does not lose the private space.
@load ./common
event zeek_init() &priority=5
{
Config::set_value("Site::local_nets", set(1.0.0.0/8));
}
@TEST-START-NEXT
# (8) Disable the private-means-local implication and verify defaults.
@load ./common
redef Site::private_address_space_is_local = F;
@TEST-START-NEXT
# (9) Disable the private-means-local implication and alter both.
@load ./common
redef Site::private_address_space_is_local = F;
redef Site::private_address_space = { 1.0.0.0/8 };
redef Site::local_nets = { 10.0.0.0/8 };