From 47f221f502305c512840d3053757ae1da8608422 Mon Sep 17 00:00:00 2001 From: Nitesh Kumar Date: Fri, 2 Aug 2024 22:55:45 +0530 Subject: [PATCH] network-config-manager: This commit has following changes in set-ipv4 and set-ipv6 command. 1. LinkLocalAddressing overrides while setting ipv6 over ipv4 and vice versa. 2. DNS settings got overrides while setting ipv6 DNS over ipv4 DNS and vice versa. 3. Domains option added in both set-ipv4 and set-ipv6 command to set multiple domain names. 4. UseDomains option added in both set-ipv4 and set-ipv6 command to set UseDomains. 5. ClientIdentifier option added in set-ipv4 command to set ClientIdentifier. 6. Adding multiple test for set-ipv4 and set-ipv6 command. The test is a combination of IPv4, IPv6, DNS, Domains, UseDns, UseDomains, SendRelease, LinkLocalAddressing, ClientIdentifier etc. --- tests/cmocka/basic.c | 72 ++++++++- tests/cmocka/set-network.c | 324 +++++++++++++++++++++++++++++++++++++ tests/cmocka/set-network.h | 14 ++ 3 files changed, 406 insertions(+), 4 deletions(-) diff --git a/tests/cmocka/basic.c b/tests/cmocka/basic.c index 7e60205a..c6bf75d0 100644 --- a/tests/cmocka/basic.c +++ b/tests/cmocka/basic.c @@ -479,6 +479,8 @@ static void test_set_dhcp6_duid(void **state) { assert_true(key_file_config_exists(key_file, "DHCPv6", "DUIDType", "vendor")); assert_true(key_file_config_exists(key_file, "DHCPv6", "DUIDRawData", "00:00:ab:11:f9:2a:c2:77:29:f9:5c:00")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_set_dhcp4_duid(void **state) { @@ -495,6 +497,8 @@ static void test_set_dhcp4_duid(void **state) { assert_true(key_file_config_exists(key_file, "DHCPv4", "DUIDType", "vendor")); assert_true(key_file_config_exists(key_file, "DHCPv4", "DUIDRawData", "00:00:ab:11:f9:2a:c2:77:29:f9:5c:00")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_set_dns(void **state) { @@ -510,6 +514,8 @@ static void test_set_dns(void **state) { assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); assert_true(key_file_config_exists(key_file, "Network", "DNS", "192.168.1.5 192.168.1.4")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_revert_dns(void **state) { @@ -533,6 +539,8 @@ static void test_revert_dns(void **state) { display_key_file(key_file2); assert_true(!key_file_config_exists(key_file2, "Network", "DNS", "192.168.1.5 192.168.1.4")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_revert_dns_with_parametre(void **state) { @@ -556,6 +564,8 @@ static void test_revert_dns_with_parametre(void **state) { display_key_file(key_file2); assert_true(!key_file_config_exists(key_file2, "Network", "DNS", "192.168.1.5 192.168.1.4")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_add_remove_many_address(void **state) { @@ -573,6 +583,8 @@ static void test_add_remove_many_address(void **state) { assert_false(key_file_config_exists(key_file, "Address", "Address", "192.168.1.6/24")); assert_false(key_file_config_exists(key_file, "Address", "Address", "192.168.1.7/24")); assert_false(key_file_config_exists(key_file, "Address", "Address", "192.168.1.8/24")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_add_many_address(void **state) { @@ -591,6 +603,8 @@ static void test_add_many_address(void **state) { assert_true(key_file_config_exists(key_file, "Address", "Address", "192.168.1.6/24")); assert_true(key_file_config_exists(key_file, "Address", "Address", "192.168.1.7/24")); assert_true(key_file_config_exists(key_file, "Address", "Address", "192.168.1.8/24")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_add_many_address_ipv6(void **state) { @@ -610,6 +624,8 @@ static void test_add_many_address_ipv6(void **state) { assert_true(key_file_config_exists(key_file, "Address", "Address", "fe80::12/64")); assert_true(key_file_config_exists(key_file, "Address", "Address", "fe80::13/64")); assert_true(key_file_config_exists(key_file, "Address", "Address", "fe80::14/64")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_cli_set_ipv6_with_static_address(void **state) { @@ -649,6 +665,8 @@ static void test_cli_set_ipv6_with_static_address(void **state) { assert_false(key_file_config_exists(key_file, "Address", "Address", "fe80::15/64")); assert_false(key_file_config_exists(key_file, "Route", "Gateway", "::1")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_cli_set_ipv6_with_send_release(void **state) { @@ -684,6 +702,7 @@ static void test_cli_set_ipv6_with_send_release(void **state) { assert_false(key_file_config_exists(key_file, "Address", "Address", "fe80::15/64")); assert_false(key_file_config_exists(key_file, "Route", "Gateway", "::1")); + unlink("/etc/systemd/network/10-test99.network"); } static void test_cli_set_ipv6_with_static_address_and_dns(void **state) { @@ -719,6 +738,8 @@ static void test_cli_set_ipv6_with_static_address_and_dns(void **state) { assert_false(key_file_config_exists(key_file, "Address", "Address", "fe80::15/64")); assert_false(key_file_config_exists(key_file, "Route", "Gateway", "::1")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_cli_set_ipv6_with_static_dynamic_and_dns(void **state) { @@ -760,6 +781,8 @@ static void test_cli_set_ipv6_with_static_dynamic_and_dns(void **state) { assert_false(key_file_config_exists(key_file, "Address", "Address", "fe80::15/64")); assert_false(key_file_config_exists(key_file, "Route", "Gateway", "::1")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_cli_set_ipv4_with_static_address(void **state) { @@ -786,7 +809,7 @@ static void test_cli_set_ipv4_with_static_address(void **state) { display_key_file(key_file); assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); - assert_true(key_file_config_exists(key_file, "Network", "DHCP", "ipv6")); + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "no")); assert_true(key_file_config_exists(key_file, "Address", "Address", "192.168.1.101")); assert_true(key_file_config_exists(key_file, "Address", "Address", "192.168.1.102")); @@ -795,6 +818,8 @@ static void test_cli_set_ipv4_with_static_address(void **state) { assert_false(key_file_config_exists(key_file, "Address", "Address", "192.168.1.100")); assert_false(key_file_config_exists(key_file, "Route", "Gateway", "192.168.1.1")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_cli_set_ipv4_with_send_release(void **state) { @@ -821,13 +846,15 @@ static void test_cli_set_ipv4_with_send_release(void **state) { display_key_file(key_file); assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); - assert_true(key_file_config_exists(key_file, "Network", "DHCP", "yes")); + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "ipv4")); assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "ipv4")); assert_true(key_file_config_exists(key_file, "DHCPv4", "SendRelease", "no")); assert_false(key_file_config_exists(key_file, "Address", "Address", "192.168.1.100")); assert_false(key_file_config_exists(key_file, "Route", "Gateway", "192.168.1.1")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_cli_set_ipv4_with_static_address_and_dns(void **state) { @@ -854,7 +881,7 @@ static void test_cli_set_ipv4_with_static_address_and_dns(void **state) { display_key_file(key_file); assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); - assert_true(key_file_config_exists(key_file, "Network", "DHCP", "ipv6")); + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "no")); assert_true(key_file_config_exists(key_file, "Network", "DNS", "192.168.1.10 192.168.1.20")); assert_true(key_file_config_exists(key_file, "Address", "Address", "192.168.1.101")); @@ -863,6 +890,8 @@ static void test_cli_set_ipv4_with_static_address_and_dns(void **state) { assert_false(key_file_config_exists(key_file, "Address", "Address", "192.168.1.100")); assert_false(key_file_config_exists(key_file, "Route", "Gateway", "192.168.1.1")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_cli_set_ipv4_with_static_dynamic_and_dns(void **state) { @@ -889,7 +918,7 @@ static void test_cli_set_ipv4_with_static_dynamic_and_dns(void **state) { display_key_file(key_file); assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); - assert_true(key_file_config_exists(key_file, "Network", "DHCP", "yes")); + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "ipv4")); assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "ipv4")); assert_true(key_file_config_exists(key_file, "Network", "DNS", "192.168.1.10 192.168.1.20")); @@ -903,6 +932,8 @@ static void test_cli_set_ipv4_with_static_dynamic_and_dns(void **state) { assert_false(key_file_config_exists(key_file, "Address", "Address", "192.168.1.100")); assert_false(key_file_config_exists(key_file, "Route", "Gateway", "192.168.1.1")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_add_many_address_space_separated(void **state) { @@ -936,6 +967,8 @@ static void test_add_one_address(void **state) { assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); assert_true(key_file_config_exists(key_file, "Address", "Address", "192.168.1.5/24")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_add_remove_address(void **state) { @@ -961,6 +994,8 @@ static void test_add_remove_address(void **state) { display_key_file(key_file2); printf("--------------------------------------\n"); assert_false(key_file_config_exists(key_file2, "Address", "Address", "192.168.1.5/24")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_add_remove_many_address_family_ipv6(void **state) { @@ -981,6 +1016,8 @@ static void test_add_remove_many_address_family_ipv6(void **state) { assert_true(!key_file_config_exists(key_file, "Address", "Address", "fe80::12/64")); assert_true(!key_file_config_exists(key_file, "Address", "Address", "fe80::13/64")); assert_true(!key_file_config_exists(key_file, "Address", "Address", "fe80::14/64")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_add_remove_many_address_family(void **state) { @@ -1005,6 +1042,8 @@ static void test_add_remove_many_address_family(void **state) { assert_true(!key_file_config_exists(key_file, "Address", "Address", "192.168.1.6/24")); assert_true(!key_file_config_exists(key_file, "Address", "Address", "192.168.1.7/24")); assert_true(!key_file_config_exists(key_file, "Address", "Address", "192.168.1.8/24")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_add_remove_many_address_family_ipv4(void **state) { @@ -1024,6 +1063,8 @@ static void test_add_remove_many_address_family_ipv4(void **state) { assert_true(!key_file_config_exists(key_file, "Address", "Address", "192.168.1.6/24")); assert_true(!key_file_config_exists(key_file, "Address", "Address", "192.168.1.7/24")); assert_true(!key_file_config_exists(key_file, "Address", "Address", "192.168.1.8/24")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_replace_many_address_ipv6(void **state) { @@ -1064,6 +1105,8 @@ static void test_replace_many_address_ipv6(void **state) { assert_false(key_file_config_exists(key_file, "Address", "Address", "fe80::12/64")); assert_false(key_file_config_exists(key_file, "Address", "Address", "fe80::13/64")); assert_false(key_file_config_exists(key_file, "Address", "Address", "fe80::14/64")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_replace_many_address_ipv4(void **state) { @@ -1106,6 +1149,8 @@ static void test_replace_many_address_ipv4(void **state) { assert_false(key_file_config_exists(key_file, "Address", "Address", "192.168.1.5/24")); assert_false(key_file_config_exists(key_file, "Address", "Address", "192.168.1.6/24")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_set_gw_keep(void **state) { @@ -1123,6 +1168,8 @@ static void test_set_gw_keep(void **state) { assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); assert_true(key_file_config_exists(key_file, "Route", "Gateway", "192.168.1.1")); assert_true(key_file_config_exists(key_file, "Route", "Gateway", "192.168.1.2")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_set_gw_family(void **state) { @@ -1155,6 +1202,8 @@ static void test_remove_gw_family(void **state) { assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); assert_true(!key_file_config_exists(key_file, "Route", "Gateway", "192.168.1.1")); assert_true(!key_file_config_exists(key_file, "Route", "Gateway", "::1")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_additional_gw_source_routing(void **state) { @@ -1183,6 +1232,8 @@ static void test_additional_gw_source_routing(void **state) { assert_true(key_file_config_exists(key_file, "RoutingPolicyRule", "To", "192.168.10.5/24")); assert_true(key_file_config_exists(key_file, "RoutingPolicyRule", "Table", "100")); + + unlink("/etc/systemd/network/10-test99.network"); } static void test_add_dhcp4_server_static_address(void **state) { @@ -2008,6 +2059,19 @@ int main(void) { cmocka_unit_test (test_vami_set_dynamic_ipv4_static_address_gw), cmocka_unit_test (test_vami_set_static_ipv6_static_address_gw), cmocka_unit_test (test_vami_set_static_ipv4_ipv6_static_address_gw), + /* test cases with set-ipv4 and set-ipv6 */ + cmocka_unit_test (test_dhcp_ipv4_none_ipv6_dhcp_dns), + cmocka_unit_test (test_dhcp_ipv4_none_ipv6_none_dns), + cmocka_unit_test (test_dhcp_ipv4_dhcp_ipv6_dhcp_dns), + cmocka_unit_test (test_dhcp_ipv4_auto_ipv6_dhcp_dns), + cmocka_unit_test (test_dhcp_ipv4_static_ipv6_static_dns), + cmocka_unit_test (test_static_ipv4_none_ipv6_static_dns), + cmocka_unit_test (test_static_ipv4_dhcp_ipv6_static_dns), + cmocka_unit_test (test_static_ipv4_auto_ipv6_static_dns), + cmocka_unit_test (test_static_ipv4_static_ipv6_static_dns), + cmocka_unit_test (test_none_ipv4_dhcp_ipv6_dhcp_dns), + cmocka_unit_test (test_none_ipv4_auto_ipv6_dhcp_dns), + cmocka_unit_test (test_none_ipv4_static_ipv6_static_dns), }; int count_fail_tests = cmocka_run_group_tests (tests, setup, teardown); diff --git a/tests/cmocka/set-network.c b/tests/cmocka/set-network.c index 48d56408..ee39ffb4 100644 --- a/tests/cmocka/set-network.c +++ b/tests/cmocka/set-network.c @@ -526,3 +526,327 @@ void test_set_network_dhcp_ipv4_ipv4_ra_dhcp4_client_identifier_dhcp_iaid_static unlink("/etc/systemd/network/10-test99.network"); } + +/* DHCPv4 + DHCP-DNS */ +void test_dhcp_ipv4_none_ipv6_dhcp_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + assert_true(system("nmctl set-ipv4 dev test99 dhcp yes lla ipv4 send-release no use-domains yes cid mac domains eng.vmware.com,vmware.com") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "ipv4")); + assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "ipv4")); + assert_true(key_file_config_exists(key_file, "Network", "Domains", "eng.vmware.com vmware.com")); + + assert_true(key_file_config_exists(key_file, "DHCPv4", "SendRelease", "no")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDomains", "yes")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "ClientIdentifier", "mac")); + + unlink("/etc/systemd/network/10-test99.network"); +} + +/* DHCPv4 */ +void test_dhcp_ipv4_none_ipv6_none_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + /* Default value of UseDNS=true */ + assert_true(system("nmctl set-ipv4 dev test99 dhcp yes lla ipv4 send-release no use-dns no domains eng.vmware.com,vmware.com") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "ipv4")); + assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "ipv4")); + assert_true(key_file_config_exists(key_file, "Network", "Domains", "eng.vmware.com vmware.com")); + + assert_true(key_file_config_exists(key_file, "DHCPv4", "SendRelease", "no")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDNS", "no")); + + unlink("/etc/systemd/network/10-test99.network"); +} + +/* DHCPv4 + DHCPv6 + DHCP-DNS */ +void test_dhcp_ipv4_dhcp_ipv6_dhcp_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + assert_true(system("nmctl set-ipv4 dev test99 dhcp yes lla yes send-release no use-domains yes cid mac") >= 0); + assert_true(system("nmctl set-ipv6 dev test99 dhcp yes use-domains yes send-release no") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "yes")); + assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "yes")); + assert_true(key_file_config_exists(key_file, "Network", "IPv6AcceptRA", "yes")); + + assert_true(key_file_config_exists(key_file, "DHCPv4", "ClientIdentifier", "mac")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDomains", "yes")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "SendRelease", "no")); + + assert_true(key_file_config_exists(key_file, "DHCPv6", "SendRelease", "no")); + assert_true(key_file_config_exists(key_file, "DHCPv6", "UseDomains", "yes")); + + unlink("/etc/systemd/network/10-test99.network"); +} + +/* DHCPv4 + AUTOv6 + DHCP-DNS */ +void test_dhcp_ipv4_auto_ipv6_dhcp_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + assert_true(system("nmctl set-ipv4 dev test99 dhcp yes lla yes send-release no use-domains yes cid mac") >= 0); + assert_true(system("nmctl set-ipv6 dev test99 accept-ra yes use-domains yes") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "ipv4")); + assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "yes")); + assert_true(key_file_config_exists(key_file, "Network", "IPv6AcceptRA", "yes")); + + assert_true(key_file_config_exists(key_file, "DHCPv4", "ClientIdentifier", "mac")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDomains", "yes")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "SendRelease", "no")); + + assert_true(key_file_config_exists(key_file, "DHCPv6", "UseDomains", "yes")); + + unlink("/etc/systemd/network/10-test99.network"); +} + +/* DHCPv4 + STATICv6 + STATIC-DNS */ +void test_dhcp_ipv4_static_ipv6_static_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + assert_true(system("nmctl set-ipv4 dev test99 dhcp yes lla ipv4 send-release no use-dns no use-domains yes cid mac dns 192.168.1.10,192.168.1.20") >= 0); + assert_true(system("nmctl set-ipv6 dev test99 use-dns no use-domains yes accept-ra no addr fe80::10 gw fe80::1 dns fe80::4,fe80::5") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "ipv4")); + assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "ipv4")); + assert_true(key_file_config_exists(key_file, "Network", "DNS", "fe80::4 fe80::5 192.168.1.10 192.168.1.20")); + assert_true(key_file_config_exists(key_file, "Network", "IPv6AcceptRA", "no")); + + assert_true(key_file_config_exists(key_file, "DHCPv4", "ClientIdentifier", "mac")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDomains", "yes")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDNS", "no")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "SendRelease", "no")); + + assert_true(key_file_config_exists(key_file, "DHCPv6", "UseDomains", "yes")); + assert_true(key_file_config_exists(key_file, "DHCPv6", "UseDNS", "no")); + + assert_true(key_file_config_exists(key_file, "Address", "Address", "fe80::10")); + assert_true(key_file_config_exists(key_file, "Route", "Gateway", "fe80::1")); + + unlink("/etc/systemd/network/10-test99.network"); +} + +/* STATICv4 + STATIC-DNS */ +void test_static_ipv4_none_ipv6_static_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + assert_true(system("nmctl set-ipv4 dev test99 lla no use-dns no send-release no addr 192.168.1.101 gw 192.168.1.2 dns 192.168.1.10,192.168.1.20") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "no")); + assert_true(key_file_config_exists(key_file, "Network", "DNS", "192.168.1.10 192.168.1.20")); + + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDNS", "no")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "SendRelease", "no")); + + assert_true(key_file_config_exists(key_file, "Address", "Address", "192.168.1.101")); + assert_true(key_file_config_exists(key_file, "Route", "Gateway", "192.168.1.2")); + + unlink("/etc/systemd/network/10-test99.network"); + +} + +/* STATICv4 + DHCPv6 + STATIC-DNS */ +void test_static_ipv4_dhcp_ipv6_static_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + assert_true(system("nmctl set-ipv4 dev test99 use-dns no use-domains yes send-release no cid mac addr 192.168.1.101 gw 192.168.1.2 dns 192.168.1.10,192.168.1.20") >= 0); + assert_true(system("nmctl set-ipv6 dev test99 dhcp yes use-dns no use-domains yes send-release no dns fe80::4,fe80::5") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "ipv6")); + assert_true(key_file_config_exists(key_file, "Network", "IPv6AcceptRA", "yes")); + assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "ipv6")); + assert_true(key_file_config_exists(key_file, "Network", "DNS", "fe80::4 fe80::5 192.168.1.10 192.168.1.20")); + + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDNS", "no")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDomains", "yes")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "SendRelease", "no")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "ClientIdentifier", "mac")); + + assert_true(key_file_config_exists(key_file, "DHCPv6", "UseDNS", "no")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDomains", "yes")); + assert_true(key_file_config_exists(key_file, "DHCPv6", "SendRelease", "no")); + + assert_true(key_file_config_exists(key_file, "Address", "Address", "192.168.1.101")); + assert_true(key_file_config_exists(key_file, "Route", "Gateway", "192.168.1.2")); + + unlink("/etc/systemd/network/10-test99.network"); +} + +/* STATICv4 + AUTOv6 + STATIC-DNS */ +void test_static_ipv4_auto_ipv6_static_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + assert_true(system("nmctl set-ipv4 dev test99 use-dns no send-release no addr 192.168.1.101 gw 192.168.1.2 dns 192.168.1.10,192.168.1.20") >= 0); + assert_true(system("nmctl set-ipv6 dev test99 accept-ra yes use-dns no dns fe80::4,fe80::5") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "IPv6AcceptRA", "yes")); + assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "ipv6")); + assert_true(key_file_config_exists(key_file, "Network", "DNS", "fe80::4 fe80::5 192.168.1.10 192.168.1.20")); + + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDNS", "no")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "SendRelease", "no")); + + assert_true(key_file_config_exists(key_file, "DHCPv6", "UseDNS", "no")); + + assert_true(key_file_config_exists(key_file, "Address", "Address", "192.168.1.101")); + assert_true(key_file_config_exists(key_file, "Route", "Gateway", "192.168.1.2")); + + unlink("/etc/systemd/network/10-test99.network"); +} + +/* STATICv4 + STATICv6 + STATIC-DNS */ +void test_static_ipv4_static_ipv6_static_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + assert_true(system("nmctl set-ipv4 dev test99 use-dns no send-release no addr 192.168.1.101 gw 192.168.1.2 dns 192.168.1.10,192.168.1.20") >= 0); + assert_true(system("nmctl set-ipv6 dev test99 use-dns no accept-ra no addr fe80::10 gw fe80::1 dns fe80::4,fe80::5") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "IPv6AcceptRA", "no")); + assert_true(key_file_config_exists(key_file, "Network", "DNS", "fe80::4 fe80::5 192.168.1.10 192.168.1.20")); + + assert_true(key_file_config_exists(key_file, "DHCPv4", "UseDNS", "no")); + assert_true(key_file_config_exists(key_file, "DHCPv4", "SendRelease", "no")); + + assert_true(key_file_config_exists(key_file, "DHCPv6", "UseDNS", "no")); + + assert_true(key_file_config_exists(key_file, "Address", "Address", "192.168.1.101")); + assert_true(key_file_config_exists(key_file, "Route", "Gateway", "192.168.1.2")); + + assert_true(key_file_config_exists(key_file, "Address", "Address", "fe80::10")); + assert_true(key_file_config_exists(key_file, "Route", "Gateway", "fe80::1")); + + unlink("/etc/systemd/network/10-test99.network"); +} + +/* DHCPv6 + DHCP-DNS */ +void test_none_ipv4_dhcp_ipv6_dhcp_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + assert_true(system("nmctl set-ipv6 dev test99 dhcp yes send-release no use-domains yes") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "ipv6")); + assert_true(key_file_config_exists(key_file, "Network", "IPv6AcceptRA", "yes")); + assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "ipv6")); + + assert_true(key_file_config_exists(key_file, "DHCPv6", "UseDomains", "yes")); + assert_true(key_file_config_exists(key_file, "DHCPv6", "SendRelease", "no")); + + unlink("/etc/systemd/network/10-test99.network"); +} + +/* AUTOv6 + DHCP-DNS */ +void test_none_ipv4_auto_ipv6_dhcp_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + assert_true(system("nmctl set-ipv6 dev test99 dhcp yes accept-ra yes") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "DHCP", "ipv6")); + assert_true(key_file_config_exists(key_file, "Network", "IPv6AcceptRA", "yes")); + assert_true(key_file_config_exists(key_file, "Network", "LinkLocalAddressing", "ipv6")); + + unlink("/etc/systemd/network/10-test99.network"); +} + +/* STATICv6 + STATIC-DNS */ +void test_none_ipv4_static_ipv6_static_dns(void **state) { + _cleanup_(key_file_freep) KeyFile *key_file = NULL; + int r; + + assert_true(system("nmctl set-ipv6 dev test99 use-dns no accept-ra no addr fe80::10 gw fe80::1 dns fe80::4,fe80::5") >= 0); + + r = parse_key_file("/etc/systemd/network/10-test99.network", &key_file); + assert_true(r >= 0); + + display_key_file(key_file); + assert_true(key_file_config_exists(key_file, "Match", "Name", "test99")); + + assert_true(key_file_config_exists(key_file, "Network", "IPv6AcceptRA", "no")); + assert_true(key_file_config_exists(key_file, "Network", "DNS", "fe80::4 fe80::5")); + + assert_true(key_file_config_exists(key_file, "DHCPv6", "UseDNS", "no")); + + assert_true(key_file_config_exists(key_file, "Address", "Address", "fe80::10")); + assert_true(key_file_config_exists(key_file, "Route", "Gateway", "fe80::1")); + + unlink("/etc/systemd/network/10-test99.network"); +} diff --git a/tests/cmocka/set-network.h b/tests/cmocka/set-network.h index 7f6ade4f..d900b33b 100644 --- a/tests/cmocka/set-network.h +++ b/tests/cmocka/set-network.h @@ -50,3 +50,17 @@ void test_vami_set_dynamic_dhcpv4_and_dhcpv6(void **state); void test_vami_set_dynamic_ipv4_static_address_gw(void **state); void test_vami_set_static_ipv6_static_address_gw(void **state); void test_vami_set_static_ipv4_ipv6_static_address_gw(void **state); + +/* with set-ipv4 and set-ipv6 */ +void test_dhcp_ipv4_none_ipv6_dhcp_dns(void **state) ; +void test_dhcp_ipv4_none_ipv6_none_dns(void **state) ; +void test_dhcp_ipv4_dhcp_ipv6_dhcp_dns(void **state) ; +void test_dhcp_ipv4_auto_ipv6_dhcp_dns(void **state) ; +void test_dhcp_ipv4_static_ipv6_static_dns(void **state) ; +void test_static_ipv4_none_ipv6_static_dns(void **state) ; +void test_static_ipv4_dhcp_ipv6_static_dns(void **state) ; +void test_static_ipv4_auto_ipv6_static_dns(void **state) ; +void test_static_ipv4_static_ipv6_static_dns(void **state) ; +void test_none_ipv4_dhcp_ipv6_dhcp_dns(void **state) ; +void test_none_ipv4_auto_ipv6_dhcp_dns(void **state) ; +void test_none_ipv4_static_ipv6_static_dns(void **state) ;