diff --git a/src/nm-policy.c b/src/nm-policy.c index 81fce466b..4e079d7b5 100644 --- a/src/nm-policy.c +++ b/src/nm-policy.c @@ -1586,6 +1586,7 @@ activate_slave_connections (NMPolicy *self, NMDevice *device) guint i; NMActRequest *req; gboolean internal_activation = FALSE; + gs_free NMSettingsConnection **connections = NULL; master_device = nm_device_get_iface (device); g_assert (master_device); @@ -1609,28 +1610,34 @@ activate_slave_connections (NMPolicy *self, NMDevice *device) internal_activation = subject && nm_auth_subject_is_internal (subject); } - if (!internal_activation) { - gs_free NMSettingsConnection **connections = NULL; + connections = nm_settings_get_connections_sorted (priv->settings, NULL); + for (i = 0; connections[i]; i++) { + NMConnection *slave; + NMSettingConnection *s_slave_con; + const char *slave_master; - connections = nm_settings_get_connections_sorted (priv->settings, NULL); + slave = NM_CONNECTION (connections[i]); - for (i = 0; connections[i]; i++) { - NMConnection *slave; - NMSettingConnection *s_slave_con; - const char *slave_master; + s_slave_con = nm_connection_get_setting_connection (slave); + g_assert (s_slave_con); + slave_master = nm_setting_connection_get_master (s_slave_con); + if (!slave_master) + continue; - slave = NM_CONNECTION (connections[i]); + if ( nm_streq0 (slave_master, master_device) + || nm_streq0 (slave_master, master_uuid_applied) + || nm_streq0 (slave_master, master_uuid_settings)) { + NMSettingsConnection *settings = NM_SETTINGS_CONNECTION (slave); + NMSettingsAutoconnectBlockedReason reason; - s_slave_con = nm_connection_get_setting_connection (slave); - g_assert (s_slave_con); - slave_master = nm_setting_connection_get_master (s_slave_con); - if (!slave_master) - continue; + if (!internal_activation) + nm_settings_connection_reset_autoconnect_retries (settings); - if ( !g_strcmp0 (slave_master, master_device) - || !g_strcmp0 (slave_master, master_uuid_applied) - || !g_strcmp0 (slave_master, master_uuid_settings)) - nm_settings_connection_reset_autoconnect_retries (NM_SETTINGS_CONNECTION (slave)); + reason = nm_settings_connection_get_autoconnect_blocked_reason (settings); + if (reason == NM_SETTINGS_AUTO_CONNECT_BLOCKED_REASON_FAILED) { + reason = NM_SETTINGS_AUTO_CONNECT_BLOCKED_REASON_UNBLOCKED; + nm_settings_connection_set_autoconnect_blocked_reason (settings, reason); + } } }