initrd: set ipv6.method=auto when the autoconfiguration field is 'none'

The 7th field of:

 ip=<client-IP>:[<peer>]:<gateway-IP>:<netmask>:<client_hostname>:<interface>:{none|off|dhcp|on|any|dhcp6|auto6|ibft}:[:[<mtu>][:<macaddr>]]

specifies which kind of autoconfiguration to do. 'none' and 'off' mean
static addresses.

The old network module of dracut used to leave kernel IPv6
autoconfiguration enabled when IPv4 static addresses were
configured. With NM, this corresponds to enabling IPv6 auto method.

https://bugzilla.redhat.com/show_bug.cgi?id=1848943
(cherry picked from commit a39eb9ac14)
This commit is contained in:
Beniamino Galvani
2020-06-22 12:00:22 +02:00
parent 0e15a5e1be
commit 440a0b4078
2 changed files with 7 additions and 2 deletions

View File

@@ -464,7 +464,7 @@ reader_parse_ip (Reader *reader, const char *sysfs_dir, char *argument)
if (NM_IN_STRSET (kind, "none", "off")) { if (NM_IN_STRSET (kind, "none", "off")) {
if (nm_setting_ip_config_get_num_addresses (s_ip6) == 0) { if (nm_setting_ip_config_get_num_addresses (s_ip6) == 0) {
g_object_set (s_ip6, g_object_set (s_ip6,
NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_DISABLED, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO,
NULL); NULL);
} }
if (nm_setting_ip_config_get_num_addresses (s_ip4) == 0) { if (nm_setting_ip_config_get_num_addresses (s_ip4) == 0) {

View File

@@ -186,7 +186,7 @@ test_if_ip4_manual (void)
{ {
gs_unref_hashtable GHashTable *connections = NULL; gs_unref_hashtable GHashTable *connections = NULL;
const char *const*ARGV = NM_MAKE_STRV ("ip=192.0.2.2::192.0.2.1:255.255.255.0:" const char *const*ARGV = NM_MAKE_STRV ("ip=192.0.2.2::192.0.2.1:255.255.255.0:"
"hostname0.example.com:eth3::192.0.2.53", "hostname0.example.com:eth3:none:192.0.2.53",
"ip=203.0.113.2::203.0.113.1:26:" "ip=203.0.113.2::203.0.113.1:26:"
"hostname1.example.com:eth4"); "hostname1.example.com:eth4");
NMConnection *connection; NMConnection *connection;
@@ -220,6 +220,11 @@ test_if_ip4_manual (void)
g_assert_cmpstr (nm_setting_ip_config_get_gateway (s_ip4), ==, "192.0.2.1"); g_assert_cmpstr (nm_setting_ip_config_get_gateway (s_ip4), ==, "192.0.2.1");
g_assert_cmpstr (nm_setting_ip_config_get_dhcp_hostname (s_ip4), ==, "hostname0.example.com"); g_assert_cmpstr (nm_setting_ip_config_get_dhcp_hostname (s_ip4), ==, "hostname0.example.com");
s_ip6 = nm_connection_get_setting_ip6_config (connection);
g_assert (s_ip6);
g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_AUTO);
g_assert (nm_setting_ip_config_get_may_fail (s_ip6));
connection = g_hash_table_lookup (connections, "eth4"); connection = g_hash_table_lookup (connections, "eth4");
g_assert (connection); g_assert (connection);
nmtst_assert_connection_verifies_without_normalization (connection); nmtst_assert_connection_verifies_without_normalization (connection);