From 5c0a927e0fd983a963f49cf8dccba6a82c95ef94 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Thu, 2 Mar 2023 18:02:48 +0100 Subject: [PATCH 1/2] dnsmasq: process both global and per-device configuration The global configuration now can be valid when there are no global domains defined. The dnsmasq backend must process it and then, if there is no global default domain, also process the per-connection settings. Fixes: 1f0d1d78d2a2 ('dns-manager: always apply options from [global-dns]') --- src/core/dns/nm-dns-dnsmasq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/dns/nm-dns-dnsmasq.c b/src/core/dns/nm-dns-dnsmasq.c index 8ae1bb961..05aeff492 100644 --- a/src/core/dns/nm-dns-dnsmasq.c +++ b/src/core/dns/nm-dns-dnsmasq.c @@ -922,7 +922,8 @@ create_update_args(NMDnsDnsmasq *self, if (global_config) add_global_config(self, &servers, global_config); - else { + + if (!global_config || !nm_global_dns_config_lookup_domain(global_config, "*")) { c_list_for_each_entry (ip_data, ip_data_lst_head, ip_data_lst) add_ip_config(self, &servers, ip_data); } From f57a848da5aa1a18cdcec22e9564462dea68a53f Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Thu, 2 Mar 2023 22:15:46 +0100 Subject: [PATCH 2/2] man: update documentation about global DNS configuration Now the settings in the [global-dns] section are used *in addition* to connection-specific ones. Only the global domains sections, when valid, override connection settings. Update the man page to clarify that. Fixes: 1f0d1d78d2a2 ('dns-manager: always apply options from [global-dns]') --- man/NetworkManager.conf.xml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml index 2c1fc8521..0dcf805d5 100644 --- a/man/NetworkManager.conf.xml +++ b/man/NetworkManager.conf.xml @@ -1453,8 +1453,8 @@ managed=1 <literal>global-dns</literal> section - This section specifies global DNS settings that override - connection-specific configuration. + This section specifies DNS settings that are applied + globally, in addition to connection-specific ones. @@ -1482,10 +1482,15 @@ managed=1 Sections with a name starting with the "global-dns-domain-" prefix allow to define global DNS configuration for specific domains. The part of section name after "global-dns-domain-" - specifies the domain name a section applies to. More specific - domains have the precedence over less specific ones and the - default domain is represented by the wildcard "*". A default - domain section is mandatory. + specifies the domain name a section applies to (for example, a + section could be named "global-dns-domain-foobar.com"). More + specific domains have the precedence over less specific ones and + the default domain is represented by the wildcard "*". + + To be valid, global DNS domains must include a section for the + default domain "*". When the global DNS domains are valid, the + name servers and domains defined globally override the ones from + active connections.