From nobody Fri Oct 18 06:15:14 2024 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; 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=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1720538675349991.9423989046626; Tue, 9 Jul 2024 08:24:35 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 37C7B1285; Tue, 9 Jul 2024 11:24:34 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 5189312D7; Tue, 9 Jul 2024 11:24:09 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 91273CE3; Tue, 9 Jul 2024 11:24:04 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 5E96C11D5 for ; Tue, 9 Jul 2024 11:23:44 -0400 (EDT) Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-464-TXS74CzgN2S_Zmgf0FmjQg-1; Tue, 09 Jul 2024 11:23:42 -0400 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-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8A53319560AA for ; Tue, 9 Jul 2024 15:23:41 +0000 (UTC) Received: from ajulis-thinkpadt14gen4.remote.csb (unknown [10.43.2.246]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B00F619560AE for ; Tue, 9 Jul 2024 15:23:40 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1720538624; 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; bh=bPcGR819x9N2GTmzScN57ltxomXVDuYoyFxMoT7HX7c=; b=Eky35AMMTg79rdiyFdv7Mq+XP5ldslzeH4m9lhN7EvMryVGPtFT4KrosBNoAUf00gojhTM 4pKHEHvezdFpNREvmOT6wkCUZqNJ5w6IryA6yFQNsUiVfV7P2dDe5a/U+LHcbrtlhzMSsJ wZl4Ypff+f4tRfOR0v17cqfzsoj8z5E= X-MC-Unique: TXS74CzgN2S_Zmgf0FmjQg-1 From: Adam Julis To: devel@lists.libvirt.org Subject: [PATCH] network: allow "modify" option for DNS-Txt records Date: Tue, 9 Jul 2024 17:23:31 +0200 Message-ID: <9d1913bed08ac99a72e246b61268d9aa37214e27.1720538548.git.ajulis@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 4LKRYI2M5QLEKYVJDCHYKNNXD6LV7E2S X-Message-ID-Hash: 4LKRYI2M5QLEKYVJDCHYKNNXD6LV7E2S X-MailFrom: ajulis@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1720538693272116600 Content-Type: text/plain; charset="utf-8"; x-default="true" The "modify" command allows to replace an existing record (its text value). The primary key is the name of the record. If duplicity or missing record detected, throw error. Tests in networkxml2xmlupdatetest.c contain replacements of an existing DNS-text record and failure due to non-existing record. Resolves: https://gitlab.com/libvirt/libvirt/-/issues/639 Signed-off-by: Adam Julis Reviewed-by: Michal Privoznik --- src/conf/network_conf.c | 18 ++++++++----- .../dns-txt-record-modify-fail.xml | 1 + .../dns-txt-record-modify-success.xml | 1 + .../nat-network-dns-txt-modify-ok.xml | 26 +++++++++++++++++++ tests/networkxml2xmlupdatetest.c | 9 +++++++ 5 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 tests/networkxml2xmlupdatein/dns-txt-record-modify-fail= .xml create mode 100644 tests/networkxml2xmlupdatein/dns-txt-record-modify-succ= ess.xml create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-txt-modif= y-ok.xml diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index fc387f9566..dd362b6ab2 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -3351,12 +3351,6 @@ virNetworkDefUpdateDNSTxt(virNetworkDef *def, bool isAdd =3D (command =3D=3D VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST || command =3D=3D VIR_NETWORK_UPDATE_COMMAND_ADD_LAST); =20 - if (command =3D=3D VIR_NETWORK_UPDATE_COMMAND_MODIFY) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", - _("DNS TXT records cannot be modified, only added o= r deleted")); - goto cleanup; - } - if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "txt") < 0) goto cleanup; =20 @@ -3395,6 +3389,18 @@ virNetworkDefUpdateDNSTxt(virNetworkDef *def, virNetworkDNSTxtDefClear(&dns->txts[foundIdx]); VIR_DELETE_ELEMENT(dns->txts, foundIdx, dns->ntxts); =20 + } else if (command =3D=3D VIR_NETWORK_UPDATE_COMMAND_MODIFY) { + + if (foundIdx =3D=3D dns->ntxts) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("couldn't locate a matching DNS TXT record in= network %1$s"), + def->name); + goto cleanup; + } + + VIR_FREE(dns->txts[foundIdx].value); + dns->txts[foundIdx].value =3D g_strdup(txt.value); + } else { virNetworkDefUpdateUnknownCommand(command); goto cleanup; diff --git a/tests/networkxml2xmlupdatein/dns-txt-record-modify-fail.xml b/= tests/networkxml2xmlupdatein/dns-txt-record-modify-fail.xml new file mode 100644 index 0000000000..75ed475fe1 --- /dev/null +++ b/tests/networkxml2xmlupdatein/dns-txt-record-modify-fail.xml @@ -0,0 +1 @@ + diff --git a/tests/networkxml2xmlupdatein/dns-txt-record-modify-success.xml= b/tests/networkxml2xmlupdatein/dns-txt-record-modify-success.xml new file mode 100644 index 0000000000..e16c352253 --- /dev/null +++ b/tests/networkxml2xmlupdatein/dns-txt-record-modify-success.xml @@ -0,0 +1 @@ + diff --git a/tests/networkxml2xmlupdateout/nat-network-dns-txt-modify-ok.xm= l b/tests/networkxml2xmlupdateout/nat-network-dns-txt-modify-ok.xml new file mode 100644 index 0000000000..4b4dda094a --- /dev/null +++ b/tests/networkxml2xmlupdateout/nat-network-dns-txt-modify-ok.xml @@ -0,0 +1,26 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/networkxml2xmlupdatetest.c b/tests/networkxml2xmlupdatet= est.c index 59e6ce98e5..875cede035 100644 --- a/tests/networkxml2xmlupdatetest.c +++ b/tests/networkxml2xmlupdatetest.c @@ -306,6 +306,15 @@ mymain(void) "dns-txt-record-snowman", "nat-network-dns-txt-record", VIR_NETWORK_UPDATE_COMMAND_DELETE); + DO_TEST("modify-dns-txt-record", + "dns-txt-record-modify-success", + "nat-network-dns-txt-record", + "nat-network-dns-txt-modify-ok", + VIR_NETWORK_UPDATE_COMMAND_MODIFY); + DO_TEST_FAIL("modify-missing-dns-txt-record", + "dns-txt-record-modify-fail", + "nat-network-dns-txt-record", + VIR_NETWORK_UPDATE_COMMAND_MODIFY); =20 =20 section =3D VIR_NETWORK_SECTION_DNS_SRV; --=20 2.45.2