summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2017-03-03 23:59:16 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2017-03-06 10:29:37 +0100
commitef491acfde9981a7edc4ce5fe2db66a8fb023aa7 (patch)
tree51c0e9e09824581368e556405f074aecab181f7d
parent1ba25fd19f8d894221b7c8c0f05b81031eae559c (diff)
downloadNetworkManager-ef491acfde9981a7edc4ce5fe2db66a8fb023aa7.tar.gz
core: split nm_utils_format_con_diff_for_audit()
The function will be called to display in audit logs the changes done to connections.
-rw-r--r--src/nm-core-utils.c28
-rw-r--r--src/nm-core-utils.h2
-rw-r--r--src/settings/nm-settings-connection.c56
3 files changed, 41 insertions, 45 deletions
diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c
index 75c44b7865..b71974d838 100644
--- a/src/nm-core-utils.c
+++ b/src/nm-core-utils.c
@@ -4311,3 +4311,31 @@ skip:
return result;
}
+char *
+nm_utils_format_con_diff_for_audit (GHashTable *diff)
+{
+ GHashTable *setting_diff;
+ char *setting_name, *prop_name;
+ GHashTableIter iter, iter2;
+ GString *str;
+
+ str = g_string_sized_new (32);
+ g_hash_table_iter_init (&iter, diff);
+
+ while (g_hash_table_iter_next (&iter,
+ (gpointer *) &setting_name,
+ (gpointer *) &setting_diff)) {
+ if (!setting_diff)
+ continue;
+
+ g_hash_table_iter_init (&iter2, setting_diff);
+
+ while (g_hash_table_iter_next (&iter2, (gpointer *) &prop_name, NULL))
+ g_string_append_printf (str, "%s.%s,", setting_name, prop_name);
+ }
+
+ if (str->len)
+ str->str[str->len - 1] = '\0';
+
+ return g_string_free (str, FALSE);
+}
diff --git a/src/nm-core-utils.h b/src/nm-core-utils.h
index a1d9c2d462..b0dbe9bf06 100644
--- a/src/nm-core-utils.h
+++ b/src/nm-core-utils.h
@@ -469,5 +469,7 @@ struct stat;
gboolean nm_utils_validate_plugin (const char *path, struct stat *stat, GError **error);
char **nm_utils_read_plugin_paths (const char *dirname, const char *prefix);
+char *nm_utils_format_con_diff_for_audit (GHashTable *diff);
+
#endif /* __NM_CORE_UTILS_H__ */
diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c
index 827a67b2cc..bfbe051f11 100644
--- a/src/settings/nm-settings-connection.c
+++ b/src/settings/nm-settings-connection.c
@@ -1653,49 +1653,6 @@ con_update_cb (NMSettingsConnection *self,
update_complete (self, info, error);
}
-static char *
-con_list_changed_props (NMConnection *old, NMConnection *new)
-{
- gs_unref_hashtable GHashTable *diff = NULL;
- GHashTable *setting_diff;
- char *setting_name, *prop_name;
- GHashTableIter iter, iter2;
- gboolean same;
- GString *str;
-
- same = nm_connection_diff (old, new,
- NM_SETTING_COMPARE_FLAG_EXACT |
- NM_SETTING_COMPARE_FLAG_DIFF_RESULT_NO_DEFAULT,
- &diff);
-
- if (same || !diff)
- return NULL;
-
- str = g_string_sized_new (32);
- g_hash_table_iter_init (&iter, diff);
-
- while (g_hash_table_iter_next (&iter,
- (gpointer *) &setting_name,
- (gpointer *) &setting_diff)) {
- if (!setting_diff)
- continue;
-
- g_hash_table_iter_init (&iter2, setting_diff);
-
- while (g_hash_table_iter_next (&iter2, (gpointer *) &prop_name, NULL)) {
- g_string_append (str, setting_name);
- g_string_append_c (str, '.');
- g_string_append (str, prop_name);
- g_string_append_c (str, ',');
- }
- }
-
- if (str->len)
- str->str[str->len - 1] = '\0';
-
- return g_string_free (str, FALSE);
-}
-
static void
update_auth_cb (NMSettingsConnection *self,
GDBusMethodInvocation *context,
@@ -1736,8 +1693,17 @@ update_auth_cb (NMSettingsConnection *self,
update_agent_secrets_cache (self, info->new_settings);
}
- if (nm_audit_manager_audit_enabled (nm_audit_manager_get ()))
- info->audit_args = con_list_changed_props (NM_CONNECTION (self), info->new_settings);
+ if (nm_audit_manager_audit_enabled (nm_audit_manager_get ())) {
+ gs_unref_hashtable GHashTable *diff = NULL;
+ gboolean same;
+
+ same = nm_connection_diff (NM_CONNECTION (self), info->new_settings,
+ NM_SETTING_COMPARE_FLAG_EXACT |
+ NM_SETTING_COMPARE_FLAG_DIFF_RESULT_NO_DEFAULT,
+ &diff);
+ if (!same && diff)
+ info->audit_args = nm_utils_format_con_diff_for_audit (diff);
+ }
if (info->save_to_disk) {
nm_settings_connection_replace_and_commit (self,