summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2020-08-05 13:26:34 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2020-08-06 16:52:35 +0200
commit0a006c04121a13221de585d3f778c5341f36b504 (patch)
treeb1071bad42ea3eb3f822cf012fa97efe77025501 /src
parentac6f21cae442bb35b08337f14a97d6ae3f71b52a (diff)
initrd: disable STP on bridges
NM enables by default STP on bridges, which causes a forwarding delay of 15 seconds on boot. Disable it.
Diffstat (limited to 'src')
-rw-r--r--src/initrd/nmi-cmdline-reader.c12
-rw-r--r--src/initrd/tests/test-cmdline-reader.c1
2 files changed, 10 insertions, 3 deletions
diff --git a/src/initrd/nmi-cmdline-reader.c b/src/initrd/nmi-cmdline-reader.c
index 17f9e1dfd2..8ba6dbb827 100644
--- a/src/initrd/nmi-cmdline-reader.c
+++ b/src/initrd/nmi-cmdline-reader.c
@@ -584,7 +584,6 @@ reader_parse_master (Reader *reader,
{
NMConnection *connection;
NMSettingConnection *s_con;
- NMSettingBond *s_bond;
gs_free char *master_to_free = NULL;
const char *master;
char *slaves;
@@ -603,8 +602,15 @@ reader_parse_master (Reader *reader,
s_con = nm_connection_get_setting_connection (connection);
master = nm_setting_connection_get_uuid (s_con);
- if (nm_streq (type_name, NM_SETTING_BOND_SETTING_NAME)) {
- s_bond = (NMSettingBond *)nm_connection_get_setting_by_name (connection, type_name);
+ if (nm_streq (type_name, NM_SETTING_BRIDGE_SETTING_NAME)) {
+ NMSettingBridge *s_bridge = nm_connection_get_setting_bridge (connection);
+
+ /* Avoid the forwarding delay */
+ g_object_set (s_bridge,
+ NM_SETTING_BRIDGE_STP, FALSE,
+ NULL);
+ } else if (nm_streq (type_name, NM_SETTING_BOND_SETTING_NAME)) {
+ NMSettingBond *s_bond = nm_connection_get_setting_bond (connection);
opts = get_word (&argument, ':');
while (opts && *opts) {
diff --git a/src/initrd/tests/test-cmdline-reader.c b/src/initrd/tests/test-cmdline-reader.c
index 04594c48be..074654d347 100644
--- a/src/initrd/tests/test-cmdline-reader.c
+++ b/src/initrd/tests/test-cmdline-reader.c
@@ -774,6 +774,7 @@ test_bridge (void)
s_bridge = nm_connection_get_setting_bridge (connection);
g_assert (s_bridge);
+ g_assert_cmpint (nm_setting_bridge_get_stp (s_bridge), ==, FALSE);
connection = g_hash_table_lookup (connections, "eth0");
g_assert (connection);