dns: add @dup argument to add_dns_domains() and add_string_item()

Add a @dup argument that tells whether the new item should be
duplicated.

(cherry picked from commit b4db0e8362)
This commit is contained in:
Beniamino Galvani 2018-01-10 11:22:11 +01:00
parent 0daa4db81b
commit f43febc2ab

View file

@ -350,7 +350,7 @@ _ip_config_lst_head (NMDnsManager *self)
/*****************************************************************************/ /*****************************************************************************/
static void static void
add_string_item (GPtrArray *array, const char *str) add_string_item (GPtrArray *array, const char *str, gboolean dup)
{ {
int i; int i;
@ -366,7 +366,7 @@ add_string_item (GPtrArray *array, const char *str)
} }
/* No dupes, add the new item */ /* No dupes, add the new item */
g_ptr_array_add (array, g_strdup (str)); g_ptr_array_add (array, dup ? g_strdup (str): (gpointer) str);
} }
static void static void
@ -377,7 +377,7 @@ add_dns_option_item (GPtrArray *array, const char *str)
} }
static void static void
add_dns_domains (GPtrArray *array, const NMIPConfig *ip_config) add_dns_domains (GPtrArray *array, const NMIPConfig *ip_config, gboolean dup)
{ {
guint num_domains, num_searches, i; guint num_domains, num_searches, i;
const char *str; const char *str;
@ -388,13 +388,13 @@ add_dns_domains (GPtrArray *array, const NMIPConfig *ip_config)
for (i = 0; i < num_searches; i++) { for (i = 0; i < num_searches; i++) {
str = nm_ip_config_get_search (ip_config, i); str = nm_ip_config_get_search (ip_config, i);
if (domain_is_valid (str, FALSE)) if (domain_is_valid (str, FALSE))
add_string_item (array, str); add_string_item (array, str, dup);
} }
if (num_domains > 1 || !num_searches) { if (num_domains > 1 || !num_searches) {
for (i = 0; i < num_domains; i++) { for (i = 0; i < num_domains; i++) {
str = nm_ip_config_get_domain (ip_config, i); str = nm_ip_config_get_domain (ip_config, i);
if (domain_is_valid (str, FALSE)) if (domain_is_valid (str, FALSE))
add_string_item (array, str); add_string_item (array, str, dup);
} }
} }
} }
@ -436,10 +436,10 @@ merge_one_ip_config (NMResolvConfData *rc,
} }
} }
add_string_item (rc->nameservers, buf); add_string_item (rc->nameservers, buf, TRUE);
} }
add_dns_domains (rc->searches, ip_config); add_dns_domains (rc->searches, ip_config, TRUE);
num = nm_ip_config_get_num_dns_options (ip_config); num = nm_ip_config_get_num_dns_options (ip_config);
for (i = 0; i < num; i++) { for (i = 0; i < num; i++) {
@ -454,7 +454,8 @@ merge_one_ip_config (NMResolvConfData *rc,
num = nm_ip4_config_get_num_nis_servers (ip4_config); num = nm_ip4_config_get_num_nis_servers (ip4_config);
for (i = 0; i < num; i++) { for (i = 0; i < num; i++) {
add_string_item (rc->nis_servers, add_string_item (rc->nis_servers,
nm_utils_inet4_ntop (nm_ip4_config_get_nis_server (ip4_config, i), buf)); nm_utils_inet4_ntop (nm_ip4_config_get_nis_server (ip4_config, i), buf),
TRUE);
} }
if (nm_ip4_config_get_nis_domain (ip4_config)) { if (nm_ip4_config_get_nis_domain (ip4_config)) {
@ -966,17 +967,17 @@ merge_global_dns_config (NMResolvConfData *rc, NMGlobalDnsConfig *global_conf)
for (i = 0; searches && searches[i]; i++) { for (i = 0; searches && searches[i]; i++) {
if (domain_is_valid (searches[i], FALSE)) if (domain_is_valid (searches[i], FALSE))
add_string_item (rc->searches, searches[i]); add_string_item (rc->searches, searches[i], TRUE);
} }
for (i = 0; options && options[i]; i++) for (i = 0; options && options[i]; i++)
add_string_item (rc->options, options[i]); add_string_item (rc->options, options[i], TRUE);
default_domain = nm_global_dns_config_lookup_domain (global_conf, "*"); default_domain = nm_global_dns_config_lookup_domain (global_conf, "*");
g_assert (default_domain); g_assert (default_domain);
servers = nm_global_dns_domain_get_servers (default_domain); servers = nm_global_dns_domain_get_servers (default_domain);
for (i = 0; servers && servers[i]; i++) for (i = 0; servers && servers[i]; i++)
add_string_item (rc->nameservers, servers[i]); add_string_item (rc->nameservers, servers[i], TRUE);
return TRUE; return TRUE;
} }
@ -1089,9 +1090,9 @@ _collect_resolv_conf_data (NMDnsManager *self,
&& !nm_utils_ipaddr_valid (AF_UNSPEC, priv->hostname)) { && !nm_utils_ipaddr_valid (AF_UNSPEC, priv->hostname)) {
hostdomain++; hostdomain++;
if (domain_is_valid (hostdomain, TRUE)) if (domain_is_valid (hostdomain, TRUE))
add_string_item (rc.searches, hostdomain); add_string_item (rc.searches, hostdomain, TRUE);
else if (domain_is_valid (priv->hostname, TRUE)) else if (domain_is_valid (priv->hostname, TRUE))
add_string_item (rc.searches, priv->hostname); add_string_item (rc.searches, priv->hostname, TRUE);
} }
} }