From: Michal Privoznik <mprivozn@redhat.com>
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>
---
src/network/bridge_driver.c | 6 +++++-
tests/networkxml2confdata/nat-network-dns-forwarders.conf | 2 +-
tests/networkxml2confdata/nat-network-dns-forwarders.xml | 2 +-
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 34b655e816..8b5dbb3ab7 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -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 {
diff --git a/tests/networkxml2confdata/nat-network-dns-forwarders.conf b/tests/networkxml2confdata/nat-network-dns-forwarders.conf
index 1b0c94c3fb..85d6c6ceb9 100644
--- a/tests/networkxml2confdata/nat-network-dns-forwarders.conf
+++ b/tests/networkxml2confdata/nat-network-dns-forwarders.conf
@@ -7,7 +7,7 @@
strict-order
server=8.8.8.8
server=8.8.4.4
-server=/example.com/192.168.1.1
+server=/example.com/192.168.1.1#1234
server=/www.example.com/#
no-resolv
except-interface=lo
diff --git a/tests/networkxml2confdata/nat-network-dns-forwarders.xml b/tests/networkxml2confdata/nat-network-dns-forwarders.xml
index 5d4f3fa697..98d9660b14 100644
--- a/tests/networkxml2confdata/nat-network-dns-forwarders.xml
+++ b/tests/networkxml2confdata/nat-network-dns-forwarders.xml
@@ -6,7 +6,7 @@
<dns>
<forwarder addr='8.8.8.8'/>
<forwarder addr='8.8.4.4'/>
- <forwarder domain='example.com' addr='192.168.1.1'/>
+ <forwarder domain='example.com' addr='192.168.1.1' port='1234'/>
<forwarder domain='www.example.com'/>
</dns>
<ip address='192.168.122.1' netmask='255.255.255.0'>
--
2.51.2
On 12/18/25 5:00 AM, Michal Privoznik via Devel wrote:
> From: Michal Privoznik <mprivozn@redhat.com>
>
> 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>
> ---
> src/network/bridge_driver.c | 6 +++++-
> tests/networkxml2confdata/nat-network-dns-forwarders.conf | 2 +-
> tests/networkxml2confdata/nat-network-dns-forwarders.xml | 2 +-
> 3 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
> index 34b655e816..8b5dbb3ab7 100644
> --- a/src/network/bridge_driver.c
> +++ b/src/network/bridge_driver.c
> @@ -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 {
> diff --git a/tests/networkxml2confdata/nat-network-dns-forwarders.conf b/tests/networkxml2confdata/nat-network-dns-forwarders.conf
> index 1b0c94c3fb..85d6c6ceb9 100644
> --- a/tests/networkxml2confdata/nat-network-dns-forwarders.conf
> +++ b/tests/networkxml2confdata/nat-network-dns-forwarders.conf
> @@ -7,7 +7,7 @@
> strict-order
> server=8.8.8.8
> server=8.8.4.4
> -server=/example.com/192.168.1.1
> +server=/example.com/192.168.1.1#1234
> server=/www.example.com/#
> no-resolv
> except-interface=lo
> diff --git a/tests/networkxml2confdata/nat-network-dns-forwarders.xml b/tests/networkxml2confdata/nat-network-dns-forwarders.xml
> index 5d4f3fa697..98d9660b14 100644
> --- a/tests/networkxml2confdata/nat-network-dns-forwarders.xml
> +++ b/tests/networkxml2confdata/nat-network-dns-forwarders.xml
> @@ -6,7 +6,7 @@
> <dns>
> <forwarder addr='8.8.8.8'/>
> <forwarder addr='8.8.4.4'/>
> - <forwarder domain='example.com' addr='192.168.1.1'/>
> + <forwarder domain='example.com' addr='192.168.1.1' port='1234'/>
> <forwarder domain='www.example.com'/>
The one issue with this is that by changing an existing entry rather
than adding a new one, you've eliminated the test case that checks for
proper operation when domain & addr are specified, but port is not.
Otherwise
Reviewed-by: Laine Stump <laine@redhat.com>
> </dns>
> <ip address='192.168.122.1' netmask='255.255.255.0'>
© 2016 - 2026 Red Hat, Inc.