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);