From nobody Thu Jan 8 12:09:15 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1766052119; cv=none; d=zohomail.com; s=zohoarc; b=mgqJsGb5Auwf+5mLQAMQkC2BAF3lXvgSOBZ2sMCSidJP0mYQUbhpWJNA//fo3dlTOV9dyM8PzFeTIdUElwRSK113TAKyENgHv2BU7faFAd+ShoXUqSoA6WbUEImsHLIjxTRfilHWiUwZmE6vOhhYfK7lj7h0t2Af1N7wxx4EtxQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766052119; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=036aQX+ZvafNWtcSwGptl1C6XIYFDW2K3PpqfcVk6vA=; b=Eg3SXuIiEZiFHdVBTrrSbtPohhA0CmcNRsw6Dgfbkg6Bumq9jJYWdsc8iDDGEeXXs0abPxRv+wcaFTI5XEqmBUZzdecpfocQvaDdaFm2Y8VP0oVTOzYT/9zciRFL+4CIRmj9UVWxZpJ7Sk4MpG5jZoaiDmqrq34LFQoymNageIg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1766052119117738.3018619992255; Thu, 18 Dec 2025 02:01:59 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id CDDFA41834; Thu, 18 Dec 2025 05:01:57 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 6AD1D41BB4; Thu, 18 Dec 2025 05:00:41 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9A0623F33A; Thu, 18 Dec 2025 05:00:17 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id B1A363FAB1 for ; Thu, 18 Dec 2025 05:00:16 -0500 (EST) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-528-Y6G1AcF7PfiEr75LGUsgag-1; Thu, 18 Dec 2025 05:00:14 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D20DE1801211 for ; Thu, 18 Dec 2025 10:00:13 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 3AFD019560B4 for ; Thu, 18 Dec 2025 10:00:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766052016; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=036aQX+ZvafNWtcSwGptl1C6XIYFDW2K3PpqfcVk6vA=; b=BeYvLkTHft3a/m4q59IxgRqbFPiMr8dI0Sc5v9IS+pasfIffR6gDU4cdTsMB+/BVHOcoFM RqXGyLeZE0MlGKH+yP+NAHAnRqpqzM48u6dpGnlTCjbrZHCraA/xiUDlvnTyH9D6vWwHvZ DOg+b/OrtPqjczSBksfobmsDOS3CwxE= X-MC-Unique: Y6G1AcF7PfiEr75LGUsgag-1 X-Mimecast-MFC-AGG-ID: Y6G1AcF7PfiEr75LGUsgag_1766052013 To: devel@lists.libvirt.org Subject: [PATCH 1/2] network: Introduce port for DNS forwarder Date: Thu, 18 Dec 2025 11:00:09 +0100 Message-ID: <3118b3aefbe8362b48ad3bf2315aef799602f7e9.1766051996.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Lq9hsGyokJVzCQj6BIvEP3wIeY-OoKf3m6YPeXERcXk_1766052013 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: I2E6ASOOA7JLREEMCGODKWEZZEOKQLYY X-Message-ID-Hash: I2E6ASOOA7JLREEMCGODKWEZZEOKQLYY X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1766052122204158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik In the section of network configuration users can set up forwarding of DNS requests to custom DNS servers. These are specified using 'addr' attribute. But configuring port wasn't possible, until now. New 'port' attribute is introduced, which allows overriding the default DNS port for given address. Signed-off-by: Michal Privoznik Reviewed-by: Laine Stump --- docs/formatnetwork.rst | 8 +++-- src/conf/network_conf.c | 36 +++++++++++++++---- src/conf/schemas/network.rng | 5 +++ .../nat-network-dns-forwarders.xml | 2 +- .../nat-network-dns-forwarders.xml | 2 +- 5 files changed, 42 insertions(+), 11 deletions(-) diff --git a/docs/formatnetwork.rst b/docs/formatnetwork.rst index 6694a145af..1dd336211d 100644 --- a/docs/formatnetwork.rst +++ b/docs/formatnetwork.rst @@ -695,7 +695,7 @@ of 'route' or 'nat'. - + @@ -762,8 +762,10 @@ of 'route' or 'nat'. will be resolved locally (or via the host's standard DNS forwarding = if they can't be resolved locally). If an ``addr`` is specified by itse= lf, then all DNS requests to the network's DNS server will be forwarded = to the - DNS server at that address with no exceptions. ``addr`` :since:`Since - 1.1.3` , ``domain`` :since:`Since 2.2.0`. + DNS server at that address with no exceptions. Optionally, ``port`` + attribute can be specified among with ``addr`` to specify a nonstand= ard + port of the DNS server. ``addr`` :since:`Since 1.1.3`, ``domain`` + :since:`Since 2.2.0`, ``port`` :since:`Since 12.0.0`. ``txt`` A ``dns`` element can have 0 or more ``txt`` elements. Each txt elem= ent defines a DNS TXT record and has two attributes, both required: a na= me diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 8cd26de72f..fe44fd28c3 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -901,12 +901,32 @@ virNetworkDNSDefParseXML(const char *networkName, for (i =3D 0; i < nfwds; i++) { g_autofree char *addr =3D virXMLPropString(fwdNodes[i], "addr"= ); =20 - if (addr && virSocketAddrParse(&def->forwarders[i].addr, - addr, AF_UNSPEC) < 0) { - virReportError(VIR_ERR_XML_ERROR, - _("Invalid forwarder IP address '%1$s' in n= etwork '%2$s'"), - addr, networkName); - return -1; + if (addr) { + int port =3D -1; + int rc; + + if (virSocketAddrParse(&def->forwarders[i].addr, + addr, AF_UNSPEC) < 0) { + virReportError(VIR_ERR_XML_ERROR, + _("Invalid forwarder IP address '%1$s' = in network '%2$s'"), + addr, networkName); + return -1; + } + + if ((rc =3D virXMLPropInt(fwdNodes[i], "port", 10, + VIR_XML_PROP_NONZERO | + VIR_XML_PROP_NONNEGATIVE, + &port, -1)) < 0) { + return -1; + } else if (rc > 0) { + if (port > 65535) { + virReportError(VIR_ERR_INVALID_ARG, + _("port '%1$d' out of range"), port= ); + return -1; + } + + virSocketAddrSetPort(&def->forwarders[i].addr, port); + } } def->forwarders[i].domain =3D virXMLPropString(fwdNodes[i], "d= omain"); if (!(addr || def->forwarders[i].domain)) { @@ -1986,11 +2006,15 @@ virNetworkDNSDefFormat(virBuffer *buf, } if (VIR_SOCKET_ADDR_VALID(&def->forwarders[i].addr)) { g_autofree char *addr =3D virSocketAddrFormat(&def->forwarders= [i].addr); + int port =3D virSocketAddrGetPort(&def->forwarders[i].addr); =20 if (!addr) return -1; =20 virBufferAsprintf(buf, " addr=3D'%s'", addr); + + if (port > 0) + virBufferAsprintf(buf, " port=3D'%d'", port); } virBufferAddLit(buf, "/>\n"); } diff --git a/src/conf/schemas/network.rng b/src/conf/schemas/network.rng index b7c8551fad..0d293af93b 100644 --- a/src/conf/schemas/network.rng +++ b/src/conf/schemas/network.rng @@ -287,6 +287,11 @@ + + + + + diff --git a/tests/networkxml2xmlin/nat-network-dns-forwarders.xml b/tests/= networkxml2xmlin/nat-network-dns-forwarders.xml index 426dd45cd9..dd22b686ab 100644 --- a/tests/networkxml2xmlin/nat-network-dns-forwarders.xml +++ b/tests/networkxml2xmlin/nat-network-dns-forwarders.xml @@ -6,7 +6,7 @@ - + diff --git a/tests/networkxml2xmlout/nat-network-dns-forwarders.xml b/tests= /networkxml2xmlout/nat-network-dns-forwarders.xml index c05ad5514d..e03912750c 100644 --- a/tests/networkxml2xmlout/nat-network-dns-forwarders.xml +++ b/tests/networkxml2xmlout/nat-network-dns-forwarders.xml @@ -8,7 +8,7 @@ - + --=20 2.51.2 From nobody Thu Jan 8 12:09:15 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1766052158; cv=none; d=zohomail.com; s=zohoarc; b=RLKu5cb1aXW7wcv+lBu0SIBBuLkg13WebtXJP6I8zBX4j1+dqlOPB0Njgf0Ulo9NXgm7XFr6q507NaGl/fLrxFq/IRXeF8uD0izZt/R2fyU9u9zRcO/q99ZPpLhRVv1DoWjCp/sWg930j9W/h0UtNvmpkCx7Xn5leC4bjn/iJGs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766052158; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=lAc9blctT1IrM2KMd/uWLszSuI55exbmjhvsH5EVQnw=; b=JIwju6GokOPvsHzX27OFx+MFi6A5lKmn0aioa1ZCGQP+sNaf6XW6ogf9bkZzmAul5PyLtjIy5zyhqLM4i0vSKboGcBQeHYz2m6Qk2+vDRYZkQC3QhswgbSbskWlobSpR+0AA3aXhtPP0PREZjGk3vdKVRQRCVZh7PRo5nqubJYk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1766052158018811.5862213299959; Thu, 18 Dec 2025 02:02:38 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id F1F904189B; Thu, 18 Dec 2025 05:02:36 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id DA2A741CA0; Thu, 18 Dec 2025 05:00:49 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 945823FA6C; Thu, 18 Dec 2025 05:00:19 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 5B8343F96A for ; Thu, 18 Dec 2025 05:00:18 -0500 (EST) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-536--M7Xsz25Nuq9KbLxYGDbPw-1; Thu, 18 Dec 2025 05:00:15 -0500 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E5D341800451 for ; Thu, 18 Dec 2025 10:00:14 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4EBFD19560B4 for ; Thu, 18 Dec 2025 10:00:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766052018; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lAc9blctT1IrM2KMd/uWLszSuI55exbmjhvsH5EVQnw=; b=Pw1naHi5ntf/Wxkh54R3c9tp20UiiRLom2LWyZkjYAyDDKWmeKcvYmjK6i74Qk5lU1CBrh lDBWaLlO8jafWGPQfUtqo0U1wfJ7Jiw4yvnP6STc982rspIzIOHjnMoY8kpSYnZgYBum8u nYm8PvGF/ZcZlvZdqZ+hVYPTQLDuNDA= X-MC-Unique: -M7Xsz25Nuq9KbLxYGDbPw-1 X-Mimecast-MFC-AGG-ID: -M7Xsz25Nuq9KbLxYGDbPw_1766052015 To: devel@lists.libvirt.org Subject: [PATCH 2/2] network: Propagate DNS forwarder port into dnsmasq config Date: Thu, 18 Dec 2025 11:00:10 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: XkOcNWrFJW8-QVRlDlqwYsSLLGoCltCavO6xXPPVXQA_1766052015 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: KNDTFSFYLDAFNPWZ44NBIM7Z6KQ6DKB3 X-Message-ID-Hash: KNDTFSFYLDAFNPWZ44NBIM7Z6KQ6DKB3 X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1766052160016158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik If a DNS forwarder has port specified then we ought to format it into dnsmasq config. The correct syntax is server=3D/domain/ip-address#port Closes: https://gitlab.com/libvirt/libvirt/-/issues/833 Signed-off-by: Michal Privoznik Reviewed-by: Laine Stump --- 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 =3D virSocketAddrFormat(&fwd->addr); + int port =3D virSocketAddrGetPort(&fwd->addr); =20 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 =3D true; } else { diff --git a/tests/networkxml2confdata/nat-network-dns-forwarders.conf b/te= sts/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=3D8.8.8.8 server=3D8.8.4.4 -server=3D/example.com/192.168.1.1 +server=3D/example.com/192.168.1.1#1234 server=3D/www.example.com/# no-resolv except-interface=3Dlo diff --git a/tests/networkxml2confdata/nat-network-dns-forwarders.xml b/tes= ts/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 @@ - + --=20 2.51.2