From 237e4e05457b51511519f86bdab7766cc0509c74 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Mon, 1 Mar 2021 21:16:08 +0100 Subject: [PATCH] initrd: apply the MTU from bond= argument to the bond connection Currently the MTU specified in: bond=[::[:[:]]] gets applied to the bond ports. Instead it should be applied to the bond itself. Fixes: ecc074b2f8a6 ('initrd: add command line parser') https://bugzilla.redhat.com/show_bug.cgi?id=1932502 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/767 (cherry picked from commit 8df3ef5063cf0f8ee904f8fd39e9e64cc60836eb) (cherry picked from commit 43d16d2cd63a3443704ca7bb539ba5cb673ba183) --- src/initrd/nmi-cmdline-reader.c | 5 +++-- src/initrd/tests/test-cmdline-reader.c | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/initrd/nmi-cmdline-reader.c b/src/initrd/nmi-cmdline-reader.c index 1f3d3a4d0c..02e4142b83 100644 --- a/src/initrd/nmi-cmdline-reader.c +++ b/src/initrd/nmi-cmdline-reader.c @@ -732,6 +732,9 @@ reader_parse_master(Reader *reader, char *argument, const char *type_name, const mtu = get_word(&argument, ':'); } + if (mtu) + connection_set(connection, NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_MTU, mtu); + do { slave = get_word(&slaves, ','); if (slave == NULL) @@ -745,8 +748,6 @@ reader_parse_master(Reader *reader, char *argument, const char *type_name, const NM_SETTING_CONNECTION_MASTER, master, NULL); - if (mtu) - connection_set(connection, NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_MTU, mtu); } while (slaves && *slaves != '\0'); if (argument && *argument) diff --git a/src/initrd/tests/test-cmdline-reader.c b/src/initrd/tests/test-cmdline-reader.c index 6e9610c072..95acc91116 100644 --- a/src/initrd/tests/test-cmdline-reader.c +++ b/src/initrd/tests/test-cmdline-reader.c @@ -757,13 +757,14 @@ 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", + "bond=bong0:eth0,eth1:mode=balance-rr:9000", "nameserver=203.0.113.53"); NMConnection * connection; NMSettingConnection * s_con; NMSettingIPConfig * s_ip4; NMSettingIPConfig * s_ip6; NMSettingBond * s_bond; + NMSettingWired * s_wired; NMIPRoute * ip_route; const char * master_uuid; gs_free char * hostname = NULL; @@ -783,6 +784,10 @@ test_bond(void) master_uuid = nm_connection_get_uuid(connection); g_assert(master_uuid); + s_wired = nm_connection_get_setting_wired(connection); + g_assert(s_wired); + g_assert_cmpint(nm_setting_wired_get_mtu(s_wired), ==, 9000); + s_ip4 = nm_connection_get_setting_ip4_config(connection); g_assert(s_ip4); g_assert_cmpstr(nm_setting_ip_config_get_method(s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_AUTO);