diff options
| author | Michael Biebl <biebl@debian.org> | 2025-07-15 08:31:19 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2025-07-15 08:31:19 +0200 |
| commit | 582eb4472a0f3375042afb9026cbeb50e058a27d (patch) | |
| tree | 65f78da0c024c43e669c6a9c23402e59b28a01ef /src/nm-initrd-generator/tests | |
| parent | 625e8ce60e826bde943487b8238884a9232e4562 (diff) | |
New upstream version 1.52.1 upstream/1.52.1
Diffstat (limited to 'src/nm-initrd-generator/tests')
| -rw-r--r-- | src/nm-initrd-generator/tests/test-cmdline-reader.c | 126 |
1 files changed, 120 insertions, 6 deletions
diff --git a/src/nm-initrd-generator/tests/test-cmdline-reader.c b/src/nm-initrd-generator/tests/test-cmdline-reader.c index a0100764..cd7b1069 100644 --- a/src/nm-initrd-generator/tests/test-cmdline-reader.c +++ b/src/nm-initrd-generator/tests/test-cmdline-reader.c @@ -597,7 +597,7 @@ static void test_if_ip6_manual(void) { gs_unref_hashtable GHashTable *connections = NULL; - const char *const *ARGV = NM_MAKE_STRV("ip=[2001:0db8::02]/64::[2001:0db8::01]::" + const char *const *ARGV = NM_MAKE_STRV("ip=[2001:0db8::02]/56::[2001:0db8::01]::" "hostname0.example.com:eth4::[2001:0db8::53]"); NMConnection *connection; NMSettingIPConfig *s_ip4; @@ -633,7 +633,7 @@ test_if_ip6_manual(void) ip_addr = nm_setting_ip_config_get_address(s_ip6, 0); g_assert(ip_addr); g_assert_cmpstr(nm_ip_address_get_address(ip_addr), ==, "2001:db8::2"); - g_assert_cmpint(nm_ip_address_get_prefix(ip_addr), ==, 64); + g_assert_cmpint(nm_ip_address_get_prefix(ip_addr), ==, 56); g_assert_cmpstr(nm_setting_ip_config_get_gateway(s_ip6), ==, "2001:db8::1"); g_assert_cmpstr(nm_setting_ip_config_get_dhcp_hostname(s_ip6), ==, NULL); } @@ -975,8 +975,8 @@ static void test_bond(void) { gs_unref_hashtable GHashTable *connections = NULL; - const char *const *ARGV = NM_MAKE_STRV("rd.route=192.0.2.53::bong0", - "bond=bong0:eth0,eth1:mode=balance-rr:9000", + const char *const *ARGV = NM_MAKE_STRV("rd.route=192.0.2.53::bond0", + "bond=bond0:eth0,eth1:mode=balance-rr:9000", "nameserver=203.0.113.53"); NMConnection *connection; NMSettingConnection *s_con; @@ -990,12 +990,12 @@ test_bond(void) connections = _parse_cons(ARGV); g_assert_cmpint(g_hash_table_size(connections), ==, 3); - connection = g_hash_table_lookup(connections, "bong0"); + connection = g_hash_table_lookup(connections, "bond0"); nmtst_assert_connection_verifies_without_normalization(connection); g_assert_cmpstr(nm_connection_get_connection_type(connection), ==, NM_SETTING_BOND_SETTING_NAME); - g_assert_cmpstr(nm_connection_get_id(connection), ==, "bong0"); + g_assert_cmpstr(nm_connection_get_id(connection), ==, "bond0"); controller_uuid = nm_connection_get_uuid(connection); g_assert(controller_uuid); @@ -1163,6 +1163,118 @@ test_bond_ip(void) } static void +test_bond_ip6_option(void) +{ + /* Test that IPv6 addresses within [] are parsed fine in different positions */ + + gs_unref_hashtable GHashTable *connections = NULL; + const char *const *ARGV = + NM_MAKE_STRV("bond=bond0:eth0,eth1:arp_interval=100,ns_ip6_target=[fc08::1]", + "bond=bond1:eth2,eth3:arp_interval=100,ns_ip6_target=[fc08::1]:9000", + "bond=bond2:eth4,eth5:ns_ip6_target=[fc08::1],arp_interval=100"); + NMConnection *connection; + NMSettingBond *s_bond; + + connections = _parse_cons(ARGV); + g_assert_cmpint(g_hash_table_size(connections), ==, 9); + + connection = g_hash_table_lookup(connections, "bond0"); + nmtst_assert_connection_verifies_without_normalization(connection); + s_bond = nm_connection_get_setting_bond(connection); + g_assert(s_bond); + g_assert_cmpint(nm_setting_bond_get_num_options(s_bond), ==, 3); + g_assert_cmpstr(nm_setting_bond_get_option_by_name(s_bond, "ns_ip6_target"), ==, "fc08::1"); + + connection = g_hash_table_lookup(connections, "bond1"); + nmtst_assert_connection_verifies_without_normalization(connection); + s_bond = nm_connection_get_setting_bond(connection); + g_assert(s_bond); + g_assert_cmpint(nm_setting_bond_get_num_options(s_bond), ==, 3); + g_assert_cmpstr(nm_setting_bond_get_option_by_name(s_bond, "ns_ip6_target"), ==, "fc08::1"); + + connection = g_hash_table_lookup(connections, "bond2"); + nmtst_assert_connection_verifies_without_normalization(connection); + s_bond = nm_connection_get_setting_bond(connection); + g_assert(s_bond); + g_assert_cmpint(nm_setting_bond_get_num_options(s_bond), ==, 3); + g_assert_cmpstr(nm_setting_bond_get_option_by_name(s_bond, "ns_ip6_target"), ==, "fc08::1"); +} + +static void +test_bond_multi_values_option(void) +{ + /* Test that semicolon-separated multi-valued options are parsed fine in different positions */ + + gs_unref_hashtable GHashTable *connections = NULL; + const char *const *ARGV = + NM_MAKE_STRV("bond=bond0:eth0,eth1:arp_interval=100,ns_ip6_target=[fc08::1];[fc08::2]", + "bond=bond1:eth2,eth3:arp_interval=100,ns_ip6_target=[fc08::1];[fc08::2]:9000", + "bond=bond2:eth4,eth5:ns_ip6_target=[fc08::1];[fc08::2],arp_interval=100", + "bond=bond3:eth6,eth7:arp_interval=100,arp_ip_target=10.0.0.1;10.0.0.2", + "bond=bond4:eth8,eth9:arp_interval=100,arp_ip_target=10.0.0.1;10.0.0.2:9000", + "bond=bond5:eth10,eth11:arp_ip_target=10.0.0.1;10.0.0.2,arp_interval=100"); + NMConnection *connection; + NMSettingBond *s_bond; + + connections = _parse_cons(ARGV); + g_assert_cmpint(g_hash_table_size(connections), ==, 18); + + connection = g_hash_table_lookup(connections, "bond0"); + nmtst_assert_connection_verifies_without_normalization(connection); + s_bond = nm_connection_get_setting_bond(connection); + g_assert(s_bond); + g_assert_cmpint(nm_setting_bond_get_num_options(s_bond), ==, 3); + g_assert_cmpstr(nm_setting_bond_get_option_by_name(s_bond, "ns_ip6_target"), + ==, + "fc08::1,fc08::2"); + + connection = g_hash_table_lookup(connections, "bond1"); + nmtst_assert_connection_verifies_without_normalization(connection); + s_bond = nm_connection_get_setting_bond(connection); + g_assert(s_bond); + g_assert_cmpint(nm_setting_bond_get_num_options(s_bond), ==, 3); + g_assert_cmpstr(nm_setting_bond_get_option_by_name(s_bond, "ns_ip6_target"), + ==, + "fc08::1,fc08::2"); + + connection = g_hash_table_lookup(connections, "bond2"); + nmtst_assert_connection_verifies_without_normalization(connection); + s_bond = nm_connection_get_setting_bond(connection); + g_assert(s_bond); + g_assert_cmpint(nm_setting_bond_get_num_options(s_bond), ==, 3); + g_assert_cmpstr(nm_setting_bond_get_option_by_name(s_bond, "ns_ip6_target"), + ==, + "fc08::1,fc08::2"); + + connection = g_hash_table_lookup(connections, "bond3"); + nmtst_assert_connection_verifies_without_normalization(connection); + s_bond = nm_connection_get_setting_bond(connection); + g_assert(s_bond); + g_assert_cmpint(nm_setting_bond_get_num_options(s_bond), ==, 3); + g_assert_cmpstr(nm_setting_bond_get_option_by_name(s_bond, "arp_ip_target"), + ==, + "10.0.0.1,10.0.0.2"); + + connection = g_hash_table_lookup(connections, "bond4"); + nmtst_assert_connection_verifies_without_normalization(connection); + s_bond = nm_connection_get_setting_bond(connection); + g_assert(s_bond); + g_assert_cmpint(nm_setting_bond_get_num_options(s_bond), ==, 3); + g_assert_cmpstr(nm_setting_bond_get_option_by_name(s_bond, "arp_ip_target"), + ==, + "10.0.0.1,10.0.0.2"); + + connection = g_hash_table_lookup(connections, "bond5"); + nmtst_assert_connection_verifies_without_normalization(connection); + s_bond = nm_connection_get_setting_bond(connection); + g_assert(s_bond); + g_assert_cmpint(nm_setting_bond_get_num_options(s_bond), ==, 3); + g_assert_cmpstr(nm_setting_bond_get_option_by_name(s_bond, "arp_ip_target"), + ==, + "10.0.0.1,10.0.0.2"); +} + +static void test_bond_default(void) { gs_unref_hashtable GHashTable *connections = NULL; @@ -2701,6 +2813,8 @@ main(int argc, char **argv) g_test_add_func("/initrd/cmdline/bootdev", test_bootdev); g_test_add_func("/initrd/cmdline/bond", test_bond); g_test_add_func("/initrd/cmdline/bond/ip", test_bond_ip); + g_test_add_func("/initrd/cmdline/bond/ip6-option", test_bond_ip6_option); + g_test_add_func("/initrd/cmdline/bond/multi-values-option", test_bond_multi_values_option); g_test_add_func("/initrd/cmdline/bond/default", test_bond_default); g_test_add_func("/initrd/cmdline/team", test_team); g_test_add_func("/initrd/cmdline/vlan", test_vlan); |