[pve-devel] [PATCH container] fix #7156: setup: separate dns list with semicolons
Maximiliano Sandoval
m.sandoval at proxmox.com
Thu Dec 18 09:21:44 CET 2025
Thomas Lamprecht <t.lamprecht at proxmox.com> writes:
> On 17/12/2025 16:06, Maximiliano Sandoval wrote:
>> Network manager uses GLib's key file format [1]. As per `man 5
>> nm-settings-keyfile`:
>>
>>> lists are separated by character ;
>
> this is just an example though, marked by the "etc" you omitted...
>
> [1] you linked yourself actually spells out:
>
> "Lists are separated by a separator character, typically ; or ,.
> To use the list separator character in a value in a list, it has
> to be escaped by prefixing it with a backslash."
Yes, but the quote is from the nm-settings man page. GLib's .ini format
allows to decide which separator to use **globally**, see [2], it does
not allow for some lists will be handled with one separator while others
with another, not without out-of-tree parsing at least. There are some
exceptions in nm-settings though, but they are mentioned in the man page
and are not handled as lists, namely:
```
Also, some lists of complex values (addresses, routes, routing-rules),
instead of using a semicolon separated list, use one key-value pair per
list element,
```
[2] https://docs.gtk.org/glib/method.KeyFile.set_list_separator.html
>
> And the nm-settings-keyfile man page has tons of usages of comma
> as separator. Please verify this.
>
>>
>> additionally, table 6 contains an example:
>>
>>> Example: dns=1.2.3.4;8.8.8.8;8.8.4.4;
>>
>> [1] https://docs.gtk.org/glib/struct.KeyFile.html
>
>
>
>>
>> Signed-off-by: Maximiliano Sandoval <m.sandoval at proxmox.com>
>> ---
>>
>> Running `nmcli` with this patch on a new rockylinux 10 container results in
>>
>> ```
>> DNS configuration:
>> servers: 10.10.10.2 10.10.10.22
>> domains: testinstall
>> interface: eth0
>> ```
>>
>> and
>> ```
>> $ grep 'dns=' /etc/NetworkManager/system-connections/eth0.nmconnection
>> dns=10.10.10.2;10.10.10.22
>> ```
>>
>> and domain resolution seems to works as expected.
>>
>>
>> src/PVE/LXC/Setup/CentOS.pm | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/PVE/LXC/Setup/CentOS.pm b/src/PVE/LXC/Setup/CentOS.pm
>> index 0826977..7bccca2 100644
>> --- a/src/PVE/LXC/Setup/CentOS.pm
>> +++ b/src/PVE/LXC/Setup/CentOS.pm
>> @@ -244,7 +244,7 @@ sub setup_network_with_networkmanager {
>> }
>> }
>> if (@name_servers_v4) {
>> - $data .= "dns=" . join(',', @name_servers_v4) . "\n";
>> + $data .= "dns=" . join(';', @name_servers_v4) . "\n";
>> $data .= "dns-search=" . join(' ', PVE::Tools::split_list($searchdomains)) . "\n"
>> if $searchdomains;
>> }
>> @@ -270,7 +270,7 @@ sub setup_network_with_networkmanager {
>> }
>> }
>> if (@name_servers_v6) {
>> - $data .= "dns=" . join(',', @name_servers_v6) . "\n";
>> + $data .= "dns=" . join(';', @name_servers_v6) . "\n";
>> $data .= "dns-search=" . join(' ', PVE::Tools::split_list($searchdomains)) . "\n"
>> if $searchdomains;
>> }
--
Maximiliano
More information about the pve-devel
mailing list