summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Zaborowski <andrew.zaborowski@intel.com>2021-04-03 17:32:06 +0200
committerThomas Haller <thaller@redhat.com>2021-04-19 18:11:10 +0200
commitee583adecfe1b7afc5546cfa2867f32e6bc17194 (patch)
tree06e5aba437d879de8988729cede981fd917f25f2
parent195c853a8026fbc82d07a9087eeafd4d0ea2438e (diff)
downloadNetworkManager-ee583adecfe1b7afc5546cfa2867f32e6bc17194.tar.gz
settings: add NM_SETTINGS_CONNECTION_UPDATE_REASON_UPDATE_NON_SECRET flag
Along with NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_SYSTEM_SECRETS and NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_AGENT_SECRETS, which can be used in the NMSettingConnection's "updated" handlers to track secrets updates, add NM_SETTINGS_CONNECTION_UPDATE_REASON_UPDATE_NON_SECRET so that the handlers can tell when something other than secrets has been updated in the connection. It can also potentially be used in _connection_changed_update in src/core/settings/nm-settings.c to stop emitting the NetworkManager.Settings.Connection.Updated() dbus signal if only secrets are being updated (on agent queries etc.) if it is deemed to be correct.
-rw-r--r--src/core/devices/nm-device.c2
-rw-r--r--src/core/nm-checkpoint.c18
-rw-r--r--src/core/nm-manager.c19
-rw-r--r--src/core/settings/nm-settings-connection.c1
-rw-r--r--src/core/settings/nm-settings-connection.h3
-rw-r--r--src/core/settings/nm-settings.c9
6 files changed, 31 insertions, 21 deletions
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index 5b2903d809..0207a048c0 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -13633,7 +13633,7 @@ nm_device_set_ip_config(NMDevice * self,
NM_SETTINGS_CONNECTION_PERSIST_MODE_IN_MEMORY,
NM_SETTINGS_CONNECTION_INT_FLAGS_NONE,
NM_SETTINGS_CONNECTION_INT_FLAGS_NONE,
- NM_SETTINGS_CONNECTION_UPDATE_REASON_NONE,
+ NM_SETTINGS_CONNECTION_UPDATE_REASON_UPDATE_NON_SECRET,
"update-external",
NULL);
}
diff --git a/src/core/nm-checkpoint.c b/src/core/nm-checkpoint.c
index 3e22239608..76210abc0e 100644
--- a/src/core/nm-checkpoint.c
+++ b/src/core/nm-checkpoint.c
@@ -229,14 +229,16 @@ restore_and_activate_connection(NMCheckpoint *self, DeviceCheckpoint *dev_checkp
if (need_update) {
_LOGD("rollback: updating connection %s", nm_settings_connection_get_uuid(connection));
persist_mode = NM_SETTINGS_CONNECTION_PERSIST_MODE_KEEP;
- nm_settings_connection_update(connection,
- dev_checkpoint->settings_connection,
- persist_mode,
- sett_flags,
- sett_mask,
- NM_SETTINGS_CONNECTION_UPDATE_REASON_NONE,
- "checkpoint-rollback",
- NULL);
+ nm_settings_connection_update(
+ connection,
+ dev_checkpoint->settings_connection,
+ persist_mode,
+ sett_flags,
+ sett_mask,
+ NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_SYSTEM_SECRETS
+ | NM_SETTINGS_CONNECTION_UPDATE_REASON_UPDATE_NON_SECRET,
+ "checkpoint-rollback",
+ NULL);
}
} else {
/* The connection was deleted, recreate it */
diff --git a/src/core/nm-manager.c b/src/core/nm-manager.c
index f5a696f1fa..90bfad73ee 100644
--- a/src/core/nm-manager.c
+++ b/src/core/nm-manager.c
@@ -2892,15 +2892,16 @@ recheck_assume_connection(NMManager *self, NMDevice *device)
NM_SETTING_IP4_CONFIG_METHOD_AUTO,
NULL));
- nm_settings_connection_update(sett_conn,
- con2,
- NM_SETTINGS_CONNECTION_PERSIST_MODE_KEEP,
- NM_SETTINGS_CONNECTION_INT_FLAGS_NONE,
- NM_SETTINGS_CONNECTION_INT_FLAGS_VOLATILE
- | NM_SETTINGS_CONNECTION_INT_FLAGS_EXTERNAL,
- NM_SETTINGS_CONNECTION_UPDATE_REASON_NONE,
- "assume-initrd",
- NULL);
+ nm_settings_connection_update(
+ sett_conn,
+ con2,
+ NM_SETTINGS_CONNECTION_PERSIST_MODE_KEEP,
+ NM_SETTINGS_CONNECTION_INT_FLAGS_NONE,
+ NM_SETTINGS_CONNECTION_INT_FLAGS_VOLATILE
+ | NM_SETTINGS_CONNECTION_INT_FLAGS_EXTERNAL,
+ NM_SETTINGS_CONNECTION_UPDATE_REASON_UPDATE_NON_SECRET,
+ "assume-initrd",
+ NULL);
}
}
}
diff --git a/src/core/settings/nm-settings-connection.c b/src/core/settings/nm-settings-connection.c
index 7b5477f477..a712831779 100644
--- a/src/core/settings/nm-settings-connection.c
+++ b/src/core/settings/nm-settings-connection.c
@@ -1536,6 +1536,7 @@ update_auth_cb(NMSettingsConnection * self,
: NM_SETTINGS_CONNECTION_UPDATE_REASON_REAPPLY_PARTIAL)
| NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_SYSTEM_SECRETS
| NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_AGENT_SECRETS
+ | NM_SETTINGS_CONNECTION_UPDATE_REASON_UPDATE_NON_SECRET
| (NM_FLAGS_HAS(info->flags, NM_SETTINGS_UPDATE2_FLAG_BLOCK_AUTOCONNECT)
? NM_SETTINGS_CONNECTION_UPDATE_REASON_BLOCK_AUTOCONNECT
: NM_SETTINGS_CONNECTION_UPDATE_REASON_NONE),
diff --git a/src/core/settings/nm-settings-connection.h b/src/core/settings/nm-settings-connection.h
index 7c61dbebb4..79444823d1 100644
--- a/src/core/settings/nm-settings-connection.h
+++ b/src/core/settings/nm-settings-connection.h
@@ -63,6 +63,9 @@ typedef enum {
NM_SETTINGS_CONNECTION_UPDATE_REASON_BLOCK_AUTOCONNECT = (1u << 8),
+ /* Is anything other than secrets changing */
+ NM_SETTINGS_CONNECTION_UPDATE_REASON_UPDATE_NON_SECRET = (1u << 9),
+
} NMSettingsConnectionUpdateReason;
typedef enum {
diff --git a/src/core/settings/nm-settings.c b/src/core/settings/nm-settings.c
index 4c43484d39..de4cd58a18 100644
--- a/src/core/settings/nm-settings.c
+++ b/src/core/settings/nm-settings.c
@@ -1433,7 +1433,8 @@ _plugin_connections_reload(NMSettings *self)
NM_SETTINGS_CONNECTION_INT_FLAGS_NONE,
TRUE,
NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_SYSTEM_SECRETS
- | NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_AGENT_SECRETS);
+ | NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_AGENT_SECRETS
+ | NM_SETTINGS_CONNECTION_UPDATE_REASON_UPDATE_NON_SECRET);
for (iter = priv->plugins; iter; iter = iter->next)
nm_settings_plugin_load_connections_done(iter->data);
@@ -1910,7 +1911,8 @@ again_delete_tombstone:
_NM_SETTINGS_CONNECTION_INT_FLAGS_PERSISTENT_MASK,
FALSE,
NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_SYSTEM_SECRETS
- | NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_AGENT_SECRETS
+ | NM_SETTINGS_CONNECTION_UPDATE_REASON_CLEAR_AGENT_SECRETS
+ | NM_SETTINGS_CONNECTION_UPDATE_REASON_UPDATE_NON_SECRET
| (NM_FLAGS_HAS(add_reason, NM_SETTINGS_CONNECTION_ADD_REASON_BLOCK_AUTOCONNECT)
? NM_SETTINGS_CONNECTION_UPDATE_REASON_BLOCK_AUTOCONNECT
: NM_SETTINGS_CONNECTION_UPDATE_REASON_NONE));
@@ -2810,7 +2812,8 @@ impl_settings_load_connections(NMDBusObject * obj,
NM_SETTINGS_CONNECTION_INT_FLAGS_NONE,
TRUE,
NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_SYSTEM_SECRETS
- | NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_AGENT_SECRETS);
+ | NM_SETTINGS_CONNECTION_UPDATE_REASON_RESET_AGENT_SECRETS
+ | NM_SETTINGS_CONNECTION_UPDATE_REASON_UPDATE_NON_SECRET);
for (iter = priv->plugins; iter; iter = iter->next)
nm_settings_plugin_load_connections_done(iter->data);