about summary refs log tree commit diff
path: root/src/nm-cloud-setup/nm-cloud-setup-utils.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2025-02-12 13:46:55 +0100
committerMichael Biebl <biebl@debian.org>2025-02-12 13:46:55 +0100
commitec170f43021cdc93a65151f4646875cd3aa42a13 (patch)
treeedd6f226af21951b7b4ae1954308594413610513 /src/nm-cloud-setup/nm-cloud-setup-utils.c
parentd5d9f6796c16f29776c619f464811917e46521f4 (diff)
parent8bdf070ff046f482f6eb5e2b15ebc216f5d1e3da (diff)
Update upstream source from tag 'upstream/1.51.90'
Update to upstream version '1.51.90'
with Debian dir 5ed61494ac9853892cd39fb1e4debd23f234a5b9
Diffstat (limited to 'src/nm-cloud-setup/nm-cloud-setup-utils.c')
-rw-r--r--src/nm-cloud-setup/nm-cloud-setup-utils.c45
1 files changed, 44 insertions, 1 deletions
diff --git a/src/nm-cloud-setup/nm-cloud-setup-utils.c b/src/nm-cloud-setup/nm-cloud-setup-utils.c
index 75739c7c..314e4011 100644
--- a/src/nm-cloud-setup/nm-cloud-setup-utils.c
+++ b/src/nm-cloud-setup/nm-cloud-setup-utils.c
@@ -126,7 +126,7 @@ nmcs_wait_for_objects_iterate_until_done(GMainContext *context, int timeout_msec
     _wait_for_objects_iterate_loops = g_slist_prepend(_wait_for_objects_iterate_loops, loop);
     G_UNLOCK(_wait_for_objects_lock);
 
-    data = (WaitForObjectsData){
+    data = (WaitForObjectsData) {
         .loop        = loop,
         .got_timeout = FALSE,
     };
@@ -615,3 +615,46 @@ again:
     NM_SET_OUT(out_version_id_changed, FALSE);
     return TRUE;
 }
+
+/*****************************************************************************/
+
+typedef struct {
+    GMainLoop          *main_loop;
+    GError            **error;
+    NMActiveConnection *active_connection;
+} AddAndActivateData;
+
+static void
+_nmcs_add_and_activate_cb(GObject *source, GAsyncResult *result, gpointer user_data)
+{
+    AddAndActivateData *data = user_data;
+
+    data->active_connection =
+        nm_client_add_and_activate_connection_finish(NM_CLIENT(source), result, data->error);
+    g_main_loop_quit(data->main_loop);
+}
+
+NMActiveConnection *
+nmcs_add_and_activate(NMClient     *client,
+                      GCancellable *sigterm_cancellable,
+                      NMConnection *connection,
+                      GError      **error)
+{
+    nm_auto_unref_gmainloop GMainLoop *main_loop = g_main_loop_new(NULL, FALSE);
+    AddAndActivateData                 data      = {
+                             .main_loop = main_loop,
+                             .error     = error,
+    };
+
+    nm_client_add_and_activate_connection_async(client,
+                                                connection,
+                                                NULL,
+                                                NULL,
+                                                sigterm_cancellable,
+                                                _nmcs_add_and_activate_cb,
+                                                &data);
+
+    g_main_loop_run(main_loop);
+
+    return data.active_connection;
+}