diff --git a/src/core/dns/nm-dns-manager.c b/src/core/dns/nm-dns-manager.c index ec33c46427..59ef4a7de5 100644 --- a/src/core/dns/nm-dns-manager.c +++ b/src/core/dns/nm-dns-manager.c @@ -2799,7 +2799,11 @@ _get_config_variant(NMDnsManager *self) else g_ptr_array_set_size(array_domains, 0); - add_dns_domains(array_domains, ip_data->addr_family, ip_data->l3cd, TRUE, FALSE); + nm_l3_config_data_get_dns_domains(array_domains, + ip_data->addr_family, + ip_data->l3cd, + TRUE, + FALSE); if (array_domains->len) { g_variant_builder_add(&entry_builder, "{sv}", diff --git a/src/core/nm-l3-config-data.c b/src/core/nm-l3-config-data.c index 9e9066c3ed..610240957c 100644 --- a/src/core/nm-l3-config-data.c +++ b/src/core/nm-l3-config-data.c @@ -219,6 +219,43 @@ _garray_inaddr_clone(const GArray *src, int addr_family) return dst; } +void +nm_l3_config_data_get_dns_domains(GPtrArray *array, + int addr_family, + const NML3ConfigData *l3cd, + gboolean include_routing, + gboolean dup) +{ + const char *const *domains; + const char *const *searches; + guint num_domains; + guint num_searches; + guint i; + const char *str; + + domains = nm_l3_config_data_get_domains(l3cd, addr_family, &num_domains); + searches = nm_l3_config_data_get_searches(l3cd, addr_family, &num_searches); + + for (i = 0; i < num_searches; i++) { + str = searches[i]; + if (!include_routing && nm_domain_is_routing(str)) + continue; + if (!nm_domain_is_valid(nm_utils_parse_dns_domain(str, NULL), FALSE, TRUE)) + continue; + nm_utils_g_ptr_array_add_string_item(array, str, dup); + } + if (num_domains > 1 || num_searches == 0) { + for (i = 0; i < num_domains; i++) { + str = domains[i]; + if (!include_routing && nm_domain_is_routing(str)) + continue; + if (!nm_domain_is_valid(nm_utils_parse_dns_domain(str, NULL), FALSE, TRUE)) + continue; + nm_utils_g_ptr_array_add_string_item(array, str, dup); + } + } +} + static void _garray_inaddr_merge(GArray **p_dst, const GArray *src, int addr_family) { diff --git a/src/core/nm-l3-config-data.h b/src/core/nm-l3-config-data.h index b76e11f9b1..5311b24f4f 100644 --- a/src/core/nm-l3-config-data.h +++ b/src/core/nm-l3-config-data.h @@ -608,6 +608,12 @@ void nm_l3_config_data_set_allow_routes_without_address(NML3ConfigData *self, gboolean nm_l3_config_data_get_routed_dns(const NML3ConfigData *self, int addr_family); void nm_l3_config_data_set_routed_dns(NML3ConfigData *self, int addr_family, gboolean value); +void nm_l3_config_data_get_dns_domains(GPtrArray *array, + int addr_family, + const NML3ConfigData *l3cd, + gboolean include_routing, + gboolean dup); + NMProxyConfigMethod nm_l3_config_data_get_proxy_method(const NML3ConfigData *self); gboolean nm_l3_config_data_set_proxy_method(NML3ConfigData *self, NMProxyConfigMethod value);