diff --git a/clients/cloud-setup/main.c b/clients/cloud-setup/main.c index c57c5ab5ca..32d29ef4fa 100644 --- a/clients/cloud-setup/main.c +++ b/clients/cloud-setup/main.c @@ -360,26 +360,9 @@ _nmc_mangle_connection(NMDevice * device, /*****************************************************************************/ -static guint -_config_data_get_num_valid(const NMCSProviderGetConfigResult *result) -{ - const NMCSProviderGetConfigIfaceData *config_data; - GHashTableIter h_iter; - guint n = 0; - - g_hash_table_iter_init(&h_iter, result->iface_datas); - while (g_hash_table_iter_next(&h_iter, NULL, (gpointer *) &config_data)) { - if (nmcs_provider_get_config_iface_data_is_valid(config_data)) - n++; - } - - return n; -} - static gboolean _config_one(GCancellable * sigterm_cancellable, NMClient * nmc, - gboolean is_single_nic, const char * hwaddr, const NMCSProviderGetConfigIfaceData *config_data) { @@ -497,14 +480,11 @@ _config_all(GCancellable * sigterm_cancellable, GHashTableIter h_iter; const NMCSProviderGetConfigIfaceData *c_config_data; const char * c_hwaddr; - gboolean is_single_nic; gboolean any_changes = FALSE; - is_single_nic = (_config_data_get_num_valid(result) <= 1); - g_hash_table_iter_init(&h_iter, result->iface_datas); while (g_hash_table_iter_next(&h_iter, (gpointer *) &c_hwaddr, (gpointer *) &c_config_data)) { - if (_config_one(sigterm_cancellable, nmc, is_single_nic, c_hwaddr, c_config_data)) + if (_config_one(sigterm_cancellable, nmc, c_hwaddr, c_config_data)) any_changes = TRUE; } diff --git a/clients/cloud-setup/nmcs-provider.c b/clients/cloud-setup/nmcs-provider.c index d335193166..795532d344 100644 --- a/clients/cloud-setup/nmcs-provider.c +++ b/clients/cloud-setup/nmcs-provider.c @@ -54,12 +54,23 @@ nmcs_provider_get_main_context(NMCSProvider *self) static NMCSProviderGetConfigResult * nmcs_provider_get_config_result_new(GHashTable *iface_datas) { - NMCSProviderGetConfigResult *result; + const NMCSProviderGetConfigIfaceData *iface_data; + NMCSProviderGetConfigResult * result; + GHashTableIter h_iter; + guint num_valid_ifaces = 0; + + g_hash_table_iter_init(&h_iter, iface_datas); + while (g_hash_table_iter_next(&h_iter, NULL, (gpointer *) &iface_data)) { + if (nmcs_provider_get_config_iface_data_is_valid(iface_data)) + num_valid_ifaces++; + } result = g_new(NMCSProviderGetConfigResult, 1); *result = (NMCSProviderGetConfigResult){ - .iface_datas = g_hash_table_ref(iface_datas), + .iface_datas = g_hash_table_ref(iface_datas), + .num_valid_ifaces = num_valid_ifaces, }; + return result; } diff --git a/clients/cloud-setup/nmcs-provider.h b/clients/cloud-setup/nmcs-provider.h index 81aca966e4..6832aa7f07 100644 --- a/clients/cloud-setup/nmcs-provider.h +++ b/clients/cloud-setup/nmcs-provider.h @@ -47,6 +47,9 @@ typedef struct { /* A dictionary of (const char *) -> (NMCSProviderGetConfigIfaceData *). * This is the per-interface result of get_config(). */ GHashTable *iface_datas; + + /* The number of iface_datas that are nmcs_provider_get_config_iface_data_is_valid(). */ + guint num_valid_ifaces; } NMCSProviderGetConfigResult; void nmcs_provider_get_config_result_free(NMCSProviderGetConfigResult *result);