From 361a199a0639dd8a82c61912df301028efca5f33 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 24 Oct 2017 09:10:49 +0200 Subject: [PATCH] device: move resetting autoconnect retries from subtype to NMDevice --- src/devices/nm-device-ethernet.c | 20 ++------------------ src/devices/nm-device-macsec.c | 17 +---------------- src/devices/nm-device.c | 23 +++++++++++++++++++++++ src/devices/nm-device.h | 1 + src/settings/nm-settings-connection.c | 5 ++++- 5 files changed, 31 insertions(+), 35 deletions(-) diff --git a/src/devices/nm-device-ethernet.c b/src/devices/nm-device-ethernet.c index ef7530212d..8b9ae1d8ba 100644 --- a/src/devices/nm-device-ethernet.c +++ b/src/devices/nm-device-ethernet.c @@ -254,22 +254,6 @@ _update_s390_subchannels (NMDeviceEthernet *self) _notify (self, PROP_S390_SUBCHANNELS); } -static void -reset_8021x_autoconnect_retries (NMDevice *device) -{ - NMActRequest *req; - NMSettingsConnection *connection; - - req = nm_device_get_act_request (device); - if ( req - && nm_device_get_applied_setting (device, NM_TYPE_SETTING_802_1X)) { - connection = nm_act_request_get_settings_connection (req); - g_return_if_fail (connection); - /* Reset autoconnect retries on success, failure, or when deactivating */ - nm_settings_connection_autoconnect_retries_reset (connection); - } -} - static void device_state_changed (NMDevice *device, NMDeviceState new_state, @@ -283,7 +267,7 @@ device_state_changed (NMDevice *device, NM_DEVICE_STATE_ACTIVATED, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_DISCONNECTED)) - reset_8021x_autoconnect_retries (device); + nm_device_autoconnect_retries_reset (device, NM_TYPE_SETTING_802_1X); } static void @@ -1356,7 +1340,7 @@ deactivate (NMDevice *device) GError *error = NULL; /* Clear wired secrets tries when deactivating */ - reset_8021x_autoconnect_retries (device); + nm_device_autoconnect_retries_reset (device, NM_TYPE_SETTING_802_1X); nm_clear_g_source (&priv->pppoe_wait_id); diff --git a/src/devices/nm-device-macsec.c b/src/devices/nm-device-macsec.c index cda175e175..e5df99bd39 100644 --- a/src/devices/nm-device-macsec.c +++ b/src/devices/nm-device-macsec.c @@ -737,21 +737,6 @@ link_changed (NMDevice *device, } -static void -reset_autoconnect_retries (NMDevice *device) -{ - NMActRequest *req; - NMSettingsConnection *connection; - - req = nm_device_get_act_request (device); - if (req) { - connection = nm_act_request_get_settings_connection (req); - g_return_if_fail (connection); - /* Reset autoconnect retries on success, failure, or when deactivating */ - nm_settings_connection_autoconnect_retries_reset (connection); - } -} - static void device_state_changed (NMDevice *device, NMDeviceState new_state, @@ -764,7 +749,7 @@ device_state_changed (NMDevice *device, if ( new_state == NM_DEVICE_STATE_ACTIVATED || new_state == NM_DEVICE_STATE_FAILED || new_state == NM_DEVICE_STATE_DISCONNECTED) - reset_autoconnect_retries (device); + nm_device_autoconnect_retries_reset (device, G_TYPE_NONE); } /******************************************************************/ diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index fc6d216690..a6ad278e6d 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -4213,6 +4213,29 @@ nm_device_set_enabled (NMDevice *self, gboolean enabled) NM_DEVICE_GET_CLASS (self)->set_enabled (self, enabled); } +void +nm_device_autoconnect_retries_reset (NMDevice *device, GType required_applied_setting) +{ + NMActRequest *req; + NMSettingsConnection *connection; + + req = nm_device_get_act_request (device); + if (!req) + return; + + if ( !NM_IN_SET (required_applied_setting, G_TYPE_INVALID, G_TYPE_NONE) + && !nm_device_get_applied_setting (device, required_applied_setting)) { + /* if the setting doesn't have the required setting in the applied + * connection, we do nothing. */ + return; + } + + connection = nm_act_request_get_settings_connection (req); + + /* Reset autoconnect retries on success, failure, or when deactivating */ + nm_settings_connection_autoconnect_retries_reset (connection); +} + /** * nm_device_get_autoconnect: * @self: the #NMDevice diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h index 921db8aa5e..aafa31d3af 100644 --- a/src/devices/nm-device.h +++ b/src/devices/nm-device.h @@ -663,6 +663,7 @@ gboolean nm_device_unrealize (NMDevice *device, void nm_device_update_from_platform_link (NMDevice *self, const NMPlatformLink *plink); +void nm_device_autoconnect_retries_reset (NMDevice *device, GType required_applied_setting); gboolean nm_device_get_autoconnect (NMDevice *device); void nm_device_set_autoconnect_intern (NMDevice *device, gboolean autoconnect); void nm_device_emit_recheck_auto_activate (NMDevice *device); diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c index 6f66394c12..a7b28792b2 100644 --- a/src/settings/nm-settings-connection.c +++ b/src/settings/nm-settings-connection.c @@ -2576,10 +2576,13 @@ void nm_settings_connection_autoconnect_retries_set (NMSettingsConnection *self, int retries) { - NMSettingsConnectionPrivate *priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); + NMSettingsConnectionPrivate *priv; + g_return_if_fail (NM_IS_SETTINGS_CONNECTION (self)); nm_assert (retries == AUTOCONNECT_RETRIES_UNSET || retries >= 0); + priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); + if (priv->autoconnect_retries != retries) { _LOGT ("autoconnect-retries: set %d", retries); priv->autoconnect_retries = retries;