mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-20 03:30:09 +01:00
core: dns: show in D-Bus if [global-dns] is defined but empty
Clients like nmstate needs to know if the [global-dns] section is defined or not, so they know if DNS configs from connections are relevant or not. Expose it in D-Bus by always exposing "searches" and "options" if it's defined, maybe as empty lists.
This commit is contained in:
parent
1cba0a3cca
commit
7fb4724efa
1 changed files with 14 additions and 4 deletions
|
|
@ -53,7 +53,6 @@ struct _NMGlobalDnsConfig {
|
|||
char *cert_authority;
|
||||
NMDnsResolveMode resolve_mode;
|
||||
gboolean internal;
|
||||
gboolean has_global_dns;
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
@ -947,7 +946,7 @@ nm_global_dns_has_global_dns_section(const NMGlobalDnsConfig *dns_config)
|
|||
{
|
||||
g_return_val_if_fail(dns_config, FALSE);
|
||||
|
||||
return dns_config->has_global_dns;
|
||||
return dns_config->searches != NULL || dns_config->options != NULL;
|
||||
}
|
||||
|
||||
const char *const *
|
||||
|
|
@ -1245,6 +1244,7 @@ load_global_dns(GKeyFile *keyfile, gboolean internal)
|
|||
gs_free char *cert_authority = NULL;
|
||||
gs_free char *resolve_mode = NULL;
|
||||
NMDnsResolveMode parsed_resolve_mode;
|
||||
gboolean has_global_dns_section;
|
||||
|
||||
if (internal) {
|
||||
group = NM_CONFIG_KEYFILE_GROUP_INTERN_GLOBAL_DNS;
|
||||
|
|
@ -1397,9 +1397,19 @@ load_global_dns(GKeyFile *keyfile, gboolean internal)
|
|||
|
||||
/* Defining [global-dns-domain-*] implies defining [global-dns] too (maybe empty) */
|
||||
if (default_found)
|
||||
dns_config->has_global_dns = TRUE;
|
||||
has_global_dns_section = TRUE;
|
||||
else
|
||||
dns_config->has_global_dns = g_key_file_has_group(keyfile, group);
|
||||
has_global_dns_section = g_key_file_has_group(keyfile, group);
|
||||
|
||||
/* If there exist a [global-dns] section, always initialize "searches" and "options" so
|
||||
* they appear in D-Bus. Clients can use this to know if it's defined, so they can know
|
||||
* if DNS configs from connections are relevant or not. */
|
||||
if (has_global_dns_section) {
|
||||
if (!dns_config->searches)
|
||||
dns_config->searches = nm_strv_empty_new();
|
||||
if (!dns_config->options)
|
||||
dns_config->options = nm_strv_empty_new();
|
||||
}
|
||||
|
||||
dns_config->internal = internal;
|
||||
global_dns_config_seal_domains(dns_config);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue