summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2017-04-28 18:52:39 +0200
committerLubomir Rintel <lkundrak@v3.sk>2017-05-15 12:59:55 +0200
commitf87912326cad069939953f50d365b04c15fd41d7 (patch)
tree1a097ef6fda946e800c5c87608567b08ade7ad50
parent5c80571006d784bba4c55cafdb9da0667980011f (diff)
downloadNetworkManager-f87912326cad069939953f50d365b04c15fd41d7.tar.gz
settings-connection: all method to internally supply new secrets
It's sort of a very very lightweight version of get_secrets_done_cb() that allows as to add secrets to the connection that didn't come from the agent manager.
-rw-r--r--src/settings/nm-settings-connection.c25
-rw-r--r--src/settings/nm-settings-connection.h6
2 files changed, 31 insertions, 0 deletions
diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c
index 0cb2920c58..76b0ff5a85 100644
--- a/src/settings/nm-settings-connection.c
+++ b/src/settings/nm-settings-connection.c
@@ -974,6 +974,31 @@ get_cmp_flags (NMSettingsConnection *self, /* only needed for logging */
}
}
+gboolean
+nm_settings_connection_new_secrets (NMSettingsConnection *self,
+ NMConnection *applied_connection,
+ const char *setting_name,
+ GVariant *secrets,
+ GError **error)
+{
+ if (!nm_settings_connection_has_unmodified_applied_connection (self, applied_connection,
+ NM_SETTING_COMPARE_FLAG_NONE)) {
+ g_set_error_literal (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_FAILED,
+ "The connection was modified since activation");
+ return FALSE;
+ }
+
+ if (!nm_connection_update_secrets (NM_CONNECTION (self), setting_name, secrets, error))
+ return FALSE;
+
+ update_system_secrets_cache (self);
+ update_agent_secrets_cache (self, NULL);
+ nm_settings_connection_commit_changes (self, NM_SETTINGS_CONNECTION_COMMIT_REASON_NONE,
+ new_secrets_commit_cb, NULL);
+
+ return TRUE;
+}
+
static void
get_secrets_done_cb (NMAgentManager *manager,
NMAgentManagerCallId call_id_a,
diff --git a/src/settings/nm-settings-connection.h b/src/settings/nm-settings-connection.h
index b449e2bd14..c50b4515a3 100644
--- a/src/settings/nm-settings-connection.h
+++ b/src/settings/nm-settings-connection.h
@@ -163,6 +163,12 @@ typedef void (*NMSettingsConnectionSecretsFunc) (NMSettingsConnection *self,
GError *error,
gpointer user_data);
+gboolean nm_settings_connection_new_secrets (NMSettingsConnection *self,
+ NMConnection *applied_connection,
+ const char *setting_name,
+ GVariant *secrets,
+ GError **error);
+
NMSettingsConnectionCallId nm_settings_connection_get_secrets (NMSettingsConnection *self,
NMConnection *applied_connection,
NMAuthSubject *subject,