diff options
| author | Michael Biebl <biebl@debian.org> | 2023-03-03 17:40:01 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2023-03-03 17:47:49 +0100 |
| commit | 557c2330c1499c44b21d8cee7ee980c7ecef1f40 (patch) | |
| tree | d057bfe1e4832645bcbb3f8bc45dfcd36bef8f46 | |
| parent | d43f8a6d8c5c49b67e88235a6dbc85c905e1cbb2 (diff) | |
dnsmasq: process both global and per-device configuration
Cherry-pick upstream patch to fix a regression introduced in 1.42 when using the dnsmasq DNS backend and a global DNS configuration. Closes: #1031891
3 files changed, 83 insertions, 0 deletions
diff --git a/debian/patches/dnsmasq-process-both-global-and-per-device-configuration.patch b/debian/patches/dnsmasq-process-both-global-and-per-device-configuration.patch new file mode 100644 index 00000000..0f0fdbc3 --- /dev/null +++ b/debian/patches/dnsmasq-process-both-global-and-per-device-configuration.patch @@ -0,0 +1,30 @@ +From: Beniamino Galvani <bgalvani@redhat.com> +Date: Thu, 2 Mar 2023 18:02:48 +0100 +Subject: 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]') +(cherry picked from commit 5c0a927e0fd983a963f49cf8dccba6a82c95ef94) +(cherry picked from commit 89888f85aa5c6f115d2dda1888b4e5ce0946c634) +--- + 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 8ae1bb9..05aeff4 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); + } diff --git a/debian/patches/man-update-documentation-about-global-DNS-configuration.patch b/debian/patches/man-update-documentation-about-global-DNS-configuration.patch new file mode 100644 index 00000000..d5e88bb1 --- /dev/null +++ b/debian/patches/man-update-documentation-about-global-DNS-configuration.patch @@ -0,0 +1,51 @@ +From: Beniamino Galvani <bgalvani@redhat.com> +Date: Thu, 2 Mar 2023 22:15:46 +0100 +Subject: 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]') +(cherry picked from commit f57a848da5aa1a18cdcec22e9564462dea68a53f) +(cherry picked from commit 82134e4f832ff68e5fd8f9968cae32c6aed82ea6) +--- + 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 2c1fc85..0dcf805 100644 +--- a/man/NetworkManager.conf.xml ++++ b/man/NetworkManager.conf.xml +@@ -1453,8 +1453,8 @@ managed=1 + + <refsect1> + <title><literal>global-dns</literal> section</title> +- <para>This section specifies global DNS settings that override +- connection-specific configuration.</para> ++ <para>This section specifies DNS settings that are applied ++ globally, in addition to connection-specific ones.</para> + <para> + <variablelist> + <varlistentry> +@@ -1482,10 +1482,15 @@ managed=1 + <para>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. + </para> + <para> + <variablelist> diff --git a/debian/patches/series b/debian/patches/series index a2d7e06d..17887c89 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,3 @@ Force-online-state-with-unmanaged-devices.patch +dnsmasq-process-both-global-and-per-device-configuration.patch +man-update-documentation-about-global-DNS-configuration.patch |