From 2046ec13e3e8c4666b96a79da5e7dddc33384abc Mon Sep 17 00:00:00 2001 From: Tambet Ingo Date: Fri, 20 Jun 2008 11:26:50 +0000 Subject: [PATCH] 2008-06-20 Tambet Ingo * libnm-util/nm-connection.c (nm_connection_duplicate): Implement. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3759 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 4 ++++ libnm-util/nm-connection.c | 20 ++++++++++++++++++++ libnm-util/nm-connection.h | 2 ++ 3 files changed, 26 insertions(+) diff --git a/ChangeLog b/ChangeLog index ebc25c501..3b0367cf1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-06-20 Tambet Ingo + + * libnm-util/nm-connection.c (nm_connection_duplicate): Implement. + 2008-06-17 Dan Williams * libnm-glib/nm-vpn-plugin-ui-interface.c diff --git a/libnm-util/nm-connection.c b/libnm-util/nm-connection.c index 082dd7db6..ff3cf5254 100644 --- a/libnm-util/nm-connection.c +++ b/libnm-util/nm-connection.c @@ -699,6 +699,26 @@ nm_connection_new_from_hash (GHashTable *hash, GError **error) return connection; } +static void +duplicate_cb (gpointer key, gpointer value, gpointer user_data) +{ + nm_connection_add_setting (NM_CONNECTION (user_data), nm_setting_duplicate (NM_SETTING (value))); +} + +NMConnection * +nm_connection_duplicate (NMConnection *connection) +{ + NMConnection *dup; + + g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL); + + dup = nm_connection_new (); + nm_connection_set_scope (dup, nm_connection_get_scope (connection)); + g_hash_table_foreach (NM_CONNECTION_GET_PRIVATE (connection)->settings, duplicate_cb, dup); + + return dup; +} + static void nm_connection_init (NMConnection *connection) { diff --git a/libnm-util/nm-connection.h b/libnm-util/nm-connection.h index a4d134f9e..e66d73841 100644 --- a/libnm-util/nm-connection.h +++ b/libnm-util/nm-connection.h @@ -42,6 +42,8 @@ NMConnection *nm_connection_new (void); NMConnection *nm_connection_new_from_hash (GHashTable *hash, GError **error); +NMConnection *nm_connection_duplicate (NMConnection *connection); + void nm_connection_add_setting (NMConnection *connection, NMSetting *setting);