diff options
author | Thomas Haller <thaller@redhat.com> | 2017-10-04 13:57:15 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-10-04 13:57:16 +0200 |
commit | cfb14ce17e77916d8998d444a05cdea726723240 (patch) | |
tree | 8783772d1122e3fccfa5d4c9db5d7b149a3eb5e0 | |
parent | f67269b49d22278e0a70dad1fb52c5b015c12cf6 (diff) | |
download | NetworkManager-cfb14ce17e77916d8998d444a05cdea726723240.tar.gz |
core: cleanup autoconnect retry handling
- clearify in the manual page that setting retry to 1 means to try
once, without retry.
- log the initially set retry value in nm_settings_connection_get_autoconnect_retries().
- use nm_settings_connection_get_autoconnect_retries() in
nm_settings_connection_can_autoconnect().
-rw-r--r-- | libnm-core/nm-setting-connection.c | 2 | ||||
-rw-r--r-- | man/NetworkManager.conf.xml | 5 | ||||
-rw-r--r-- | src/devices/nm-device-ethernet.c | 1 | ||||
-rw-r--r-- | src/devices/nm-device-macsec.c | 1 | ||||
-rw-r--r-- | src/nm-policy.c | 15 | ||||
-rw-r--r-- | src/settings/nm-settings-connection.c | 7 |
6 files changed, 19 insertions, 12 deletions
diff --git a/libnm-core/nm-setting-connection.c b/libnm-core/nm-setting-connection.c index 01fc4ecfcb..728367c9b2 100644 --- a/libnm-core/nm-setting-connection.c +++ b/libnm-core/nm-setting-connection.c @@ -1647,7 +1647,7 @@ nm_setting_connection_class_init (NMSettingConnectionClass *setting_class) * * The number of times a connection should be tried when autoactivating before * giving up. Zero means forever, -1 means the global default (4 times if not - * overridden). + * overridden). Setting this to 1 means to try activation once and never retry. */ /* ---ifcfg-rh--- * property: autoconnect-retries diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml index 248d6fb8d2..94465a019f 100644 --- a/man/NetworkManager.conf.xml +++ b/man/NetworkManager.conf.xml @@ -406,8 +406,9 @@ no-auto-default=* value applies only to connections that can auto-connect and have a <literal>connection.autoconnect-retries</literal> property - set to -1. If not specified, connections will be retried 4 - times. + set to -1. If not specified, connections will be tried 4 + times. Setting this value to 1 means to try activation once, + without retry. </para> </listitem> </varlistentry> diff --git a/src/devices/nm-device-ethernet.c b/src/devices/nm-device-ethernet.c index eaa6a1f85d..cc46a65837 100644 --- a/src/devices/nm-device-ethernet.c +++ b/src/devices/nm-device-ethernet.c @@ -691,7 +691,6 @@ handle_auth_or_fail (NMDeviceEthernet *self, tries_left = nm_settings_connection_get_autoconnect_retries (settings_connection); if (tries_left == 0) return NM_ACT_STAGE_RETURN_FAILURE; - if (tries_left > 0) nm_settings_connection_set_autoconnect_retries (settings_connection, tries_left - 1); diff --git a/src/devices/nm-device-macsec.c b/src/devices/nm-device-macsec.c index a117b8e216..5b573d327b 100644 --- a/src/devices/nm-device-macsec.c +++ b/src/devices/nm-device-macsec.c @@ -488,7 +488,6 @@ handle_auth_or_fail (NMDeviceMacsec *self, tries_left = nm_settings_connection_get_autoconnect_retries (settings_connection); if (tries_left == 0) return NM_ACT_STAGE_RETURN_FAILURE; - if (tries_left > 0) nm_settings_connection_set_autoconnect_retries (settings_connection, tries_left - 1); diff --git a/src/nm-policy.c b/src/nm-policy.c index ccec244c45..dbe1e4d11f 100644 --- a/src/nm-policy.c +++ b/src/nm-policy.c @@ -1742,18 +1742,23 @@ device_state_changed (NMDevice *device, if ( connection && old_state >= NM_DEVICE_STATE_PREPARE && old_state <= NM_DEVICE_STATE_ACTIVATED) { - int tries = nm_settings_connection_get_autoconnect_retries (connection); + int tries; + tries = nm_settings_connection_get_autoconnect_retries (connection); if (nm_device_state_reason_check (reason) == NM_DEVICE_STATE_REASON_NO_SECRETS) { _LOGD (LOGD_DEVICE, "connection '%s' now blocked from autoconnect due to no secrets", nm_settings_connection_get_id (connection)); nm_settings_connection_set_autoconnect_blocked_reason (connection, NM_SETTINGS_AUTO_CONNECT_BLOCKED_REASON_NO_SECRETS); } else if (tries != 0) { - _LOGD (LOGD_DEVICE, "connection '%s' failed to autoconnect; %d tries left", - nm_settings_connection_get_id (connection), tries); - if (tries > 0) - nm_settings_connection_set_autoconnect_retries (connection, tries - 1); + if (tries > 0) { + _LOGD (LOGD_DEVICE, "connection '%s' failed to autoconnect; %d tries left", + nm_settings_connection_get_id (connection), tries); + nm_settings_connection_set_autoconnect_retries (connection, --tries); + } else { + _LOGD (LOGD_DEVICE, "connection '%s' failed to autoconnect; infinite tries left", + nm_settings_connection_get_id (connection)); + } } if (nm_settings_connection_get_autoconnect_retries (connection) == 0) { diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c index 9d32bb886b..3ac42b0172 100644 --- a/src/settings/nm-settings-connection.c +++ b/src/settings/nm-settings-connection.c @@ -2550,7 +2550,7 @@ nm_settings_connection_get_autoconnect_retries (NMSettingsConnection *self) { NMSettingsConnectionPrivate *priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); - if (priv->autoconnect_retries == AUTOCONNECT_RETRIES_UNSET) { + if (G_UNLIKELY (priv->autoconnect_retries == AUTOCONNECT_RETRIES_UNSET)) { NMSettingConnection *s_con; int retries = -1; const char *value; @@ -2575,6 +2575,7 @@ nm_settings_connection_get_autoconnect_retries (NMSettingsConnection *self) if (retries == 0) retries = AUTOCONNECT_RETRIES_FOREVER; + _LOGT ("autoconnect-retries: init %d", retries); priv->autoconnect_retries = retries; } @@ -2587,6 +2588,8 @@ nm_settings_connection_set_autoconnect_retries (NMSettingsConnection *self, { NMSettingsConnectionPrivate *priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); + nm_assert (retries == AUTOCONNECT_RETRIES_UNSET || retries >= 0); + if (priv->autoconnect_retries != retries) { _LOGT ("autoconnect-retries: set %d", retries); priv->autoconnect_retries = retries; @@ -2635,7 +2638,7 @@ nm_settings_connection_can_autoconnect (NMSettingsConnection *self) const char *permission; if ( !priv->visible - || priv->autoconnect_retries == 0 + || nm_settings_connection_get_autoconnect_retries (self) == 0 || priv->autoconnect_blocked_reason != NM_SETTINGS_AUTO_CONNECT_BLOCKED_REASON_NONE) return FALSE; |