]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
network: Propagate DNS forwarder port into dnsmasq config master
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 18 Dec 2025 08:59:31 +0000 (09:59 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 19 Dec 2025 08:49:31 +0000 (09:49 +0100)
If a DNS forwarder has port specified then we ought to format it
into dnsmasq config. The correct syntax is

  server=/domain/ip-address#port

Closes: https://gitlab.com/libvirt/libvirt/-/issues/833
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Laine Stump <laine@redhat.com>
src/network/bridge_driver.c
tests/networkxml2confdata/nat-network-dns-forwarders.conf
tests/networkxml2confdata/nat-network-dns-forwarders.xml

index 34b655e81665289c70970a5af0a44c7fefe8feea..8b5dbb3ab76304386961f208439b64c7ffd66128 100644 (file)
@@ -1212,10 +1212,14 @@ networkDnsmasqConfContents(virNetworkObj *obj,
                 virBufferAsprintf(&configbuf, "/%s/", fwd->domain);
             if (VIR_SOCKET_ADDR_VALID(&fwd->addr)) {
                 g_autofree char *addr = virSocketAddrFormat(&fwd->addr);
+                int port = virSocketAddrGetPort(&fwd->addr);
 
                 if (!addr)
                     return -1;
-                virBufferAsprintf(&configbuf, "%s\n", addr);
+                virBufferAddStr(&configbuf, addr);
+                if (port > 0)
+                    virBufferAsprintf(&configbuf, "#%d", port);
+                virBufferAddChar(&configbuf, '\n');
                 if (!fwd->domain)
                     addNoResolv = true;
             } else {
index 1b0c94c3fba609b2fad9205800979b6592926474..fcaf7e70e8b52e9ead0df822dd2c5edc5c9f6a6a 100644 (file)
@@ -8,6 +8,7 @@ strict-order
 server=8.8.8.8
 server=8.8.4.4
 server=/example.com/192.168.1.1
+server=/example2.com/192.168.2.1#1234
 server=/www.example.com/#
 no-resolv
 except-interface=lo
index 5d4f3fa6977e6660672e1d076acb3a8690509eb7..d84576b1b3c9b65bafc59267d8bfe20d274971a6 100644 (file)
@@ -7,6 +7,7 @@
     <forwarder addr='8.8.8.8'/>
     <forwarder addr='8.8.4.4'/>
     <forwarder domain='example.com' addr='192.168.1.1'/>
+    <forwarder domain='example2.com' addr='192.168.2.1' port='1234'/>
     <forwarder domain='www.example.com'/>
   </dns>
   <ip address='192.168.122.1' netmask='255.255.255.0'>