diff options
Diffstat (limited to 'clients/cloud-setup')
| -rw-r--r-- | clients/cloud-setup/main.c | 86 | ||||
| -rw-r--r-- | clients/cloud-setup/meson.build | 15 | ||||
| -rw-r--r-- | clients/cloud-setup/nm-cloud-setup-utils.c | 12 | ||||
| -rw-r--r-- | clients/cloud-setup/nm-http-client.c | 13 | ||||
| -rw-r--r-- | clients/cloud-setup/nmcs-provider-ec2.c | 8 |
5 files changed, 52 insertions, 82 deletions
diff --git a/clients/cloud-setup/main.c b/clients/cloud-setup/main.c index 8250945c..4e1a9a4e 100644 --- a/clients/cloud-setup/main.c +++ b/clients/cloud-setup/main.c @@ -2,8 +2,9 @@ #include "nm-default.h" -#include "nm-cloud-setup-utils.h" +#include "nm-libnm-aux/nm-libnm-aux.h" +#include "nm-cloud-setup-utils.h" #include "nmcs-provider-ec2.h" #include "nm-libnm-core-intern/nm-libnm-core-utils.h" @@ -30,7 +31,7 @@ _provider_detect_cb (GObject *source, nm_assert (success != (!!error)); - if (nm_utils_error_is_cancelled (error, FALSE)) + if (nm_utils_error_is_cancelled (error)) return; dd = user_data; @@ -122,58 +123,6 @@ out: /*****************************************************************************/ -typedef struct { - GMainLoop *main_loop; - NMClient *nmc; -} ClientCreateData; - -static void -_nmc_create_cb (GObject *source_object, - GAsyncResult *result, - gpointer user_data) -{ - gs_unref_object NMClient *nmc = NULL; - ClientCreateData *data = user_data; - gs_free_error GError *error = NULL; - - nmc = nm_client_new_finish (result, &error); - if (!nmc) { - if (!nm_utils_error_is_cancelled (error, FALSE)) - _LOGI ("failure to talk to NetworkManager: %s", error->message); - goto out; - } - - if (!nm_client_get_nm_running (nmc)) { - _LOGI ("NetworkManager is not running"); - goto out; - } - - _LOGD ("NetworkManager is running"); - nmcs_wait_for_objects_register (nmc); - nmcs_wait_for_objects_register (nm_client_get_context_busy_watcher (nmc)); - - data->nmc = g_steal_pointer (&nmc); -out: - g_main_loop_quit (data->main_loop); -} - -static NMClient * -_nmc_create (GCancellable *sigterm_cancellable) -{ - nm_auto_unref_gmainloop GMainLoop *main_loop = g_main_loop_new (NULL, FALSE); - ClientCreateData data = { - .main_loop = main_loop, - }; - - nm_client_new_async (sigterm_cancellable, _nmc_create_cb, &data); - - g_main_loop_run (main_loop); - - return data.nmc; -} - -/*****************************************************************************/ - static char ** _nmc_get_hwaddrs (NMClient *nmc) { @@ -270,7 +219,7 @@ _get_config_cb (GObject *source, config_dict = nmcs_provider_get_config_finish (NMCS_PROVIDER (source), result, &error); if (!config_dict) { - if (!nm_utils_error_is_cancelled (error, FALSE)) + if (!nm_utils_error_is_cancelled (error)) _LOGI ("failure to get meta data: %s", error->message); } else _LOGD ("meta data received"); @@ -386,7 +335,7 @@ _nmc_mangle_connection (NMDevice *device, entry = nm_ip_routing_rule_new (AF_INET); nm_ip_routing_rule_set_priority (entry, rt_table); nm_ip_routing_rule_set_from (entry, - nm_utils_inet4_ntop (config_data->ipv4s_arr[i], sbuf), + _nm_utils_inet4_ntop (config_data->ipv4s_arr[i], sbuf), 32); nm_ip_routing_rule_set_table (entry, rt_table); @@ -477,7 +426,7 @@ try_again: &applied_version_id, &error); if (!applied_connection) { - if (!nm_utils_error_is_cancelled (error, FALSE)) + if (!nm_utils_error_is_cancelled (error)) _LOGD ("config device %s: device has no applied connection (%s). Skip", hwaddr, error->message); return any_changes; } @@ -528,7 +477,7 @@ try_again: goto try_again; } - if (!nm_utils_error_is_cancelled (error, FALSE)) { + if (!nm_utils_error_is_cancelled (error)) { _LOGD ("config device %s: failure to reapply connection \"%s\" (%s): %s", hwaddr, nm_connection_get_id (applied_connection), @@ -593,6 +542,7 @@ main (int argc, const char *const*argv) gs_unref_object NMCSProvider *provider = NULL; gs_unref_object NMClient *nmc = NULL; gs_unref_hashtable GHashTable *config_dict = NULL; + gs_free_error GError *error = NULL; _nm_logging_enabled_init (g_getenv (NMCS_ENV_VARIABLE ("NM_CLOUD_SETUP_LOG"))); @@ -616,9 +566,25 @@ main (int argc, const char *const*argv) if (!provider) goto done; - nmc = _nmc_create (sigterm_cancellable); - if (!nmc) + nmc_client_new_waitsync (sigterm_cancellable, + &nmc, + &error, + NM_CLIENT_INSTANCE_FLAGS, (guint) NM_CLIENT_INSTANCE_FLAGS_NO_AUTO_FETCH_PERMISSIONS, + NULL); + + nmcs_wait_for_objects_register (nmc); + nmcs_wait_for_objects_register (nm_client_get_context_busy_watcher (nmc)); + + if (error) { + if (!nm_utils_error_is_cancelled (error)) + _LOGI ("failure to talk to NetworkManager: %s", error->message); goto done; + } + + if (!nm_client_get_nm_running (nmc)) { + _LOGI ("NetworkManager is not running"); + goto done; + } config_dict = _get_config (sigterm_cancellable, provider, nmc); if (!config_dict) diff --git a/clients/cloud-setup/meson.build b/clients/cloud-setup/meson.build index e9cd970a..d8f96539 100644 --- a/clients/cloud-setup/meson.build +++ b/clients/cloud-setup/meson.build @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: LGPL-2.1+ + name = 'nm-cloud-setup' if install_systemdunitdir @@ -29,16 +31,15 @@ sources = files( 'nmcs-provider.c', ) -deps = [ - libnmc_base_dep, - libnmc_dep, - libcurl_dep, -] - executable( name, sources, - dependencies: deps, + dependencies: [ + libnmc_base_dep, + libnmc_dep, + libcurl_dep, + libnm_libnm_aux_dep, + ], c_args: clients_c_flags + ['-DG_LOG_DOMAIN="@0@"'.format(name)], link_with: libnm_systemd_logging_stub, diff --git a/clients/cloud-setup/nm-cloud-setup-utils.c b/clients/cloud-setup/nm-cloud-setup-utils.c index 50a59892..13c9566a 100644 --- a/clients/cloud-setup/nm-cloud-setup-utils.c +++ b/clients/cloud-setup/nm-cloud-setup-utils.c @@ -49,11 +49,11 @@ _nm_log_impl_cs (NMLogLevel level, break; } - ts = nm_utils_clock_gettime_ns (CLOCK_BOOTTIME); + ts = nm_utils_clock_gettime_nsec (CLOCK_BOOTTIME); g_print ("[%"G_GINT64_FORMAT".%05"G_GINT64_FORMAT"] %s %s\n", - ts / NM_UTILS_NS_PER_SECOND, - (ts / (NM_UTILS_NS_PER_SECOND / 10000)) % 10000, + ts / NM_UTILS_NSEC_PER_SEC, + (ts / (NM_UTILS_NSEC_PER_SEC / 10000)) % 10000, level_str, msg); } @@ -294,7 +294,7 @@ _poll_done_cb (GObject *source, poll_task_data->probe_user_data, &error); - if (nm_utils_error_is_cancelled (error, FALSE)) { + if (nm_utils_error_is_cancelled (error)) { /* we already handle this differently. Nothing to do. */ return; } @@ -305,7 +305,7 @@ _poll_done_cb (GObject *source, return; } - now_ms = nm_utils_get_monotonic_timestamp_ms (); + now_ms = nm_utils_get_monotonic_timestamp_msec (); if (poll_task_data->ratelimit_timeout_ms > 0) wait_ms = (poll_task_data->last_poll_start_ms + poll_task_data->ratelimit_timeout_ms) - now_ms; else @@ -328,7 +328,7 @@ _poll_start_cb (gpointer user_data) nm_clear_g_source_inst (&poll_task_data->source_next_poll); - poll_task_data->last_poll_start_ms = nm_utils_get_monotonic_timestamp_ms (); + poll_task_data->last_poll_start_ms = nm_utils_get_monotonic_timestamp_msec (); g_object_ref (poll_task_data->task); /* balanced by _poll_done_cb() */ diff --git a/clients/cloud-setup/nm-http-client.c b/clients/cloud-setup/nm-http-client.c index 17c6fcdf..94f3fe2b 100644 --- a/clients/cloud-setup/nm-http-client.c +++ b/clients/cloud-setup/nm-http-client.c @@ -5,7 +5,6 @@ #include "nm-http-client.h" #include <curl/curl.h> -#include <glib-unix.h> #include "nm-cloud-setup-utils.h" @@ -164,7 +163,7 @@ _ehandle_complete (EHandleData *edata, &edata->cancellable_id); if (error_take) { - if (nm_utils_error_is_cancelled (error_take, FALSE)) + if (nm_utils_error_is_cancelled (error_take)) _LOG2T (edata, "cancelled"); else _LOG2D (edata, "failed with %s", error_take->message); @@ -423,7 +422,7 @@ _poll_get_probe_finish_fcn (GObject *source, &local_error); if (!success) { - if (nm_utils_error_is_cancelled (local_error, FALSE)) { + if (nm_utils_error_is_cancelled (local_error)) { g_propagate_error (error, g_steal_pointer (&local_error)); return TRUE; } @@ -636,8 +635,12 @@ _mhandle_socketfunction_cb (CURL *e_handle, curl_socket_t fd, int what, void *us condition = 0; if (condition) { - priv->mhandle_source_socket = g_unix_fd_source_new (fd, condition); - g_source_set_callback (priv->mhandle_source_socket, G_SOURCE_FUNC (_mhandle_socket_cb), self, NULL); + priv->mhandle_source_socket = nm_g_unix_fd_source_new (fd, + condition, + G_PRIORITY_DEFAULT, + _mhandle_socket_cb, + self, + NULL); g_source_attach (priv->mhandle_source_socket, priv->context); } } diff --git a/clients/cloud-setup/nmcs-provider-ec2.c b/clients/cloud-setup/nmcs-provider-ec2.c index b6ac5a4c..82ed0949 100644 --- a/clients/cloud-setup/nmcs-provider-ec2.c +++ b/clients/cloud-setup/nmcs-provider-ec2.c @@ -98,7 +98,7 @@ _detect_get_meta_data_done_cb (GObject *source, NULL, &get_error); - if (nm_utils_error_is_cancelled (get_error, FALSE)) { + if (nm_utils_error_is_cancelled (get_error)) { g_task_return_error (task, g_steal_pointer (&get_error)); return; } @@ -168,7 +168,7 @@ _get_config_task_return (GetConfigIfaceData *iface_data, nm_g_slice_free (iface_data); if (error_take) { - if (nm_utils_error_is_cancelled (error_take, FALSE)) + if (nm_utils_error_is_cancelled (error_take)) _LOGD ("get-config: cancelled"); else _LOGD ("get-config: failed: %s", error_take->message); @@ -204,7 +204,7 @@ _get_config_fetch_done_cb (NMHttpClient *http_client, NULL, &response_data, &error); - if (nm_utils_error_is_cancelled (error, FALSE)) + if (nm_utils_error_is_cancelled (error)) return; get_config_data = iface_data->get_config_data; @@ -327,7 +327,7 @@ _get_config_metadata_ready_cb (GObject *source, .n_pending = 0, }; - if (nm_utils_error_is_cancelled (error, FALSE)) { + if (nm_utils_error_is_cancelled (error)) { _get_config_task_return (iface_data, g_steal_pointer (&error)); return; } |