test: add tests for config_parse_address()
This commit is contained in:
@@ -168,6 +168,49 @@ static void test_config_parse_hwaddr(void) {
|
||||
test_config_parse_hwaddrs_one("123.4567.89ab aa:bb:cc:dd:ee:fx hogehoge 01-23-45-67-89-ab aaaa aa:Bb:CC:dd:ee:ff", t, 2);
|
||||
}
|
||||
|
||||
static void test_config_parse_address_one(const char *rvalue, int family, unsigned n_addresses, const union in_addr_union *u, unsigned char prefixlen) {
|
||||
_cleanup_(network_freep) Network *network = NULL;
|
||||
|
||||
assert_se(network = new0(Network, 1));
|
||||
assert_se(network->addresses_by_section = hashmap_new(NULL));
|
||||
assert_se(config_parse_address("network", "filename", 1, "section", 1, "Address", 0, rvalue, network, network) == 0);
|
||||
assert_se(network->n_static_addresses == n_addresses);
|
||||
if (n_addresses > 0) {
|
||||
assert_se(network->static_addresses);
|
||||
assert_se(network->static_addresses->prefixlen == prefixlen);
|
||||
assert_se(network->static_addresses->family == family);
|
||||
assert_se(in_addr_equal(family, &network->static_addresses->in_addr, u));
|
||||
/* TODO: check Address.in_addr and Address.broadcast */
|
||||
}
|
||||
}
|
||||
|
||||
static void test_config_parse_address(void) {
|
||||
test_config_parse_address_one("", AF_INET, 0, NULL, 0);
|
||||
test_config_parse_address_one("/", AF_INET, 0, NULL, 0);
|
||||
test_config_parse_address_one("/8", AF_INET, 0, NULL, 0);
|
||||
test_config_parse_address_one("1.2.3.4", AF_INET, 1, &(union in_addr_union) { .in = (struct in_addr) { .s_addr = htobe32(0x01020304) } }, 8);
|
||||
test_config_parse_address_one("1.2.3.4/0", AF_INET, 1, &(union in_addr_union) { .in = (struct in_addr) { .s_addr = htobe32(0x01020304) } }, 0);
|
||||
test_config_parse_address_one("1.2.3.4/1", AF_INET, 1, &(union in_addr_union) { .in = (struct in_addr) { .s_addr = htobe32(0x01020304) } }, 1);
|
||||
test_config_parse_address_one("1.2.3.4/2", AF_INET, 1, &(union in_addr_union) { .in = (struct in_addr) { .s_addr = htobe32(0x01020304) } }, 2);
|
||||
test_config_parse_address_one("1.2.3.4/32", AF_INET, 1, &(union in_addr_union) { .in = (struct in_addr) { .s_addr = htobe32(0x01020304) } }, 32);
|
||||
test_config_parse_address_one("1.2.3.4/33", AF_INET, 0, NULL, 0);
|
||||
test_config_parse_address_one("1.2.3.4/-1", AF_INET, 0, NULL, 0);
|
||||
|
||||
test_config_parse_address_one("", AF_INET6, 0, NULL, 0);
|
||||
test_config_parse_address_one("/", AF_INET6, 0, NULL, 0);
|
||||
test_config_parse_address_one("/8", AF_INET6, 0, NULL, 0);
|
||||
test_config_parse_address_one("::1", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 128);
|
||||
test_config_parse_address_one("::1/0", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 0);
|
||||
test_config_parse_address_one("::1/1", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 1);
|
||||
test_config_parse_address_one("::1/2", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 2);
|
||||
test_config_parse_address_one("::1/32", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 32);
|
||||
test_config_parse_address_one("::1/33", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 33);
|
||||
test_config_parse_address_one("::1/64", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 64);
|
||||
test_config_parse_address_one("::1/128", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 128);
|
||||
test_config_parse_address_one("::1/129", AF_INET6, 0, NULL, 0);
|
||||
test_config_parse_address_one("::1/-1", AF_INET6, 0, NULL, 0);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
log_parse_environment();
|
||||
log_open();
|
||||
@@ -175,6 +218,7 @@ int main(int argc, char **argv) {
|
||||
test_config_parse_duid_type();
|
||||
test_config_parse_duid_rawdata();
|
||||
test_config_parse_hwaddr();
|
||||
test_config_parse_address();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user