From c464e111a40324f6e46a4c088275765fe99a853b Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 13 Jun 2017 23:58:57 +0200 Subject: [PATCH 1/6] dns: minor refactoring in _collect_resolv_conf_data() The code was correct previously, but it was confusing to me, because - once @skip gets set to TRUE, it stays TRUE for the rest of the loop. - in each additional skipped iteration, it would still set plugin_confs[i] to NULL. Which is not wrong, but confusing. - it would set "prev_prio = prio;" in each iteration. After @skip is set to TRUE, that doesn't matter anymore, but is confusing. Before @skip is set to TRUE it also doesn't really matter to set it more then once, because we only care about the very first priority. - @skip sounded to me like the current iteration would be skipped. But really all remaining will be skipped too. (cherry picked from commit aa347182bb04750b8b8c2f55526fde7fb473878b) --- src/dns/nm-dns-manager.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/dns/nm-dns-manager.c b/src/dns/nm-dns-manager.c index 1f7eb96412..ac75ec03e4 100644 --- a/src/dns/nm-dns-manager.c +++ b/src/dns/nm-dns-manager.c @@ -994,7 +994,7 @@ _collect_resolv_conf_data (NMDnsManager *self, /* only for logging context, no o NMDnsIPConfigData ***out_plugin_confs) { NMDnsIPConfigData **plugin_confs = NULL; - guint i, num, len; + guint i, j, num, len; NMResolvConfData rc = { .nameservers = g_ptr_array_new (), .searches = g_ptr_array_new (), @@ -1007,26 +1007,26 @@ _collect_resolv_conf_data (NMDnsManager *self, /* only for logging context, no o merge_global_dns_config (&rc, global_config); else { nm_auto_free_gstring GString *tmp_gstring = NULL; - int prio, prev_prio = 0; + int prio, first_prio = 0; NMDnsIPConfigData *current; - gboolean skip = FALSE, v4; + gboolean v4; plugin_confs = g_new (NMDnsIPConfigData *, configs->len + 1); - for (i = 0; i < configs->len; i++) { + for (i = 0, j = 0; i < configs->len; i++) { + gboolean skip = FALSE; + current = configs->pdata[i]; v4 = NM_IS_IP4_CONFIG (current->config); - prio = v4 ? - nm_ip4_config_get_dns_priority ((NMIP4Config *) current->config) : - nm_ip6_config_get_dns_priority ((NMIP6Config *) current->config); + prio = v4 + ? nm_ip4_config_get_dns_priority ((NMIP4Config *) current->config) + : nm_ip6_config_get_dns_priority ((NMIP6Config *) current->config); - if (prev_prio < 0 && prio != prev_prio) { + if (i == 0) + first_prio = prio; + else if (first_prio < 0 && first_prio != prio) skip = TRUE; - plugin_confs[i] = NULL; - } - - prev_prio = prio; if ( ( v4 && nm_ip4_config_get_num_nameservers ((NMIP4Config *) current->config)) || (!v4 && nm_ip6_config_get_num_nameservers ((NMIP6Config *) current->config))) { @@ -1041,10 +1041,10 @@ _collect_resolv_conf_data (NMDnsManager *self, /* only for logging context, no o if (!skip) { merge_one_ip_config_data (&rc, current); - plugin_confs[i] = current; + plugin_confs[j++] = current; } } - plugin_confs[i] = NULL; + plugin_confs[j++] = NULL; } /* If the hostname is a FQDN ("dcbw.example.com"), then add the domain part of it From 8887970713bde9a8fcf973332c2151c42ebfda7b Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 14 Jun 2017 00:27:38 +0200 Subject: [PATCH 2/6] dns: add helper method to get DNS priority from NMDnsIPConfigData (cherry picked from commit c818e46d48b9ec02ba2aaedf6981b5a54eceb648) --- src/dns/nm-dns-manager.c | 34 ++++++++++++++++++---------------- src/dns/nm-dns-manager.h | 2 ++ 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/dns/nm-dns-manager.c b/src/dns/nm-dns-manager.c index ac75ec03e4..6e567e5d4a 100644 --- a/src/dns/nm-dns-manager.c +++ b/src/dns/nm-dns-manager.c @@ -197,6 +197,19 @@ NM_UTILS_LOOKUP_STR_DEFINE_STATIC (_config_type_to_string, NMDnsIPConfigType, NM_UTILS_LOOKUP_STR_ITEM (NM_DNS_IP_CONFIG_TYPE_VPN, "vpn"), ); +int +nm_dns_ip_config_data_get_dns_priority (const NMDnsIPConfigData *config) +{ + g_return_val_if_fail (config, 0); + + if (NM_IS_IP4_CONFIG (config->config)) + return nm_ip4_config_get_dns_priority (config->config); + else if (NM_IS_IP6_CONFIG (config->config)) + return nm_ip6_config_get_dns_priority (config->config); + else + g_return_val_if_reached (0); +} + static NMDnsIPConfigData * ip_config_data_new (gpointer config, NMDnsIPConfigType type, const char *iface) { @@ -226,19 +239,10 @@ ip_config_data_destroy (gpointer ptr) static gint ip_config_data_compare (const NMDnsIPConfigData *a, const NMDnsIPConfigData *b) { - gboolean a_v4, b_v4; - gint a_prio, b_prio; + int a_prio, b_prio; - a_v4 = NM_IS_IP4_CONFIG (a->config); - b_v4 = NM_IS_IP4_CONFIG (b->config); - - a_prio = a_v4 ? - nm_ip4_config_get_dns_priority ((NMIP4Config *) a->config) : - nm_ip6_config_get_dns_priority ((NMIP6Config *) a->config); - - b_prio = b_v4 ? - nm_ip4_config_get_dns_priority ((NMIP4Config *) b->config) : - nm_ip6_config_get_dns_priority ((NMIP6Config *) b->config); + a_prio = nm_dns_ip_config_data_get_dns_priority (a); + b_prio = nm_dns_ip_config_data_get_dns_priority (b); /* Configurations with lower priority value first */ if (a_prio < b_prio) @@ -1017,17 +1021,15 @@ _collect_resolv_conf_data (NMDnsManager *self, /* only for logging context, no o gboolean skip = FALSE; current = configs->pdata[i]; - v4 = NM_IS_IP4_CONFIG (current->config); - prio = v4 - ? nm_ip4_config_get_dns_priority ((NMIP4Config *) current->config) - : nm_ip6_config_get_dns_priority ((NMIP6Config *) current->config); + prio = nm_dns_ip_config_data_get_dns_priority (current); if (i == 0) first_prio = prio; else if (first_prio < 0 && first_prio != prio) skip = TRUE; + v4 = NM_IS_IP4_CONFIG (current->config); if ( ( v4 && nm_ip4_config_get_num_nameservers ((NMIP4Config *) current->config)) || (!v4 && nm_ip6_config_get_num_nameservers ((NMIP6Config *) current->config))) { _LOGT ("config: %8d %-7s v%c %-16s %s: %s", diff --git a/src/dns/nm-dns-manager.h b/src/dns/nm-dns-manager.h index 899e4bb865..ee83592741 100644 --- a/src/dns/nm-dns-manager.h +++ b/src/dns/nm-dns-manager.h @@ -44,6 +44,8 @@ typedef struct { char *iface; } NMDnsIPConfigData; +int nm_dns_ip_config_data_get_dns_priority (const NMDnsIPConfigData *config); + #define NM_TYPE_DNS_MANAGER (nm_dns_manager_get_type ()) #define NM_DNS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), NM_TYPE_DNS_MANAGER, NMDnsManager)) #define NM_DNS_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), NM_TYPE_DNS_MANAGER, NMDnsManagerClass)) From 08d8b38a81a707e92692425ece5a8acd798aecdf Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 14 Jun 2017 00:40:13 +0200 Subject: [PATCH 3/6] dns/systemd: remove unused device lookup in add_interface_configuration() (cherry picked from commit 1c9285b06e166a86bf750c3302958f49b9fb9f76) --- src/dns/nm-dns-systemd-resolved.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/dns/nm-dns-systemd-resolved.c b/src/dns/nm-dns-systemd-resolved.c index ed165618ec..098897660d 100644 --- a/src/dns/nm-dns-systemd-resolved.c +++ b/src/dns/nm-dns-systemd-resolved.c @@ -107,7 +107,6 @@ add_interface_configuration (NMDnsSystemdResolved *self, int i; InterfaceConfig *ic = NULL; int ifindex; - NMDevice *device; if (NM_IS_IP4_CONFIG (data->config)) ifindex = nm_ip4_config_get_ifindex (data->config); @@ -116,8 +115,6 @@ add_interface_configuration (NMDnsSystemdResolved *self, else g_return_if_reached (); - device = nm_manager_get_device_by_ifindex (nm_manager_get (), ifindex); - for (i = 0; i < interfaces->len; i++) { InterfaceConfig *tic = &g_array_index (interfaces, InterfaceConfig, i); if (ifindex == tic->ifindex) { From 6ac67655befb6611b052fedb31afe31af310a1d4 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 14 Jun 2017 00:47:10 +0200 Subject: [PATCH 4/6] dns: make configs argument to update a const pointer (cherry picked from commit d582176939cce20c034649bc5569f75e1d05da24) --- src/dns/nm-dns-dnsmasq.c | 2 +- src/dns/nm-dns-plugin.c | 2 +- src/dns/nm-dns-plugin.h | 4 ++-- src/dns/nm-dns-systemd-resolved.c | 4 ++-- src/dns/nm-dns-unbound.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/dns/nm-dns-dnsmasq.c b/src/dns/nm-dns-dnsmasq.c index 5223638e68..33cda8371b 100644 --- a/src/dns/nm-dns-dnsmasq.c +++ b/src/dns/nm-dns-dnsmasq.c @@ -554,7 +554,7 @@ start_dnsmasq (NMDnsDnsmasq *self) static gboolean update (NMDnsPlugin *plugin, - const NMDnsIPConfigData **configs, + const NMDnsIPConfigData *const*configs, const NMGlobalDnsConfig *global_config, const char *hostname) { diff --git a/src/dns/nm-dns-plugin.c b/src/dns/nm-dns-plugin.c index 00729c9392..460093440c 100644 --- a/src/dns/nm-dns-plugin.c +++ b/src/dns/nm-dns-plugin.c @@ -77,7 +77,7 @@ G_DEFINE_TYPE_EXTENDED (NMDnsPlugin, nm_dns_plugin, G_TYPE_OBJECT, G_TYPE_FLAG_A gboolean nm_dns_plugin_update (NMDnsPlugin *self, - const NMDnsIPConfigData **configs, + const NMDnsIPConfigData *const*configs, const NMGlobalDnsConfig *global_config, const char *hostname) { diff --git a/src/dns/nm-dns-plugin.h b/src/dns/nm-dns-plugin.h index 12109441f9..d71eb46b45 100644 --- a/src/dns/nm-dns-plugin.h +++ b/src/dns/nm-dns-plugin.h @@ -50,7 +50,7 @@ typedef struct { * configuration. */ gboolean (*update) (NMDnsPlugin *self, - const NMDnsIPConfigData **configs, + const NMDnsIPConfigData *const*configs, const NMGlobalDnsConfig *global_config, const char *hostname); @@ -80,7 +80,7 @@ gboolean nm_dns_plugin_is_caching (NMDnsPlugin *self); const char *nm_dns_plugin_get_name (NMDnsPlugin *self); gboolean nm_dns_plugin_update (NMDnsPlugin *self, - const NMDnsIPConfigData **configs, + const NMDnsIPConfigData *const*configs, const NMGlobalDnsConfig *global_config, const char *hostname); diff --git a/src/dns/nm-dns-systemd-resolved.c b/src/dns/nm-dns-systemd-resolved.c index 098897660d..a943e572d9 100644 --- a/src/dns/nm-dns-systemd-resolved.c +++ b/src/dns/nm-dns-systemd-resolved.c @@ -288,13 +288,13 @@ send_updates (NMDnsSystemdResolved *self) static gboolean update (NMDnsPlugin *plugin, - const NMDnsIPConfigData **configs, + const NMDnsIPConfigData *const*configs, const NMGlobalDnsConfig *global_config, const char *hostname) { NMDnsSystemdResolved *self = NM_DNS_SYSTEMD_RESOLVED (plugin); GArray *interfaces = g_array_new (TRUE, TRUE, sizeof (InterfaceConfig)); - const NMDnsIPConfigData **c; + const NMDnsIPConfigData *const*c; int i; for (c = configs; *c != NULL; c++) diff --git a/src/dns/nm-dns-unbound.c b/src/dns/nm-dns-unbound.c index 6af4bad885..7369505ec9 100644 --- a/src/dns/nm-dns-unbound.c +++ b/src/dns/nm-dns-unbound.c @@ -39,7 +39,7 @@ G_DEFINE_TYPE (NMDnsUnbound, nm_dns_unbound, NM_TYPE_DNS_PLUGIN) static gboolean update (NMDnsPlugin *plugin, - const NMDnsIPConfigData **configs, + const NMDnsIPConfigData *const*configs, const NMGlobalDnsConfig *global_config, const char *hostname) { From 4c81a447cc8af239773b878922af82f2f04b93a6 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 14 Jun 2017 00:44:03 +0200 Subject: [PATCH 5/6] dns: fix negative ipv4.dns-priority for systemd-resolved A negative ipv4.dns-priority and ipv6.dns-priority has the meaning to configure the DNS information of the connection exclusively. With systemd-resolved, that means we must explicitly unset the configuration from other interfaces. https://bugzilla.gnome.org/show_bug.cgi?id=783569 (cherry picked from commit 70792e51d94a5e7790b3e65b7d6cf591b251f4cd) --- src/dns/nm-dns-dnsmasq.c | 12 +++++++++--- src/dns/nm-dns-manager.c | 6 +++--- src/dns/nm-dns-plugin.c | 2 +- src/dns/nm-dns-systemd-resolved.c | 22 ++++++++++++++++------ 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/dns/nm-dns-dnsmasq.c b/src/dns/nm-dns-dnsmasq.c index 33cda8371b..67aae6f431 100644 --- a/src/dns/nm-dns-dnsmasq.c +++ b/src/dns/nm-dns-dnsmasq.c @@ -561,6 +561,8 @@ update (NMDnsPlugin *plugin, NMDnsDnsmasq *self = NM_DNS_DNSMASQ (plugin); NMDnsDnsmasqPrivate *priv = NM_DNS_DNSMASQ_GET_PRIVATE (self); GVariantBuilder servers; + guint i; + int prio, first_prio; start_dnsmasq (self); @@ -569,9 +571,13 @@ update (NMDnsPlugin *plugin, if (global_config) add_global_config (self, &servers, global_config); else { - while (*configs) { - add_ip_config_data (self, &servers, *configs); - configs++; + for (i = 0; configs[i]; i++) { + prio = nm_dns_ip_config_data_get_dns_priority (configs[i]); + if (i == 0) + first_prio = prio; + else if (first_prio < 0 && first_prio != prio) + break; + add_ip_config_data (self, &servers, configs[i]); } } diff --git a/src/dns/nm-dns-manager.c b/src/dns/nm-dns-manager.c index 6e567e5d4a..c99ed112d4 100644 --- a/src/dns/nm-dns-manager.c +++ b/src/dns/nm-dns-manager.c @@ -1041,10 +1041,10 @@ _collect_resolv_conf_data (NMDnsManager *self, /* only for logging context, no o get_nameserver_list (current->config, &tmp_gstring)); } - if (!skip) { + if (!skip) merge_one_ip_config_data (&rc, current); - plugin_confs[j++] = current; - } + + plugin_confs[j++] = current; } plugin_confs[j++] = NULL; } diff --git a/src/dns/nm-dns-plugin.c b/src/dns/nm-dns-plugin.c index 460093440c..740ff26bab 100644 --- a/src/dns/nm-dns-plugin.c +++ b/src/dns/nm-dns-plugin.c @@ -84,7 +84,7 @@ nm_dns_plugin_update (NMDnsPlugin *self, g_return_val_if_fail (NM_DNS_PLUGIN_GET_CLASS (self)->update != NULL, FALSE); return NM_DNS_PLUGIN_GET_CLASS (self)->update (self, - configs, + configs ?: NM_PTRARRAY_EMPTY (const NMDnsIPConfigData *), global_config, hostname); } diff --git a/src/dns/nm-dns-systemd-resolved.c b/src/dns/nm-dns-systemd-resolved.c index a943e572d9..f49aed57da 100644 --- a/src/dns/nm-dns-systemd-resolved.c +++ b/src/dns/nm-dns-systemd-resolved.c @@ -102,7 +102,8 @@ call_done (GObject *source, GAsyncResult *r, gpointer user_data) static void add_interface_configuration (NMDnsSystemdResolved *self, GArray *interfaces, - const NMDnsIPConfigData *data) + const NMDnsIPConfigData *data, + gboolean skip) { int i; InterfaceConfig *ic = NULL; @@ -130,7 +131,8 @@ add_interface_configuration (NMDnsSystemdResolved *self, ic->ifindex = ifindex; } - ic->configs = g_list_append (ic->configs, data->config); + if (!skip) + ic->configs = g_list_append (ic->configs, data->config); } static void @@ -294,11 +296,19 @@ update (NMDnsPlugin *plugin, { NMDnsSystemdResolved *self = NM_DNS_SYSTEMD_RESOLVED (plugin); GArray *interfaces = g_array_new (TRUE, TRUE, sizeof (InterfaceConfig)); - const NMDnsIPConfigData *const*c; - int i; + guint i; + int prio, first_prio = 0; - for (c = configs; *c != NULL; c++) - add_interface_configuration (self, interfaces, *c); + for (i = 0; configs[i]; i++) { + gboolean skip = FALSE; + + prio = nm_dns_ip_config_data_get_dns_priority (configs[i]); + if (i == 0) + first_prio = prio; + else if (first_prio < 0 && first_prio != prio) + skip = TRUE; + add_interface_configuration (self, interfaces, configs[i], skip); + } free_pending_updates (self); From 24f4caebecd20fbc48586a79402d9088d136ce37 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 14 Jun 2017 11:04:38 +0200 Subject: [PATCH 6/6] dns: don't clone DNS configs list for nm_dns_plugin_update() No need to clone the list anymore. Unfortunately, GPtrArray is not NULL terminated (without extra effort), so we have to pass on the GPtrArray instance for the length. (cherry picked from commit 19a98c6f617c2c9d550f6954f34b3e25e3ae6d63) --- src/dns/nm-dns-dnsmasq.c | 8 ++++---- src/dns/nm-dns-manager.c | 16 +++------------- src/dns/nm-dns-plugin.c | 4 ++-- src/dns/nm-dns-plugin.h | 4 ++-- src/dns/nm-dns-systemd-resolved.c | 8 ++++---- src/dns/nm-dns-unbound.c | 2 +- 6 files changed, 16 insertions(+), 26 deletions(-) diff --git a/src/dns/nm-dns-dnsmasq.c b/src/dns/nm-dns-dnsmasq.c index 67aae6f431..a6204ae4a0 100644 --- a/src/dns/nm-dns-dnsmasq.c +++ b/src/dns/nm-dns-dnsmasq.c @@ -554,7 +554,7 @@ start_dnsmasq (NMDnsDnsmasq *self) static gboolean update (NMDnsPlugin *plugin, - const NMDnsIPConfigData *const*configs, + const GPtrArray *configs, const NMGlobalDnsConfig *global_config, const char *hostname) { @@ -571,13 +571,13 @@ update (NMDnsPlugin *plugin, if (global_config) add_global_config (self, &servers, global_config); else { - for (i = 0; configs[i]; i++) { - prio = nm_dns_ip_config_data_get_dns_priority (configs[i]); + for (i = 0; i < configs->len; i++) { + prio = nm_dns_ip_config_data_get_dns_priority (configs->pdata[i]); if (i == 0) first_prio = prio; else if (first_prio < 0 && first_prio != prio) break; - add_ip_config_data (self, &servers, configs[i]); + add_ip_config_data (self, &servers, configs->pdata[i]); } } diff --git a/src/dns/nm-dns-manager.c b/src/dns/nm-dns-manager.c index c99ed112d4..f443f340fa 100644 --- a/src/dns/nm-dns-manager.c +++ b/src/dns/nm-dns-manager.c @@ -994,10 +994,8 @@ _collect_resolv_conf_data (NMDnsManager *self, /* only for logging context, no o char ***out_options, char ***out_nameservers, char ***out_nis_servers, - const char **out_nis_domain, - NMDnsIPConfigData ***out_plugin_confs) + const char **out_nis_domain) { - NMDnsIPConfigData **plugin_confs = NULL; guint i, j, num, len; NMResolvConfData rc = { .nameservers = g_ptr_array_new (), @@ -1015,8 +1013,6 @@ _collect_resolv_conf_data (NMDnsManager *self, /* only for logging context, no o NMDnsIPConfigData *current; gboolean v4; - plugin_confs = g_new (NMDnsIPConfigData *, configs->len + 1); - for (i = 0, j = 0; i < configs->len; i++) { gboolean skip = FALSE; @@ -1043,10 +1039,7 @@ _collect_resolv_conf_data (NMDnsManager *self, /* only for logging context, no o if (!skip) merge_one_ip_config_data (&rc, current); - - plugin_confs[j++] = current; } - plugin_confs[j++] = NULL; } /* If the hostname is a FQDN ("dcbw.example.com"), then add the domain part of it @@ -1080,7 +1073,6 @@ _collect_resolv_conf_data (NMDnsManager *self, /* only for logging context, no o } g_ptr_array_set_size (rc.searches, i); - *out_plugin_confs = plugin_confs; *out_searches = _ptrarray_to_strv (rc.searches); *out_options = _ptrarray_to_strv (rc.options); *out_nameservers = _ptrarray_to_strv (rc.nameservers); @@ -1104,7 +1096,6 @@ update_dns (NMDnsManager *self, SpawnResult result = SR_ERROR; NMConfigData *data; NMGlobalDnsConfig *global_config; - gs_free NMDnsIPConfigData **plugin_confs = NULL; g_return_val_if_fail (!error || !*error, FALSE); @@ -1138,8 +1129,7 @@ update_dns (NMDnsManager *self, compute_hash (self, global_config, priv->hash); _collect_resolv_conf_data (self, global_config, priv->configs, priv->hostname, - &searches, &options, &nameservers, &nis_servers, &nis_domain, - &plugin_confs); + &searches, &options, &nameservers, &nis_servers, &nis_domain); /* Let any plugins do their thing first */ if (priv->plugin) { @@ -1157,7 +1147,7 @@ update_dns (NMDnsManager *self, _LOGD ("update-dns: updating plugin %s", plugin_name); if (!nm_dns_plugin_update (plugin, - (const NMDnsIPConfigData **) plugin_confs, + priv->configs, global_config, priv->hostname)) { _LOGW ("update-dns: plugin %s update failed", plugin_name); diff --git a/src/dns/nm-dns-plugin.c b/src/dns/nm-dns-plugin.c index 740ff26bab..5805b7d858 100644 --- a/src/dns/nm-dns-plugin.c +++ b/src/dns/nm-dns-plugin.c @@ -77,14 +77,14 @@ G_DEFINE_TYPE_EXTENDED (NMDnsPlugin, nm_dns_plugin, G_TYPE_OBJECT, G_TYPE_FLAG_A gboolean nm_dns_plugin_update (NMDnsPlugin *self, - const NMDnsIPConfigData *const*configs, + const GPtrArray *configs, const NMGlobalDnsConfig *global_config, const char *hostname) { g_return_val_if_fail (NM_DNS_PLUGIN_GET_CLASS (self)->update != NULL, FALSE); return NM_DNS_PLUGIN_GET_CLASS (self)->update (self, - configs ?: NM_PTRARRAY_EMPTY (const NMDnsIPConfigData *), + configs, global_config, hostname); } diff --git a/src/dns/nm-dns-plugin.h b/src/dns/nm-dns-plugin.h index d71eb46b45..996695c0f7 100644 --- a/src/dns/nm-dns-plugin.h +++ b/src/dns/nm-dns-plugin.h @@ -50,7 +50,7 @@ typedef struct { * configuration. */ gboolean (*update) (NMDnsPlugin *self, - const NMDnsIPConfigData *const*configs, + const GPtrArray *configs, const NMGlobalDnsConfig *global_config, const char *hostname); @@ -80,7 +80,7 @@ gboolean nm_dns_plugin_is_caching (NMDnsPlugin *self); const char *nm_dns_plugin_get_name (NMDnsPlugin *self); gboolean nm_dns_plugin_update (NMDnsPlugin *self, - const NMDnsIPConfigData *const*configs, + const GPtrArray *configs, const NMGlobalDnsConfig *global_config, const char *hostname); diff --git a/src/dns/nm-dns-systemd-resolved.c b/src/dns/nm-dns-systemd-resolved.c index f49aed57da..fce1fef1ab 100644 --- a/src/dns/nm-dns-systemd-resolved.c +++ b/src/dns/nm-dns-systemd-resolved.c @@ -290,7 +290,7 @@ send_updates (NMDnsSystemdResolved *self) static gboolean update (NMDnsPlugin *plugin, - const NMDnsIPConfigData *const*configs, + const GPtrArray *configs, const NMGlobalDnsConfig *global_config, const char *hostname) { @@ -299,15 +299,15 @@ update (NMDnsPlugin *plugin, guint i; int prio, first_prio = 0; - for (i = 0; configs[i]; i++) { + for (i = 0; i < configs->len; i++) { gboolean skip = FALSE; - prio = nm_dns_ip_config_data_get_dns_priority (configs[i]); + prio = nm_dns_ip_config_data_get_dns_priority (configs->pdata[i]); if (i == 0) first_prio = prio; else if (first_prio < 0 && first_prio != prio) skip = TRUE; - add_interface_configuration (self, interfaces, configs[i], skip); + add_interface_configuration (self, interfaces, configs->pdata[i], skip); } free_pending_updates (self); diff --git a/src/dns/nm-dns-unbound.c b/src/dns/nm-dns-unbound.c index 7369505ec9..0b80055f1b 100644 --- a/src/dns/nm-dns-unbound.c +++ b/src/dns/nm-dns-unbound.c @@ -39,7 +39,7 @@ G_DEFINE_TYPE (NMDnsUnbound, nm_dns_unbound, NM_TYPE_DNS_PLUGIN) static gboolean update (NMDnsPlugin *plugin, - const NMDnsIPConfigData *const*configs, + const GPtrArray *configs, const NMGlobalDnsConfig *global_config, const char *hostname) {