summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-10-04 13:57:15 +0200
committerThomas Haller <thaller@redhat.com>2017-10-04 13:57:16 +0200
commitcfb14ce17e77916d8998d444a05cdea726723240 (patch)
tree8783772d1122e3fccfa5d4c9db5d7b149a3eb5e0
parentf67269b49d22278e0a70dad1fb52c5b015c12cf6 (diff)
downloadNetworkManager-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.c2
-rw-r--r--man/NetworkManager.conf.xml5
-rw-r--r--src/devices/nm-device-ethernet.c1
-rw-r--r--src/devices/nm-device-macsec.c1
-rw-r--r--src/nm-policy.c15
-rw-r--r--src/settings/nm-settings-connection.c7
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;