diff --git a/man/nm-initrd-generator.xml b/man/nm-initrd-generator.xml index c3594a4e2a..66d9b3ce05 100644 --- a/man/nm-initrd-generator.xml +++ b/man/nm-initrd-generator.xml @@ -132,6 +132,7 @@ + diff --git a/src/initrd/nmi-cmdline-reader.c b/src/initrd/nmi-cmdline-reader.c index 9cac8661a1..2f6afefcb7 100644 --- a/src/initrd/nmi-cmdline-reader.c +++ b/src/initrd/nmi-cmdline-reader.c @@ -27,6 +27,7 @@ typedef struct { /* Parameters to be set for all connections */ gboolean ignore_auto_dns; + int dhcp_timeout; } Reader; static Reader * @@ -93,6 +94,7 @@ reader_create_connection (Reader *reader, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NM_SETTING_IP_CONFIG_MAY_FAIL, TRUE, NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, reader->ignore_auto_dns, + NM_SETTING_IP_CONFIG_DHCP_TIMEOUT, reader->dhcp_timeout, NULL); setting = nm_setting_ip6_config_new (); @@ -102,6 +104,7 @@ reader_create_connection (Reader *reader, NM_SETTING_IP_CONFIG_MAY_FAIL, TRUE, NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE, (int) NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64, NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, reader->ignore_auto_dns, + NM_SETTING_IP_CONFIG_DHCP_TIMEOUT, reader->dhcp_timeout, NULL); setting = nm_setting_connection_new (); @@ -898,6 +901,10 @@ nmi_cmdline_reader_parse (const char *sysfs_dir, const char *const*argv, char ** net_ifnames = strcmp (argument, "0") != 0; else if (strcmp (tag, "rd.peerdns") == 0) reader->ignore_auto_dns = !_nm_utils_ascii_str_to_bool (argument, TRUE); + else if (strcmp (tag, "rd.net.timeout.dhcp") == 0) { + reader->dhcp_timeout = _nm_utils_ascii_str_to_int64 (argument, + 10, 0, G_MAXINT32, 0); + } } for (i = 0; argv[i]; i++) { diff --git a/src/initrd/tests/test-cmdline-reader.c b/src/initrd/tests/test-cmdline-reader.c index 65f279a92f..4c972e7384 100644 --- a/src/initrd/tests/test-cmdline-reader.c +++ b/src/initrd/tests/test-cmdline-reader.c @@ -623,7 +623,9 @@ static void test_bridge (void) { gs_unref_hashtable GHashTable *connections = NULL; - const char *const*ARGV = NM_MAKE_STRV ("bridge=bridge0:eth0,eth1", "rd.route=192.0.2.53::bridge0"); + const char *const*ARGV = NM_MAKE_STRV ("bridge=bridge0:eth0,eth1", + "rd.route=192.0.2.53::bridge0", + "rd.net.timeout.dhcp=10"); NMConnection *connection; NMSettingConnection *s_con; NMSettingIPConfig *s_ip4; @@ -653,6 +655,7 @@ test_bridge (void) g_assert_cmpint (nm_setting_ip_config_get_num_dns (s_ip4), ==, 0); g_assert (!nm_setting_ip_config_get_gateway (s_ip4)); g_assert_cmpint (nm_setting_ip_config_get_num_routes (s_ip4), ==, 1); + g_assert_cmpint (nm_setting_ip_config_get_dhcp_timeout(s_ip4), ==, 10); ip_route = nm_setting_ip_config_get_route (s_ip4, 0); g_assert_cmpstr (nm_ip_route_get_dest (ip_route), ==, "192.0.2.53"); g_assert_cmpint (nm_ip_route_get_family (ip_route), ==, AF_INET); @@ -667,6 +670,8 @@ test_bridge (void) g_assert_cmpint (nm_setting_ip_config_get_num_dns (s_ip6), ==, 0); g_assert (!nm_setting_ip_config_get_gateway (s_ip6)); g_assert_cmpint (nm_setting_ip_config_get_num_routes (s_ip6), ==, 0); + g_assert_cmpint (nm_setting_ip_config_get_dhcp_timeout(s_ip6), ==, 10); + s_bridge = nm_connection_get_setting_bridge (connection); g_assert (s_bridge);