initrd: apply the MTU from bond= argument to the bond connection

Currently the MTU specified in:

 bond=<bondname>[:<bondslaves>:[:<options>[:<mtu>]]]

gets applied to the bond ports. Instead it should be applied to the
bond itself.

Fixes: ecc074b2f8 ('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 8df3ef5063)
(cherry picked from commit 43d16d2cd6)
(cherry picked from commit 237e4e0545)
This commit is contained in:
Beniamino Galvani 2021-03-01 21:16:08 +01:00 committed by Thomas Haller
parent 6199287b47
commit 0858241776
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
2 changed files with 9 additions and 3 deletions

View file

@ -694,6 +694,9 @@ reader_parse_master (Reader *reader,
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)
@ -705,8 +708,6 @@ reader_parse_master (Reader *reader,
NM_SETTING_CONNECTION_SLAVE_TYPE, type_name,
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)

View file

@ -704,13 +704,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;
@ -728,6 +729,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);