From a0e84d2f5a69b73fe9e11a776047f4ff4a81654d Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Sat, 6 Oct 2007 04:25:48 +0000 Subject: [PATCH] 2007-10-06 Dan Williams * libnm-util/nm-connection.c libnm-util/nm-connection.h - (nm_connection_replace_settings): new function git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2940 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 6 ++++++ libnm-util/nm-connection.c | 27 +++++++++++++++++++++++++++ libnm-util/nm-connection.h | 3 +++ 3 files changed, 36 insertions(+) diff --git a/ChangeLog b/ChangeLog index 7f1a71759e..4d83fec9cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-10-06 Dan Williams + + * libnm-util/nm-connection.c + libnm-util/nm-connection.h + - (nm_connection_replace_settings): new function + 2007-10-06 Dan Williams * libnm-glib/nm-device-802-11-wireless.c diff --git a/libnm-util/nm-connection.c b/libnm-util/nm-connection.c index 2e51da6e2d..fb75274a7e 100644 --- a/libnm-util/nm-connection.c +++ b/libnm-util/nm-connection.c @@ -108,6 +108,33 @@ nm_connection_get_setting (NMConnection *connection, const char *setting_name) return (NMSetting *) g_hash_table_lookup (priv->settings, setting_name); } +gboolean +nm_connection_replace_settings (NMConnection *connection, + GHashTable *new_settings) +{ + NMConnectionPrivate *priv; + + g_return_val_if_fail (NM_IS_CONNECTION (connection), FALSE); + g_return_val_if_fail (new_settings != NULL, FALSE); + + priv = NM_CONNECTION_GET_PRIVATE (connection); + g_hash_table_remove_all (priv->settings); + + g_hash_table_foreach (new_settings, parse_one_setting, connection); + + if (g_hash_table_size (priv->settings) < 1) { + g_warning ("No settings found."); + return FALSE; + } + + if (!nm_settings_verify (priv->settings)) { + g_warning ("Settings invalid."); + return FALSE; + } + + return TRUE; +} + gboolean nm_connection_compare (NMConnection *connection, NMConnection *other) { diff --git a/libnm-util/nm-connection.h b/libnm-util/nm-connection.h index aa25f09e04..86f6d38443 100644 --- a/libnm-util/nm-connection.h +++ b/libnm-util/nm-connection.h @@ -35,6 +35,9 @@ void nm_connection_add_setting (NMConnection *connection, NMSetting *nm_connection_get_setting (NMConnection *connection, const char *setting_name); +gboolean nm_connection_replace_settings (NMConnection *connection, + GHashTable *new_settings); + gboolean nm_connection_compare (NMConnection *connection, NMConnection *other);