diff options
| author | Michael Biebl <biebl@debian.org> | 2025-02-12 13:46:55 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2025-02-12 13:46:55 +0100 |
| commit | ec170f43021cdc93a65151f4646875cd3aa42a13 (patch) | |
| tree | edd6f226af21951b7b4ae1954308594413610513 /src/nm-cloud-setup/nm-cloud-setup-utils.c | |
| parent | d5d9f6796c16f29776c619f464811917e46521f4 (diff) | |
| parent | 8bdf070ff046f482f6eb5e2b15ebc216f5d1e3da (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.c | 45 |
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; +} |