dns: Introduce nm_l3_config_data_get_dns_domains function

nm_l3_config_data_get_dns_domains function gets both
domains and searches of NML3ConfigData structure
This commit is contained in:
Tomas Korbar 2026-03-23 12:51:46 +01:00
parent bef448a93e
commit ca389ce017
3 changed files with 48 additions and 1 deletions

View file

@ -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}",

View file

@ -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)
{

View file

@ -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);