From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705466; cv=none; d=zohomail.com; s=zohoarc; b=CppRmNQukqX3/GlgqQfFggkchpACC8P0NlVGFxDt+1TZ9zqaD4t/JEpGz6HT1QSGYG+uxS7LE3lSXHQ0/EDPqDO83IEKN/6D+sISYKPP3O7xBQ953ckBetWJMBfQWJkrilU75FdZFSVMjUzF3F84B0Xn0+NtGN1cJba+L4nqslQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705466; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=e8D6DyVNzN8dBdumgtwntCeJWhPIlcnV4kpB2pzahGo=; b=XJbb8191NEVeMStrGpmrA2w/TWBzB0H6e2GT1lT6E4935CA70p02wstRP6Tj5FEIplxbhfvnL8Jwzy+U5EBKYY6KnBOXtneMirvHR0TRHBgHfqRf0MwvlGsTKJIqc4yOjy2Xk90LgJU7f85IhYv0Ps+V0w8eCNhTdxOYrUtMwMA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1685705466779242.17567642510016; Fri, 2 Jun 2023 04:31:06 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-269-OOXbArMANwqWrGP38WXjOg-1; Fri, 02 Jun 2023 07:28:34 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id F005D3C11C8D; Fri, 2 Jun 2023 11:28:31 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 91C17400F16; Fri, 2 Jun 2023 11:28:30 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4C81D19465BA; Fri, 2 Jun 2023 11:28:29 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A463B194658C for ; Fri, 2 Jun 2023 11:28:27 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 96BEA9E60; Fri, 2 Jun 2023 11:28:27 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1EE399E63 for ; Fri, 2 Jun 2023 11:28:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705465; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=e8D6DyVNzN8dBdumgtwntCeJWhPIlcnV4kpB2pzahGo=; b=WID5ssWNnJe2LK0t74JKDUy/UEkAQhYHrtULUPgzdur9d5CLWHnSzwDlZ+DmhgiVYmKVbe KbNq7U1Xf611GsimMYMzTivy78wfSNcRpGRiufgoSf/kLwUu42kfPe301peIJjeVGvHEu3 ekfet+ssLdiaLG2tTI8po4Jxknxv93M= X-MC-Unique: OOXbArMANwqWrGP38WXjOg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 01/15] virNetDevBandwidthParse: Don't validate element name Date: Fri, 2 Jun 2023 13:28:11 +0200 Message-Id: <3d21c534a7a1ee596ebb895ae0b44d8eac98713e.1685705273.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705467417100001 Content-Type: text/plain; charset="utf-8" Callers make sure to pass the correct element. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/netdev_bandwidth_conf.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/conf/netdev_bandwidth_conf.c b/src/conf/netdev_bandwidth_c= onf.c index 1609b14784..48be9d2f38 100644 --- a/src/conf/netdev_bandwidth_conf.c +++ b/src/conf/netdev_bandwidth_conf.c @@ -112,12 +112,6 @@ virNetDevBandwidthParse(virNetDevBandwidth **bandwidth, def =3D g_new0(virNetDevBandwidth, 1); - if (!node || !virXMLNodeNameEqual(node, "bandwidth")) { - virReportError(VIR_ERR_INVALID_ARG, "%s", - _("invalid argument supplied")); - return -1; - } - class_id_prop =3D virXMLPropString(node, "classID"); if (class_id_prop) { if (!class_id) { --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705318; cv=none; d=zohomail.com; s=zohoarc; b=T+OObmq5Ct1wAtbuRNss9pQrEbvzH2mHt+Qs1t/unS47eFmzvbt/U/MCQdl/D9tLLj9UDn2tXeQKjpV9nZuETrH+Cegu4oE+1+lSA2ej0LezalF0hM5WmiUXk34vm40hBJVnEnsUjwYHhF3+w1kJGx+FMqSAZZJlXRb6f+bWBrc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705318; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PnhugTYum9M03OAiT/Fxn/kWCJ5DBMM3URTWSGmfvLA=; b=bmLcEaldIlTl76DMUFMZ6z0yqnQrotFtzmftpkxENrGEzV0dwnV1m0Q8KI0/+Re3TtN/Jeu0JgBwbq/ohp88kxr+Wf1fCgMbDoDgi8U/m02qiY0ykFdKdJ1MgnhdAkeDVmervM19t2ETbI2eQFlmCrwFLY2kFgIyW5gNpbyTGUA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1685705318481776.7386296150511; Fri, 2 Jun 2023 04:28:38 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-25-xPcoe6lrMdW6q7VJqJ7tEQ-1; Fri, 02 Jun 2023 07:28:35 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id EF6D3185A7A7; Fri, 2 Jun 2023 11:28:31 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 58C5740D1B60; Fri, 2 Jun 2023 11:28:31 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5AD2419465A0; Fri, 2 Jun 2023 11:28:30 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 8586D194658C for ; Fri, 2 Jun 2023 11:28:28 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 68CBB8162; Fri, 2 Jun 2023 11:28:28 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id E60CC9E60 for ; Fri, 2 Jun 2023 11:28:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705317; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=PnhugTYum9M03OAiT/Fxn/kWCJ5DBMM3URTWSGmfvLA=; b=G+XVruAnamQJMR+5YdotE6g8IESvrKx8oQGlKFYSkFO3lLfSj4qPZsq1BVfarvITzUEytu PJqu8plyd0Ox0dHTE/Z5HYXdSSrKKcr52tXvwg12EPpDe9o0I57qreFcIYAmUkrft2axEk crxkMnymx7df0mYLblapO/nLILsHn4w= X-MC-Unique: xPcoe6lrMdW6q7VJqJ7tEQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 02/15] virNetDevBandwidthParse: Use 'virXMLPropUInt' to parse 'classID' Date: Fri, 2 Jun 2023 13:28:12 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705320121100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/netdev_bandwidth_conf.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/conf/netdev_bandwidth_conf.c b/src/conf/netdev_bandwidth_c= onf.c index 48be9d2f38..2ac1983dce 100644 --- a/src/conf/netdev_bandwidth_conf.c +++ b/src/conf/netdev_bandwidth_conf.c @@ -108,24 +108,24 @@ virNetDevBandwidthParse(virNetDevBandwidth **bandwidt= h, g_autoptr(virNetDevBandwidth) def =3D NULL; xmlNodePtr cur; xmlNodePtr in =3D NULL, out =3D NULL; - g_autofree char *class_id_prop =3D NULL; + unsigned int class_id_value; + int rc; def =3D g_new0(virNetDevBandwidth, 1); - class_id_prop =3D virXMLPropString(node, "classID"); - if (class_id_prop) { + + if ((rc =3D virXMLPropUInt(node, "classID", 10, VIR_XML_PROP_NONE, &cl= ass_id_value)) < 0) + return -1; + + if (rc =3D=3D 1) { if (!class_id) { virReportError(VIR_ERR_XML_DETAIL, "%s", _("classID attribute not supported on " "in this usage context")); return -1; } - if (virStrToLong_ui(class_id_prop, NULL, 10, class_id) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unable to parse class id '%1$s'"), - class_id_prop); - return -1; - } + + *class_id =3D class_id_value; } cur =3D node->children; --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705344; cv=none; d=zohomail.com; s=zohoarc; b=HeMp2sEGF8kfRHbgk8Iy0/uLUHB7qYvpk6x0liilrRurkOkAvuCjvsCJ7uz6p+0tqTb85bHWb/leyQGQSAIVxZK28gLCYG/vuE5r6aak3Fd3xTpUYY7ziSeDHRhyLLl1uQ8zB5Qr9l11fvESdFuU7wGgnKaYuYADSXEp1Vhxjtc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705344; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4FZVDkgRQRnVwrMy5VimAA7HpXiNCF86T9U880Y7qwY=; b=WtrVhLflp4nWl67ydFiSiM+Abmm+l+b2paknSFO5p/Rcx+V4BDG17Tr+mb4uR33oYTRsh71b5JXmXuSgIjB5/KFSbEBUxv3aNzPI3ufhtSCorqqpV7+VHHPJSkuqku+Sq4EN69q58PSTD0IXZ4bqA7TfbE9U9hefYtELKDh0I44= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 168570534403220.54366859875006; Fri, 2 Jun 2023 04:29:04 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-119-xRDaVRNmMsKaKMTlmo6tlQ-1; Fri, 02 Jun 2023 07:28:35 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 227DC1019C87; Fri, 2 Jun 2023 11:28:32 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 11090492B00; Fri, 2 Jun 2023 11:28:32 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 83BB01946F09; Fri, 2 Jun 2023 11:28:30 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 6AE5A1946A46 for ; Fri, 2 Jun 2023 11:28:29 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 3F08C8162; Fri, 2 Jun 2023 11:28:29 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id BD89D9E78 for ; Fri, 2 Jun 2023 11:28:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705343; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=4FZVDkgRQRnVwrMy5VimAA7HpXiNCF86T9U880Y7qwY=; b=idG+eo/WOjDxcfh1n6F4SsRqlzdhC76r7x2cCtLL6jY2AXQz4+rxm4l3UHuWFQa4mJxsI/ WynPEuOPsByWrRI2snWhimRlDkLcTLGKTEzexGTQEkvvVyv3jc/XCGubyUMCmIeRoj1g8l nUgUIZ0oMulIvSP5AUAJXOZW2Fhyp+0= X-MC-Unique: xRDaVRNmMsKaKMTlmo6tlQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 03/15] virNetDevBandwidthParseRate: Refactor parsing Date: Fri, 2 Jun 2023 13:28:13 +0200 Message-Id: <62d90bc0c1207d450df9bc2db5c695c840aefcec.1685705273.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705344745100003 Content-Type: text/plain; charset="utf-8" Remove the unnecessary check for valid arguments and use virXMLPropULongLong instead of hand-written property parsers. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/netdev_bandwidth_conf.c | 89 +++++++++++--------------------- 1 file changed, 29 insertions(+), 60 deletions(-) diff --git a/src/conf/netdev_bandwidth_conf.c b/src/conf/netdev_bandwidth_c= onf.c index 2ac1983dce..f34d7499ae 100644 --- a/src/conf/netdev_bandwidth_conf.c +++ b/src/conf/netdev_bandwidth_conf.c @@ -25,61 +25,46 @@ #define VIR_FROM_THIS VIR_FROM_NONE static int -virNetDevBandwidthParseRate(xmlNodePtr node, virNetDevBandwidthRate *rate) +virNetDevBandwidthParseRate(xmlNodePtr node, + virNetDevBandwidthRate *rate, + bool allowFloor) { - g_autofree char *average =3D NULL; - g_autofree char *peak =3D NULL; - g_autofree char *burst =3D NULL; - g_autofree char *floor =3D NULL; - - if (!node || !rate) { - virReportError(VIR_ERR_INVALID_ARG, "%s", - _("invalid argument supplied")); + int rc_average; + int rc_peak; + int rc_burst; + int rc_floor; + + if ((rc_average =3D virXMLPropULongLong(node, "average", 10, VIR_XML_P= ROP_NONE, + &rate->average)) < 0) return -1; - } - average =3D virXMLPropString(node, "average"); - peak =3D virXMLPropString(node, "peak"); - burst =3D virXMLPropString(node, "burst"); - floor =3D virXMLPropString(node, "floor"); + if ((rc_peak =3D virXMLPropULongLong(node, "peak", 10, VIR_XML_PROP_NO= NE, + &rate->peak)) < 0) + return -1; - if (average) { - if (virStrToLong_ullp(average, NULL, 10, &rate->average) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("could not convert bandwidth average value '%= 1$s'"), - average); - return -1; - } - } else if (!floor) { - virReportError(VIR_ERR_XML_DETAIL, "%s", - _("Missing mandatory average or floor attributes")); + if ((rc_burst =3D virXMLPropULongLong(node, "burst", 10, VIR_XML_PROP_= NONE, + &rate->burst)) < 0) return -1; - } - if ((peak || burst) && !average) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("'peak' and 'burst' require 'average' attribute")= ); + if ((rc_floor =3D virXMLPropULongLong(node, "floor", 10, VIR_XML_PROP_= NONE, + &rate->floor)) < 0) return -1; - } - if (peak && virStrToLong_ullp(peak, NULL, 10, &rate->peak) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("could not convert bandwidth peak value '%1$s'"), - peak); + if (!rc_average && !rc_floor) { + virReportError(VIR_ERR_XML_DETAIL, "%s", + _("Missing mandatory average or floor attributes")); return -1; } - if (burst && virStrToLong_ullp(burst, NULL, 10, &rate->burst) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("could not convert bandwidth burst value '%1$s'"), - burst); + if ((rc_peak || rc_burst) && !rc_average) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("'peak' and 'burst' require 'average' attribute")= ); return -1; } - if (floor && virStrToLong_ullp(floor, NULL, 10, &rate->floor) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("could not convert bandwidth floor value '%1$s'"), - floor); + if (rc_floor && !allowFloor) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("floor attribute is not supported for this config= ")); return -1; } @@ -157,32 +142,16 @@ virNetDevBandwidthParse(virNetDevBandwidth **bandwidt= h, if (in) { def->in =3D g_new0(virNetDevBandwidthRate, 1); - if (virNetDevBandwidthParseRate(in, def->in) < 0) { - /* helper reported error for us */ - return -1; - } - - if (def->in->floor && !allowFloor) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("floor attribute is not supported for this co= nfig")); + if (virNetDevBandwidthParseRate(in, def->in, allowFloor) < 0) return -1; - } } if (out) { def->out =3D g_new0(virNetDevBandwidthRate, 1); - if (virNetDevBandwidthParseRate(out, def->out) < 0) { - /* helper reported error for us */ - return -1; - } - - if (def->out->floor) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("'floor' attribute allowed " - "only in element")); + /* floor is not allowed for */ + if (virNetDevBandwidthParseRate(out, def->out, false) < 0) return -1; - } } if (def->in || def->out) --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705321; cv=none; d=zohomail.com; s=zohoarc; b=HJQ2X7KqV32s4Nmfcm/PlfqrtCPEfBAKPcztJYiIhgBseDaGgOwMVm/iaOzsvNGYo/UrJVi9dGWHGHdj2papSa7l0cIOnNErTXFAU6XOZzvkuQytSuO8dhiNmQ0sT6LuFLMRJFA9jHYKcAbtsot5Np2RuQyrqiLl7RB1/FZYomY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705321; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=dKRhupkUpQscAOp1hiGS2t05r8JainejsmxcongjNgs=; b=dj9LcWHc6M+IylVD86vD5SFjI9RbmQQWnwtDmhipaiPbsGS3XVU9VNAq6rqU4kkdI0IZc9KlJdC/QJOM4AL4/7EwdURx6+3H8XoRKYxuOm7nvL+/3ty8ZGzbNOjb++657fSlLNJ7MNn5aPHsv2h7EcJgFciffHdz+UpjlY2tUSE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1685705321844543.7787953305663; Fri, 2 Jun 2023 04:28:41 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-423-Fo7IkNSROsq9ZGXFXRyjwA-1; Fri, 02 Jun 2023 07:28:36 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 83848811E94; Fri, 2 Jun 2023 11:28:32 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 70D3740D1B67; Fri, 2 Jun 2023 11:28:32 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9386A19465A3; Fri, 2 Jun 2023 11:28:31 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4429C194658C for ; Fri, 2 Jun 2023 11:28:30 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 16D3C9E71; Fri, 2 Jun 2023 11:28:30 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 946769E60 for ; Fri, 2 Jun 2023 11:28:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705320; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=dKRhupkUpQscAOp1hiGS2t05r8JainejsmxcongjNgs=; b=LLHRB7bhO97t6M/bEu9wGmGHZVgwKC1T2DjUOcVsKD7/iIfphOhIhfJcuheKPTlJ3G+jmP QenxEyxVYPkF39ONr0NmKrAdMdUs/GT5Z45o5YSOT4gYto4Fs4JHKx3IZIZe6iCvr8rXRw LIoLkZfKkfdTfc3gBzvttzoL+AkKdAc= X-MC-Unique: Fo7IkNSROsq9ZGXFXRyjwA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 04/15] virNetDevBandwidthParse: Use virXMLNodeGetSubelement instead of looped parser Date: Fri, 2 Jun 2023 13:28:14 +0200 Message-Id: <3757979808ac273c4fef28f47561c678f68737d2.1685705273.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705322154100003 Content-Type: text/plain; charset="utf-8" Extrac the 'inbound'/'outbound' subelements using virXMLNodeGetSubelement to simplify the code. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/netdev_bandwidth_conf.c | 34 ++++---------------------------- 1 file changed, 4 insertions(+), 30 deletions(-) diff --git a/src/conf/netdev_bandwidth_conf.c b/src/conf/netdev_bandwidth_c= onf.c index f34d7499ae..38b7cc10fd 100644 --- a/src/conf/netdev_bandwidth_conf.c +++ b/src/conf/netdev_bandwidth_conf.c @@ -91,8 +91,8 @@ virNetDevBandwidthParse(virNetDevBandwidth **bandwidth, bool allowFloor) { g_autoptr(virNetDevBandwidth) def =3D NULL; - xmlNodePtr cur; - xmlNodePtr in =3D NULL, out =3D NULL; + xmlNodePtr in; + xmlNodePtr out; unsigned int class_id_value; int rc; @@ -113,40 +113,14 @@ virNetDevBandwidthParse(virNetDevBandwidth **bandwidt= h, *class_id =3D class_id_value; } - cur =3D node->children; - - while (cur) { - if (cur->type =3D=3D XML_ELEMENT_NODE) { - if (virXMLNodeNameEqual(cur, "inbound")) { - if (in) { - virReportError(VIR_ERR_XML_DETAIL, "%s", - _("Only one child " - "element allowed")); - return -1; - } - in =3D cur; - } else if (virXMLNodeNameEqual(cur, "outbound")) { - if (out) { - virReportError(VIR_ERR_XML_DETAIL, "%s", - _("Only one child " - "element allowed")); - return -1; - } - out =3D cur; - } - /* Silently ignore unknown elements */ - } - cur =3D cur->next; - } - - if (in) { + if ((in =3D virXMLNodeGetSubelement(node, "inbound"))) { def->in =3D g_new0(virNetDevBandwidthRate, 1); if (virNetDevBandwidthParseRate(in, def->in, allowFloor) < 0) return -1; } - if (out) { + if ((out =3D virXMLNodeGetSubelement(node, "outbound"))) { def->out =3D g_new0(virNetDevBandwidthRate, 1); /* floor is not allowed for */ --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705468; cv=none; d=zohomail.com; s=zohoarc; b=e4SN/yhmIeleH5vbC1hmVRqlgR4hj10cnWrn3w+PTJOpy/ccXjxoJIK3/a8YqfoyN44CrWUkGtfRCVoNTBJwMVjyKlDS+9gPwsg8ATsmYI7NHPWO8oGgsiyNP74dy1FTjg/ZEbUiDM68MBpZddFYKvMS1a1r7A9vwhMUjuX3bRY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705468; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NMR001TXzDM1YtceDELFwqV0rA5uWO6Rc81JminhlLo=; b=UJqr9QNyykGIsA0TuhkoUd78kdOuTxzzxxwC194OhrBtF4Zh4/sGthINbyhSktxEAKxFPyfxCKOOhR3wMHO3ns3KZY8idv8beeEWtcWpGRodoy/IaPFn0J7Gc4TaCNAlXCFyqZEsMWiuBr5z9H/Rf4eySQLBwbQQF3QalTl1juQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 168570546872389.99038266759555; Fri, 2 Jun 2023 04:31:08 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-144-yKG2cM7UPCKh6H9p1u4_1g-1; Fri, 02 Jun 2023 07:28:36 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E43248582BE; Fri, 2 Jun 2023 11:28:32 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id CE828C154DA; Fri, 2 Jun 2023 11:28:32 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D0E0C1946F17; Fri, 2 Jun 2023 11:28:31 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 1857E19465A8 for ; Fri, 2 Jun 2023 11:28:31 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id EE5099E63; Fri, 2 Jun 2023 11:28:30 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6E0668162 for ; Fri, 2 Jun 2023 11:28:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705467; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=NMR001TXzDM1YtceDELFwqV0rA5uWO6Rc81JminhlLo=; b=bap50zY4nFE084nGyqlIUWLlDI7kJdiZDxbVwWscqUodwm2SOLMsYfBswuJ/SOvTIpjc5Q MhYwkWUUoqVqrhtJfjnBByGUIPqRMbOWxFO/jshzSkJyYrON9wjiq4h0e2MU5DBe7ssRi4 xdtjNgejiKbti8uOZxwSHKOGnlIrdOo= X-MC-Unique: yKG2cM7UPCKh6H9p1u4_1g-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 05/15] virNetworkDHCPDefParseXML: Refactor cleanup Date: Fri, 2 Jun 2023 13:28:15 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.8 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705470221100001 Content-Type: text/plain; charset="utf-8" There's nothing to clean up in the 'host' local variable on error as the function which fills it makes sure to fill it only on success. In such case it's also directly assigned to the array thus the 'host' variable is cleared. Remove the 'cleanup' label and 'ret' variable as we can now directly return -1 on error. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/network_conf.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 73011cb7a2..5add0ef902 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -605,7 +605,6 @@ virNetworkDHCPDefParseXML(const char *networkName, xmlNodePtr node, virNetworkIPDef *def) { - int ret =3D -1; xmlNodePtr cur; virNetworkDHCPRangeDef range; virNetworkDHCPHostDef host; @@ -619,7 +618,7 @@ virNetworkDHCPDefParseXML(const char *networkName, virXMLNodeNameEqual(cur, "range")) { if (virNetworkDHCPRangeDefParseXML(networkName, def, cur, &ran= ge) < 0) - goto cleanup; + return -1; VIR_APPEND_ELEMENT(def->ranges, def->nranges, range); } else if (cur->type =3D=3D XML_ELEMENT_NODE && @@ -627,7 +626,7 @@ virNetworkDHCPDefParseXML(const char *networkName, if (virNetworkDHCPHostDefParseXML(networkName, def, cur, &host, false) < 0) - goto cleanup; + return -1; VIR_APPEND_ELEMENT(def->hosts, def->nhosts, host); } else if (VIR_SOCKET_ADDR_IS_FAMILY(&def->address, AF_INET) && cur->type =3D=3D XML_ELEMENT_NODE && @@ -645,7 +644,7 @@ virNetworkDHCPDefParseXML(const char *networkName, if (server && virSocketAddrParse(&inaddr, server, AF_UNSPEC) < 0) { - goto cleanup; + return -1; } def->bootfile =3D g_steal_pointer(&file); @@ -655,10 +654,7 @@ virNetworkDHCPDefParseXML(const char *networkName, cur =3D cur->next; } - ret =3D 0; - cleanup: - virNetworkDHCPHostDefClear(&host); - return ret; + return 0; } --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705322; cv=none; d=zohomail.com; s=zohoarc; b=PM84zV/+BElz34Bi/tUWrkoeVk46pEYxZev58r3Zdl5C/9Go2HVFVaQRGD05dMFs+ngOeCbK8/R3bstTWpNeyzPe4GyAD7qF8UKy6j9HaxKHawvPvOKcow4xQda5INjCry2srQvNFkbOrmkJoSH0IX2pjCStpxelR2A9J1i+GI0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705322; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=f6EiSBB1BBxGHmVfzhEL6kC2bIwQEIIiHN95z68D/pk=; b=OWn+FRVr2BYDS2yg046hWyaQPPGirCYDgPhJAmpk0ypSijKjlvaEKUAcpf3S02vN3945t6BIedfGjFB6C1Ntq4uT3bRL8Y1GUkJyKJZVf5b7C021e0PeTmpriLWpTlumGxXkoAiYhOg6o2ynDXjA1nEYwxpVbcsEzY1gpOe2ioI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1685705322856557.9151514399827; Fri, 2 Jun 2023 04:28:42 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-86-vpJzZt11Ns-iEMLXk6awoQ-1; Fri, 02 Jun 2023 07:28:36 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6117E3C11C9F; Fri, 2 Jun 2023 11:28:33 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4E4B440D1B65; Fri, 2 Jun 2023 11:28:33 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D191519465B5; Fri, 2 Jun 2023 11:28:32 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D646219465B7 for ; Fri, 2 Jun 2023 11:28:31 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id C91A29E71; Fri, 2 Jun 2023 11:28:31 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4D8FE8162 for ; Fri, 2 Jun 2023 11:28:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705321; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=f6EiSBB1BBxGHmVfzhEL6kC2bIwQEIIiHN95z68D/pk=; b=JcQKWmpesuhfX272NwSg0u5eiDlkCAXF6IyvYv+fxkqYnFzHQOnrmM92laylgSPNAgEl3m Yvk/JqsSjC4otfkzIU618X7tMHyyN4K65E/dZcL3HGqctqRcJ503ULydniGgawG9IhGvxN dlxVh0/PfUQpLZKng+roMhOfQ98FyYg= X-MC-Unique: vpJzZt11Ns-iEMLXk6awoQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 06/15] util: xml: Introduce virXMLNodeGetSubelementList Date: Fri, 2 Jun 2023 13:28:16 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705324108100005 Content-Type: text/plain; charset="utf-8" The new helper is similar to virXPathNodeSet list but for cases where we want to get subelements directly rather than using XPath. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/libvirt_private.syms | 1 + src/util/virxml.c | 34 ++++++++++++++++++++++++++++++++++ src/util/virxml.h | 5 +++++ 3 files changed, 40 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 27b8e111aa..436d5a0770 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -3709,6 +3709,7 @@ virXMLFormatMetadata; virXMLNewNode; virXMLNodeContentString; virXMLNodeGetSubelement; +virXMLNodeGetSubelementList; virXMLNodeNameEqual; virXMLNodeSanitizeNamespaces; virXMLNodeToString; diff --git a/src/util/virxml.c b/src/util/virxml.c index e04455fcaa..0dae15a039 100644 --- a/src/util/virxml.c +++ b/src/util/virxml.c @@ -899,6 +899,40 @@ virXMLNodeGetSubelement(xmlNodePtr node, } +/** + * virXMLNodeGetSubelementList: + * @node: node to get subelement of + * @name: name of subelement to fetch (NULL to fetch all sub-elements) + * @list: If non-NULL, filled with a list of pointers to the nodes. Caller= is + * responsible for freeeing the list but not the members. + * + * Find and return a sub-elements node of @node named @name in a list. + * Returns the number of subelements with @name + */ +size_t +virXMLNodeGetSubelementList(xmlNodePtr node, + const char *name, + xmlNodePtr **list) +{ + xmlNodePtr n; + size_t nelems =3D 0; + + for (n =3D node->children; n; n =3D n->next) { + if (n->type =3D=3D XML_ELEMENT_NODE) { + if (name && !virXMLNodeNameEqual(n, name)) + continue; + + if (list) + VIR_APPEND_ELEMENT_COPY(*list, nelems, n); + else + nelems++; + } + } + + return nelems; +} + + /** * virXPathNode: * @xpath: the XPath string to evaluate diff --git a/src/util/virxml.h b/src/util/virxml.h index cca9f222ab..7af47437bd 100644 --- a/src/util/virxml.h +++ b/src/util/virxml.h @@ -77,6 +77,11 @@ xmlNodePtr virXMLNodeGetSubelement(xmlNodePtr node, const char *name); +size_t +virXMLNodeGetSubelementList(xmlNodePtr node, + const char *name, + xmlNodePtr **list); + xmlNodePtr virXPathNode(const char *xpath, xmlXPathContextPtr ctxt); --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705463; cv=none; d=zohomail.com; s=zohoarc; b=N9ur3biY5KBLbL3+dUoHHzOJUP+Aa+GA7buBAvIhdP5+2yv89P5nLPyJikiAK4O7iC2uqXXwYEX9vCqa+qMdVthG7XvYHTkQNIBLD1dtzWcmULoYtw95op+kMaW08Eo8mp/pfXscqBSZSUBFgqemHau2pgatfDYza7SHdNEfhsE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705463; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=xpvG5+r3BsdPQ7FQiZ4Or5EAxJ2K8DMUrbJiOjjHXwc=; b=iCOvTaDWmrsLVgM5FnvWrKcd5ppVE5RismQPAD1gPSO0e10/I7Taseup5PYLelJah3i+1Mb+O956Z4nRGNuGHJxgFC/5TOyYmc/Em5OHoTAUZB1hgeagDpX336TGadIZ7XZZRjdIASx+iRwpImqaltD/ubDlUUh+8OvqYnPjfuY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1685705463920263.5835451875579; Fri, 2 Jun 2023 04:31:03 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-376-ip4P_RyfOlyLedisk669xg-1; Fri, 02 Jun 2023 07:28:38 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 35C7C801182; Fri, 2 Jun 2023 11:28:34 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 232371121314; Fri, 2 Jun 2023 11:28:34 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 1622A1946595; Fri, 2 Jun 2023 11:28:34 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id B2796194658C for ; Fri, 2 Jun 2023 11:28:32 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 9EDF78162; Fri, 2 Jun 2023 11:28:32 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1EAA39E78 for ; Fri, 2 Jun 2023 11:28:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705462; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=xpvG5+r3BsdPQ7FQiZ4Or5EAxJ2K8DMUrbJiOjjHXwc=; b=AVq5YnN7pbeGDc2ahRTAFj26MrTqXEK1jsUG5iCMC6uw7SCMiMa6N2vJHyLJIcqr+9+CGS 9GZN7XIOefwKISDQjkOwpihnSH8pRVmZDub0aDYmrkkNqeMoB4H+Y0gvMOfjgkX4xC0aJl UwT3CBL6fN309YDbpR5XPhYNbZWGyFU= X-MC-Unique: ip4P_RyfOlyLedisk669xg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 07/15] nwfilterxml2xmltest: Add test case for parser and formatter quirks Date: Fri, 2 Jun 2023 13:28:17 +0200 Message-Id: <87cb357731b8f7c37d0b20066cd05ec20c83ecc3.1685705273.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705464195100005 Content-Type: text/plain; charset="utf-8" The parser and formatter for nwfilter rules is very strange and has weird quirks. Add a test case trying to capture some of the quirks to vizualize how it will change when the code is refactored. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- tests/nwfilterxml2xmlin/quirks-invalid.xml | 13 +++++++++++++ tests/nwfilterxml2xmlout/quirks-invalid.xml | 7 +++++++ tests/nwfilterxml2xmltest.c | 5 +++++ 3 files changed, 25 insertions(+) create mode 100644 tests/nwfilterxml2xmlin/quirks-invalid.xml create mode 100644 tests/nwfilterxml2xmlout/quirks-invalid.xml diff --git a/tests/nwfilterxml2xmlin/quirks-invalid.xml b/tests/nwfilterxml= 2xmlin/quirks-invalid.xml new file mode 100644 index 0000000000..dab0e5035f --- /dev/null +++ b/tests/nwfilterxml2xmlin/quirks-invalid.xml @@ -0,0 +1,13 @@ + + 01a992d2-f8c8-7c27-f69b-ab0a9d377379 + + + + + + + + + + + diff --git a/tests/nwfilterxml2xmlout/quirks-invalid.xml b/tests/nwfilterxm= l2xmlout/quirks-invalid.xml new file mode 100644 index 0000000000..f244d45e08 --- /dev/null +++ b/tests/nwfilterxml2xmlout/quirks-invalid.xml @@ -0,0 +1,7 @@ + + 01a992d2-f8c8-7c27-f69b-ab0a9d377379 + + + + + diff --git a/tests/nwfilterxml2xmltest.c b/tests/nwfilterxml2xmltest.c index 5c84c2fee9..c2481481ee 100644 --- a/tests/nwfilterxml2xmltest.c +++ b/tests/nwfilterxml2xmltest.c @@ -117,6 +117,11 @@ mymain(void) DO_TEST("example-1", false); DO_TEST("example-2", false); + /* The parser and formatter for nwfilter rules was written in a quirky= way. + * Validate that it still works. Note that the files don't conform to = the + * schema */ + DO_TEST("quirks-invalid", false); + DO_TEST("chain_prefixtest1-invalid", true); /* derived from arp-test */ DO_TEST("attr-value-test", false); --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705349; cv=none; d=zohomail.com; s=zohoarc; b=Ubw+LRBmg81mAGd4rX79IAxVLcgwj4iMrf1zQ4/PMZVxKWCfwxbevYAOD3KeUcV+hxIyDELTrMg28M3qeqERMWh0+aBO4uoCS1DvI2Hyddh3RjVQqzRH7S5MDfy8PVRxRgniPFgrTq/arzNDwDO85bvJVPzJYlgXiszcy+koLdk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705349; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=U+BQ0B+ygJ7PvnhrX0KrauyFRWtMuYHApZQ7LHrN8wA=; b=D1zrtPDY66HgHT9ebXXWCmtJbwbjmEJ4OnbnkDzAQlgB8Xc5wSwRn5YV8jM4Igi0Hjf7/tsHxT0FzBFeDq1iqbdOkTz39Yv/PFl377PBdilMUqcmE1cNZKDotNRtQpKGQtlnvVuR2T+wZMdjpG49zeBC0sISGBjN/SQaJAgJvEM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1685705349240506.6589767323742; Fri, 2 Jun 2023 04:29:09 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-448-AVzFwj7FPg6lSjYj89ap0A-1; Fri, 02 Jun 2023 07:28:40 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id BB3D33C11CDD; Fri, 2 Jun 2023 11:28:35 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 97AA640140D; Fri, 2 Jun 2023 11:28:35 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5ADEB19466DF; Fri, 2 Jun 2023 11:28:35 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 8B6CF194658C for ; Fri, 2 Jun 2023 11:28:33 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 7EB4B9E60; Fri, 2 Jun 2023 11:28:33 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id ED2E99E68 for ; Fri, 2 Jun 2023 11:28:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705348; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=U+BQ0B+ygJ7PvnhrX0KrauyFRWtMuYHApZQ7LHrN8wA=; b=d2I/k/kRpPE2RbTZYCz3FewK+bzgIsJAhn7QILBQ2k1wylV4yEuyFwC4/s3Z6Ty41dx45F ilMnEvJYbRn/WsdEaWvroSKw6cckv/uZxhjyLXGoTIaPu/jp9TWwzO516W85B6Oy9u47/w C5bjcq+R+zJkuDDbqLF4kdwKGF6Q+fg= X-MC-Unique: AVzFwj7FPg6lSjYj89ap0A-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 08/15] conf: network: Refactor XML parsing in virNetworkDHCPDefParseXML Date: Fri, 2 Jun 2023 13:28:18 +0200 Message-Id: <00d316a36145562ac419405ffb30ecbfe52a39e1.1685705273.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705350302100011 Content-Type: text/plain; charset="utf-8" Use virXMLNodeGetSubelement(List) instead of the looped parser and simplify the code. Note that handling of the 'bootp' element now conforms to the schema where we allow just one and the 'file' attribute is mandatory. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/network_conf.c | 68 ++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 5add0ef902..73788b6d87 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -605,53 +605,43 @@ virNetworkDHCPDefParseXML(const char *networkName, xmlNodePtr node, virNetworkIPDef *def) { - xmlNodePtr cur; - virNetworkDHCPRangeDef range; - virNetworkDHCPHostDef host; + g_autofree xmlNodePtr *rangeNodes =3D NULL; + size_t nrangeNodes =3D virXMLNodeGetSubelementList(node, "range", &ran= geNodes); + g_autofree xmlNodePtr *hostNodes =3D NULL; + size_t nhostNodes =3D virXMLNodeGetSubelementList(node, "host", &hostN= odes); + xmlNodePtr bootp =3D virXMLNodeGetSubelement(node, "bootp"); + size_t i; - memset(&range, 0, sizeof(range)); - memset(&host, 0, sizeof(host)); + for (i =3D 0; i < nrangeNodes; i++) { + virNetworkDHCPRangeDef range =3D { 0 }; - cur =3D node->children; - while (cur !=3D NULL) { - if (cur->type =3D=3D XML_ELEMENT_NODE && - virXMLNodeNameEqual(cur, "range")) { + if (virNetworkDHCPRangeDefParseXML(networkName, def, rangeNodes[i]= , &range) < 0) + return -1; - if (virNetworkDHCPRangeDefParseXML(networkName, def, cur, &ran= ge) < 0) - return -1; - VIR_APPEND_ELEMENT(def->ranges, def->nranges, range); + VIR_APPEND_ELEMENT(def->ranges, def->nranges, range); + } - } else if (cur->type =3D=3D XML_ELEMENT_NODE && - virXMLNodeNameEqual(cur, "host")) { + for (i =3D 0; i < nhostNodes; i++) { + virNetworkDHCPHostDef host =3D { 0 }; - if (virNetworkDHCPHostDefParseXML(networkName, def, cur, - &host, false) < 0) - return -1; - VIR_APPEND_ELEMENT(def->hosts, def->nhosts, host); - } else if (VIR_SOCKET_ADDR_IS_FAMILY(&def->address, AF_INET) && - cur->type =3D=3D XML_ELEMENT_NODE && - virXMLNodeNameEqual(cur, "bootp")) { - g_autofree char *file =3D NULL; - g_autofree char *server =3D NULL; - virSocketAddr inaddr; - memset(&inaddr, 0, sizeof(inaddr)); - - if (!(file =3D virXMLPropString(cur, "file"))) { - cur =3D cur->next; - continue; - } - server =3D virXMLPropString(cur, "server"); + if (virNetworkDHCPHostDefParseXML(networkName, def, hostNodes[i], + &host, false) < 0) + return -1; - if (server && - virSocketAddrParse(&inaddr, server, AF_UNSPEC) < 0) { - return -1; - } + VIR_APPEND_ELEMENT(def->hosts, def->nhosts, host); + } - def->bootfile =3D g_steal_pointer(&file); - def->bootserver =3D inaddr; - } + if (bootp && + VIR_SOCKET_ADDR_IS_FAMILY(&def->address, AF_INET)) { + g_autofree char *server =3D virXMLPropString(bootp, "server"); - cur =3D cur->next; + if (!(def->bootfile =3D virXMLPropStringRequired(bootp, "file"))) + return -1; + + if (server && + virSocketAddrParse(&def->bootserver, server, AF_UNSPEC) < 0) { + return -1; + } } return 0; --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705345; cv=none; d=zohomail.com; s=zohoarc; b=jRJSXM4kYpQC4CntuO9ojNlcrcXs9NHErv+4x1r2VkVTyIcR+TBQCiWGPz680tlk9E/xOoKMQ080RietP8Z2fMb1nccN6uox0KDjAnzlrmaelsr8l91GQE72OK/+A+GSP/aD1wi+6NXxolv+XkMJI76ewshtoeRKPLvl17egfX8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705345; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rjz9C28gYtoVNt6OdqS3Ot0eaFOGqGuNP74YXW9GSgE=; b=e7wgYEwP5beiEw4Vk9VK9OMkEDUIYjfKNm0lLUn+jm6h2beWsmm5snPSJiPMbjboizIsANqU7r4AITex6jEl4U3g11F2CoBvVnGbxY6WVU6ZsYcaBWwB+RuENpyPFoNchMVUPkynNHZv8IQRVpMzmt5R2VWoBTixTNcJMDgUOrI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1685705345125245.16803231832034; Fri, 2 Jun 2023 04:29:05 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-312-ZVON2klFMye-7Z3HwSoa8A-1; Fri, 02 Jun 2023 07:28:40 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3FA518027F5; Fri, 2 Jun 2023 11:28:35 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2D5DF40C6EC4; Fri, 2 Jun 2023 11:28:35 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 2366B1946595; Fri, 2 Jun 2023 11:28:35 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 6D4F1194658C for ; Fri, 2 Jun 2023 11:28:34 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 59B049E75; Fri, 2 Jun 2023 11:28:34 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id D604E9E90 for ; Fri, 2 Jun 2023 11:28:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705344; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=rjz9C28gYtoVNt6OdqS3Ot0eaFOGqGuNP74YXW9GSgE=; b=Xg++TNq758vY0mE2hh0P4Yk3NmMqr5jAqk+VIx37FK7LysWt3bFfVou7xmtOfuCNX1UAfL 7+mXy3pOoSA/SaCUpSH2dd5fkkvocp3logaGLsNPCBVlZhGQrM/dA6AJ8qPrrT9gBUP0Bu IC+h+0KNjLYMfYJjcavf+D7iSGpiWA4= X-MC-Unique: ZVON2klFMye-7Z3HwSoa8A-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 09/15] conf: nwfilter: Refactor XML formatting in virNWFilterRuleDefFormat Date: Fri, 2 Jun 2023 13:28:19 +0200 Message-Id: <938fe2cef8846602bd9a72083664b107f736cce3.1685705273.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705346736100005 Content-Type: text/plain; charset="utf-8" Use virXMLFormatElement to simplify the formatter. Drop return value of virNWFilterRuleDefFormat as there are no errors to report. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/nwfilter_conf.c | 43 ++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 26 deletions(-) diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index 70ad37e63d..98a19f9e4b 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -2877,43 +2877,31 @@ virNWFilterRuleDefDetailsFormat(virBuffer *buf, } -static int +static void virNWFilterRuleDefFormat(virBuffer *buf, virNWFilterRuleDef *def) { + g_auto(virBuffer) attrBuf =3D VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) childBuf =3D VIR_BUFFER_INIT_CHILD(buf); size_t i; - bool subelement =3D false; - virBufferAsprintf(buf, "action), virNWFilterRuleDirectionTypeToString(def->tt), def->priority); if ((def->flags & RULE_FLAG_NO_STATEMATCH)) - virBufferAddLit(buf, " statematch=3D'false'"); + virBufferAddLit(&attrBuf, " statematch=3D'false'"); - virBufferAdjustIndent(buf, 2); - i =3D 0; - while (virAttr[i].id) { - if (virAttr[i].prtclType =3D=3D def->prtclType) { - if (!subelement) - virBufferAddLit(buf, ">\n"); - virNWFilterRuleDefDetailsFormat(buf, - virAttr[i].id, - virAttr[i].att, - def); - subelement =3D true; - break; - } - i++; + for (i =3D 0; virAttr[i].id; i++) { + if (virAttr[i].prtclType !=3D def->prtclType) + continue; + + virNWFilterRuleDefDetailsFormat(&childBuf, virAttr[i].id, virAttr[= i].att, def); + break; } - virBufferAdjustIndent(buf, -2); - if (subelement) - virBufferAddLit(buf, "\n"); - else - virBufferAddLit(buf, "/>\n"); - return 0; + virXMLFormatElement(buf, "rule", &attrBuf, &childBuf); } @@ -2921,8 +2909,11 @@ static int virNWFilterEntryFormat(virBuffer *buf, virNWFilterEntry *entry) { - if (entry->rule) - return virNWFilterRuleDefFormat(buf, entry->rule); + if (entry->rule) { + virNWFilterRuleDefFormat(buf, entry->rule); + return 0; + } + return virNWFilterFormatParamAttributes(buf, entry->include->params, entry->include->filterref); } --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705324; cv=none; d=zohomail.com; s=zohoarc; b=h0O5RRxfPRJPW37vUOJo8FUuJicamUBdmDUmY0ikgkJHkpVyVsnOzMy8xjt5L9s6YeNrLUlAtBIeMx6uViMMRkR3MTY9BYjh7tN97wzenPpHD4PPum/xuPCyZos85ZPPS+xBJEoY3BAcvJRcolnAyPNZP2QJb5JGSTg0iJQpBJU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705324; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=9Gc62R8Kv6xJ9hhb6qSlWhNDpDoqc16awJ31u0+2Pk0=; b=dwlShxqltayS+DGbPT2cD4PJ6lMqXZTBQDMdjD0soRDm98gX66PYZqrd+PXaigUJ50OGFSFm1BJqlp5hTiOYnLrMU8PqpMsK2YOgtJBy9+00Eo2wdIZov4ykJ0Ed+RurnfiviS5dDSTEwpV46+xZeVnqxLVEH635u9rHcIcX4Go= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 168570532487292.0520025469092; Fri, 2 Jun 2023 04:28:44 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-29-g9ev_OmrP9W5VyKa5M5VRA-1; Fri, 02 Jun 2023 07:28:39 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7E1E8811E88; Fri, 2 Jun 2023 11:28:36 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6D1C040C6EC4; Fri, 2 Jun 2023 11:28:36 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 60FF91946595; Fri, 2 Jun 2023 11:28:36 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 46FB219465B5 for ; Fri, 2 Jun 2023 11:28:35 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 3A2D39E68; Fri, 2 Jun 2023 11:28:35 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id A3F7D9E60 for ; Fri, 2 Jun 2023 11:28:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705323; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=9Gc62R8Kv6xJ9hhb6qSlWhNDpDoqc16awJ31u0+2Pk0=; b=ZPMkgCXYjaEln/pyLrnv0Bzd61UP9M2Vusk6ucC+SnPperi6kj9T9UPDyUDINUNzzkgdZi /k6HAXm8zxixdymkjbOw4oIsU9PDSx6/7o5oZR/c0eLRkYXQI7Ojv/A9DZDPjJs+40ry0D 5eUDCH5VpL0RLY2BTqSHerhBB8nPzI0= X-MC-Unique: g9ev_OmrP9W5VyKa5M5VRA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 10/15] virNWFilterRuleDef: Turn 'action' and 'tt' into proper enum types Date: Fri, 2 Jun 2023 13:28:20 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705326491100002 Content-Type: text/plain; charset="utf-8" Convert the fields to the proper types and use virXMLPropEnum for parsing. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/nwfilter_conf.c | 32 +++-------------------- src/conf/nwfilter_conf.h | 4 +-- src/nwfilter/nwfilter_ebiptables_driver.c | 5 ++++ 3 files changed, 11 insertions(+), 30 deletions(-) diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index 98a19f9e4b..13c6096fcd 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -2373,8 +2373,6 @@ virNWFilterRuleDefFixup(virNWFilterRuleDef *rule) static virNWFilterRuleDef * virNWFilterRuleParse(xmlNodePtr node) { - g_autofree char *action =3D NULL; - g_autofree char *direction =3D NULL; g_autofree char *prio =3D NULL; g_autofree char *statematch =3D NULL; bool found; @@ -2386,38 +2384,16 @@ virNWFilterRuleParse(xmlNodePtr node) ret =3D g_new0(virNWFilterRuleDef, 1); - action =3D virXMLPropString(node, "action"); - direction =3D virXMLPropString(node, "direction"); prio =3D virXMLPropString(node, "priority"); statematch =3D virXMLPropString(node, "statematch"); - if (!action) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", - _("rule node requires action attribute")); + if (virXMLPropEnum(node, "action", virNWFilterRuleActionTypeFromString, + VIR_XML_PROP_REQUIRED, &ret->action) < 0) return NULL; - } - if ((ret->action =3D virNWFilterRuleActionTypeFromString(action)) < 0)= { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - "%s", - _("unknown rule action attribute value")); + if (virXMLPropEnum(node, "direction", virNWFilterRuleDirectionTypeFrom= String, + VIR_XML_PROP_REQUIRED, &ret->tt) < 0) return NULL; - } - - if (!direction) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", - _("rule node requires direction attribute")); - return NULL; - } - - if ((ret->tt =3D virNWFilterRuleDirectionTypeFromString(direction)) < = 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - "%s", - _("unknown rule direction attribute value")); - return NULL; - } ret->priority =3D MAX_RULE_PRIORITY / 2; diff --git a/src/conf/nwfilter_conf.h b/src/conf/nwfilter_conf.h index 7c09b3bcb9..22c2fb51f0 100644 --- a/src/conf/nwfilter_conf.h +++ b/src/conf/nwfilter_conf.h @@ -446,8 +446,8 @@ typedef struct _virNWFilterRuleDef virNWFilterRuleDef; struct _virNWFilterRuleDef { virNWFilterRulePriority priority; virNWFilterRuleFlags flags; - int action; /* virNWFilterRuleActionType */ - int tt; /* virNWFilterRuleDirectionType */ + virNWFilterRuleActionType action; + virNWFilterRuleDirectionType tt; virNWFilterRuleProtocolType prtclType; union { ethHdrFilterDef ethHdrFilter; diff --git a/src/nwfilter/nwfilter_ebiptables_driver.c b/src/nwfilter/nwfil= ter_ebiptables_driver.c index 99a74a60e5..1c5da2ae05 100644 --- a/src/nwfilter/nwfilter_ebiptables_driver.c +++ b/src/nwfilter/nwfilter_ebiptables_driver.c @@ -2361,6 +2361,11 @@ ebtablesCreateRuleInstance(virFirewall *fw, target =3D virNWFilterJumpTargetTypeToString( VIR_NWFILTER_RULE_ACTION_DROP); break; + case VIR_NWFILTER_RULE_ACTION_DROP: + case VIR_NWFILTER_RULE_ACTION_ACCEPT: + case VIR_NWFILTER_RULE_ACTION_RETURN: + case VIR_NWFILTER_RULE_ACTION_CONTINUE: + case VIR_NWFILTER_RULE_ACTION_LAST: default: target =3D virNWFilterJumpTargetTypeToString(rule->action); } --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705347; cv=none; d=zohomail.com; s=zohoarc; b=S7A4z5wWZGHnv1G1hQzNb7MJk4RpMgUFj+WPvq18RWrDUhxelGYoPxQdN/cXyDl9KG6A1tA1ece3JujzLd2vcMc231WmQjBpsE+11IV342jy3EBakeY/KjTtulC/VZdBmf3btwZGvkzUnZzFJMVSJLkepTcYN5n619WJn7lSqZw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705347; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=9wXi4x0ftjEMBeR+8RYfeYpViucXtpVSWeJgoz3RgG8=; b=LZfazYz4VscLQVMjgS23B20SXSQcn7ynr7rDy3yiZQ63lPYFYSjd1nh3vb97hXA1o4A3fbwove1RFqh3V/wcedR3sTWZuZlXJbr8ZBqqJv2lIx7NLE4BPvQQwfk+hkLvvgoCqnuRFB2RXoGp2iSlB3a8iAate9oQMANLKb1VDXE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1685705347066895.9900554379126; Fri, 2 Jun 2023 04:29:07 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-131-FWiJfRdFMOKaQTyhqn2fzw-1; Fri, 02 Jun 2023 07:28:42 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0B5EE8032FE; Fri, 2 Jun 2023 11:28:38 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id B6D8B9E71; Fri, 2 Jun 2023 11:28:37 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 980921946595; Fri, 2 Jun 2023 11:28:37 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 3F695194658C for ; Fri, 2 Jun 2023 11:28:36 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 10B859E9F; Fri, 2 Jun 2023 11:28:36 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 900F58162 for ; Fri, 2 Jun 2023 11:28:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705346; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=9wXi4x0ftjEMBeR+8RYfeYpViucXtpVSWeJgoz3RgG8=; b=L4BwEXKNZSm6tdP2MH3/eZ4vzHWSj5TekEhpxccu2ZzYqA+NOxbnu0uKDir9vxPUYKxmWf 4pFIA5I4WoX7iDzg4D2NDRaa0kZU8OLrS88XiptyLOiAa6TOeQ5rKRdSs5nfe0ECA/gaYW j92yl9W3h1bubUX7LHyYjhJ1TTgKYJU= X-MC-Unique: FWiJfRdFMOKaQTyhqn2fzw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 11/15] virNWFilterRuleParse: Parse 'priority' via 'virXMLPropInt' Date: Fri, 2 Jun 2023 13:28:21 +0200 Message-Id: <9a52c0a345ca72ba397c82a44ef0f6c6b779d8a4.1685705273.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705347728100007 Content-Type: text/plain; charset="utf-8" Use modern parsing. Invalid numbers are now rejected. Semantis for numbers out of range is preserved. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/nwfilter_conf.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index 13c6096fcd..b7400b553a 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -2373,18 +2373,15 @@ virNWFilterRuleDefFixup(virNWFilterRuleDef *rule) static virNWFilterRuleDef * virNWFilterRuleParse(xmlNodePtr node) { - g_autofree char *prio =3D NULL; g_autofree char *statematch =3D NULL; bool found; int found_i =3D 0; - int priority; xmlNodePtr cur; g_autoptr(virNWFilterRuleDef) ret =3D NULL; ret =3D g_new0(virNWFilterRuleDef, 1); - prio =3D virXMLPropString(node, "priority"); statematch =3D virXMLPropString(node, "statematch"); if (virXMLPropEnum(node, "action", virNWFilterRuleActionTypeFromString, @@ -2395,15 +2392,12 @@ virNWFilterRuleParse(xmlNodePtr node) VIR_XML_PROP_REQUIRED, &ret->tt) < 0) return NULL; - ret->priority =3D MAX_RULE_PRIORITY / 2; + if (virXMLPropInt(node, "priority", 10, VIR_XML_PROP_NONE, &ret->prior= ity, + MAX_RULE_PRIORITY / 2) < 0) + return NULL; - if (prio) { - if (virStrToLong_i(prio, NULL, 10, &priority) >=3D 0) { - if (priority <=3D MAX_RULE_PRIORITY && - priority >=3D MIN_RULE_PRIORITY) - ret->priority =3D priority; - } - } + if (ret->priority > MAX_RULE_PRIORITY || ret->priority < MIN_RULE_PRIO= RITY) + ret->priority =3D MAX_RULE_PRIORITY / 2; if (statematch && (STREQ(statematch, "0") || STRCASEEQ(statematch, "false"))) --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705327; cv=none; d=zohomail.com; s=zohoarc; b=WAfz1uFRAWuTetrbzCtsPQ4wz2qqGsAtbiUxhPT46ZGgdnS2LYJUIFDAYxCYEyXn7rUmGzJSR6lA94oFg38LCrFXQNl3PTSDszHyz6E6E56QuGLfbGgvpYFiDVcyn2aep7dz5LxtXawdf8mIOuTJfejA3LR7m6bNMRb1qmn0poM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705327; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8XEZ02P6U7QtUpTgUn6DYmK6KvFs/0uz7vlamaUVjKE=; b=TSle9GxEhbcOh6911WmQfeicu+ma/1n5ja1w8Fa8VFDFgQjHrQ01AZVs+mnT6RsZV/FTxqT9ZDEfW8GrM9X9WNjWvfYPRP/91QchI7VAtg6GykYz88+NQrGAwr/emkYYad77haEkp03wcwJQCodsIGEEWLezjTPBkmFvU39DcfY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1685705327422820.7777959346354; Fri, 2 Jun 2023 04:28:47 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-456-Ic6auviiOhOGin_DYuUJmg-1; Fri, 02 Jun 2023 07:28:42 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CDAAB811E7C; Fri, 2 Jun 2023 11:28:37 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id B733B40C6EC4; Fri, 2 Jun 2023 11:28:37 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9C25019465A3; Fri, 2 Jun 2023 11:28:37 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 021DF194658C for ; Fri, 2 Jun 2023 11:28:37 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id E58688162; Fri, 2 Jun 2023 11:28:36 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 61C539E71 for ; Fri, 2 Jun 2023 11:28:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705326; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=8XEZ02P6U7QtUpTgUn6DYmK6KvFs/0uz7vlamaUVjKE=; b=SkkZB6KunooHVj3G/MP5eLpGMjal8brViB8fc0ZekN4GCtNgJgOqHsKpTdlUl6W/wgG8KL /jTNbsGo/Rt7EMRz+ZNmZOHo+WOONYD7jJqNxf0eCWDrhQhgBqrmUcvN+5kgWYWkAsf/u+ wQQ/UjZ9YEGWZ5UVzxWUUM504z9Jr0g= X-MC-Unique: Ic6auviiOhOGin_DYuUJmg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 12/15] virNWFilterRuleParse: Refactor attribute parser Date: Fri, 2 Jun 2023 13:28:22 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705328478100005 Content-Type: text/plain; charset="utf-8" Use virXMLNodeGetSubelementList to get the elements to process. The new approach documents the complexity of the parser, which is designed to ignore unknown attributes and parse only a single kind of them after finding the first valid one. Note that the XML schema doesn't actually allow having multiple sub-elements, but I'm not sure how that translates to actual configs present. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/nwfilter_conf.c | 65 +++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index b7400b553a..e6f7c0f8b7 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -2374,10 +2374,8 @@ static virNWFilterRuleDef * virNWFilterRuleParse(xmlNodePtr node) { g_autofree char *statematch =3D NULL; - bool found; - int found_i =3D 0; - - xmlNodePtr cur; + g_autofree xmlNodePtr *attrNodes =3D NULL; + size_t nattrNodes =3D 0; g_autoptr(virNWFilterRuleDef) ret =3D NULL; ret =3D g_new0(virNWFilterRuleDef, 1); @@ -2403,43 +2401,42 @@ virNWFilterRuleParse(xmlNodePtr node) (STREQ(statematch, "0") || STRCASEEQ(statematch, "false"))) ret->flags |=3D RULE_FLAG_NO_STATEMATCH; - cur =3D node->children; - - found =3D false; - - while (cur !=3D NULL) { - if (cur->type =3D=3D XML_ELEMENT_NODE) { - size_t i =3D 0; - while (1) { - if (found) - i =3D found_i; - - if (virXMLNodeNameEqual(cur, virAttr[i].id)) { + nattrNodes =3D virXMLNodeGetSubelementList(node, NULL, &attrNodes); - found_i =3D i; - found =3D true; - ret->prtclType =3D virAttr[i].prtclType; + if (nattrNodes > 0) { + size_t i; + size_t attr; - if (virNWFilterRuleDetailsParse(cur, - ret, - virAttr[i].att) < 0) { - return NULL; - } - if (virNWFilterRuleValidate(ret) < 0) - return NULL; + /* First we look up the type of the first valid element. The rest = of + * the parsing then only considers elements with same name. */ + for (i =3D 0; i < nattrNodes; i++) { + for (attr =3D 0; virAttr[attr].id; attr++) { + if (virXMLNodeNameEqual(attrNodes[i], virAttr[attr].id)) { + ret->prtclType =3D virAttr[attr].prtclType; break; } - if (!found) { - i++; - if (!virAttr[i].id) - break; - } else { - break; - } } + + /* if we've found the first correct element end the search */ + if (virAttr[attr].id) + break; + } + + /* parse the correct subelements now */ + for (i =3D 0; i < nattrNodes; i++) { + /* no valid elements */ + if (!virAttr[attr].id) + break; + + if (!virXMLNodeNameEqual(attrNodes[i], virAttr[attr].id)) + continue; + + if (virNWFilterRuleDetailsParse(attrNodes[i], ret, virAttr[att= r].att) < 0) + return NULL; } - cur =3D cur->next; + if (virNWFilterRuleValidate(ret) < 0) + return NULL; } virNWFilterRuleDefFixup(ret); --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705343; cv=none; d=zohomail.com; s=zohoarc; b=T6uj1M879myL73nEBaXXUi1etiRVjA4E/+NenAWLOaZWFz6SCeEvK90V1i4guzAQWwMv4Fj2BSRtahnFfmZw5GrldEbUM+Eavtr0+iHylC4tM5jLuwUDeQ+Rp34tCijGsYq4zF+w5glubOmUCb480Ej6jvmC6n0ypGqi4s1l8dg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705343; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=fj2jIsdD6S7vq/hAU36SEKBaz47wC3H7C8YqXue7UFM=; b=nWKl80HwpmDpioGlorEdquDY966yJwaxmLZM3E60JzUQHk/DIqcO1wM6YZC2xi4Rz1ZZadpKIdNnwZINp3tMYChPSOMk3EcjgWgzQ/dgNQfEowrjGUNky+wgoEp2AFM2phA3NzjFJ9gNS0/08dv97WeMvPkegX5PA1ITxbncEtg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1685705343963283.7293792750396; Fri, 2 Jun 2023 04:29:03 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-183-Sp5nFiPyP7CZW022Q8s22A-1; Fri, 02 Jun 2023 07:28:43 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 03CB63C1392F; Fri, 2 Jun 2023 11:28:39 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id E58AE40CFD45; Fri, 2 Jun 2023 11:28:38 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id DB93519465A0; Fri, 2 Jun 2023 11:28:38 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id C3E0F1946F04 for ; Fri, 2 Jun 2023 11:28:37 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id B499F9E68; Fri, 2 Jun 2023 11:28:37 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3AEA68162 for ; Fri, 2 Jun 2023 11:28:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705343; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=fj2jIsdD6S7vq/hAU36SEKBaz47wC3H7C8YqXue7UFM=; b=W/JZS2Puh3Y9rOxHMoYZCm1G6wjB5dbRTsv86+vQzSbcGNKXsVRuh2jlrIofab/rParp9J ic8deECzyrz1xWwfvNRmiIlkyO7AM981cLH6dPmzS/fX2QMl9FrwdAfFBxcoAat3pc2sH4 /Wz02R5ObF0zKbECyET9mYnbvNfo7ds= X-MC-Unique: Sp5nFiPyP7CZW022Q8s22A-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 13/15] virNWFilterRuleDefDetailsFormat: Refactor formatter Date: Fri, 2 Jun 2023 13:28:23 +0200 Message-Id: <9a34f818ef956cde04751c027dee186097678ace.1685705273.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705344370100001 Content-Type: text/plain; charset="utf-8" Format the rule attributes in two passes, first for positive 'match' and second pass for negative. This removes the crazy logic for switching between match modes inside the formatter. The refactor makes it also more clear in which cases we actually do format something. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/nwfilter_conf.c | 232 +++++++++----------- tests/nwfilterxml2xmlout/quirks-invalid.xml | 2 +- 2 files changed, 107 insertions(+), 127 deletions(-) diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index e6f7c0f8b7..f96ae707f9 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -2701,146 +2701,119 @@ static void virNWFilterRuleDefDetailsFormat(virBuffer *buf, const char *type, const virXMLAttr2Struct *att, - virNWFilterRuleDef *def) + virNWFilterRuleDef *def, + bool negative, + bool *hasAttrs) { - size_t i =3D 0, j; - bool typeShown =3D false; - bool neverShown =3D true; - bool asHex; - enum match { - MATCH_NONE =3D 0, - MATCH_YES, - MATCH_NO - } matchShown =3D MATCH_NONE; - nwItemDesc *item; + g_auto(virBuffer) attrBuf =3D VIR_BUFFER_INITIALIZER; + bool present =3D false; + size_t i; + size_t j; - while (att[i].name) { - virNWFilterEntryItemFlags flags; + if (negative) + virBufferAddLit(&attrBuf, " match=3D'no'"); + + for (i =3D 0; att[i].name; i++) { + nwItemDesc *item; VIR_WARNINGS_NO_CAST_ALIGN item =3D (nwItemDesc *)((char *)def + att[i].dataIdx); VIR_WARNINGS_RESET - flags =3D item->flags; - if ((flags & NWFILTER_ENTRY_ITEM_FLAG_EXISTS)) { - if (!typeShown) { - virBufferAsprintf(buf, "<%s", type); - typeShown =3D true; - neverShown =3D false; - } + if (!(item->flags & NWFILTER_ENTRY_ITEM_FLAG_EXISTS)) + continue; - if ((flags & NWFILTER_ENTRY_ITEM_FLAG_IS_NEG)) { - if (matchShown =3D=3D MATCH_NONE) { - virBufferAddLit(buf, " match=3D'no'"); - matchShown =3D MATCH_NO; - } else if (matchShown =3D=3D MATCH_YES) { - virBufferAddLit(buf, "/>\n"); - typeShown =3D false; - matchShown =3D MATCH_NONE; - continue; - } - } else { - if (matchShown =3D=3D MATCH_NO) { - virBufferAddLit(buf, "/>\n"); - typeShown =3D false; - matchShown =3D MATCH_NONE; - continue; - } - matchShown =3D MATCH_YES; + if (negative !=3D !!(item->flags & NWFILTER_ENTRY_ITEM_FLAG_IS_NEG= )) + continue; + + present =3D true; + *hasAttrs =3D true; + + virBufferAsprintf(&attrBuf, " %s=3D'", att[i].name); + + if (att[i].formatter && !(item->flags & NWFILTER_ENTRY_ITEM_FLAG_H= AS_VAR)) { + if (!att[i].formatter(&attrBuf, def, item)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("formatter for %1$s %2$s reported error"), + type, att[i].name); + return; } + } else if ((item->flags & NWFILTER_ENTRY_ITEM_FLAG_HAS_VAR)) { + virBufferAddChar(&attrBuf, '$'); + virNWFilterVarAccessPrint(item->varAccess, &attrBuf); + } else { - virBufferAsprintf(buf, " %s=3D'", - att[i].name); - if (att[i].formatter && !(flags & NWFILTER_ENTRY_ITEM_FLAG_HAS= _VAR)) { - if (!att[i].formatter(buf, def, item)) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("formatter for %1$s %2$s reported error= "), - type, - att[i].name); - return; - } - } else if ((flags & NWFILTER_ENTRY_ITEM_FLAG_HAS_VAR)) { - virBufferAddChar(buf, '$'); - virNWFilterVarAccessPrint(item->varAccess, buf); - } else { - asHex =3D false; - - switch (item->datatype) { - - case DATATYPE_UINT8_HEX: - asHex =3D true; - G_GNUC_FALLTHROUGH; - case DATATYPE_IPMASK: - case DATATYPE_IPV6MASK: - /* display all masks in CIDR format */ - case DATATYPE_UINT8: - virBufferAsprintf(buf, asHex ? "0x%x" : "%d", - item->u.u8); - break; - - case DATATYPE_UINT16_HEX: - asHex =3D true; - G_GNUC_FALLTHROUGH; - case DATATYPE_UINT16: - virBufferAsprintf(buf, asHex ? "0x%x" : "%d", - item->u.u16); - break; - - case DATATYPE_UINT32_HEX: - asHex =3D true; - G_GNUC_FALLTHROUGH; - case DATATYPE_UINT32: - virBufferAsprintf(buf, asHex ? "0x%x" : "%u", - item->u.u32); - break; - - case DATATYPE_IPADDR: - case DATATYPE_IPV6ADDR: - virNWIPAddressFormat(buf, - &item->u.ipaddr); - break; - - case DATATYPE_MACMASK: - case DATATYPE_MACADDR: - for (j =3D 0; j < 6; j++) - virBufferAsprintf(buf, "%02x%s", - item->u.macaddr.addr[j], - (j < 5) ? ":" : ""); - break; - - case DATATYPE_STRINGCOPY: - virBufferEscapeString(buf, "%s", item->u.string); - break; - - case DATATYPE_BOOLEAN: - if (item->u.boolean) - virBufferAddLit(buf, "true"); - else - virBufferAddLit(buf, "false"); - break; - - case DATATYPE_IPSETNAME: - case DATATYPE_IPSETFLAGS: - case DATATYPE_STRING: - case DATATYPE_LAST: - default: - virBufferAsprintf(buf, - "UNSUPPORTED DATATYPE 0x%02x\n", - att[i].datatype); - } + switch (item->datatype) { + + case DATATYPE_UINT8_HEX: + virBufferAsprintf(&attrBuf, "0x%x", item->u.u8); + break; + + case DATATYPE_IPMASK: + case DATATYPE_IPV6MASK: + /* display all masks in CIDR format */ + case DATATYPE_UINT8: + virBufferAsprintf(&attrBuf, "%d", item->u.u8); + break; + + case DATATYPE_UINT16_HEX: + virBufferAsprintf(&attrBuf, "0x%x", item->u.u16); + break; + + case DATATYPE_UINT16: + virBufferAsprintf(&attrBuf, "%d", item->u.u16); + break; + + case DATATYPE_UINT32_HEX: + virBufferAsprintf(&attrBuf, "0x%x", item->u.u32); + break; + + case DATATYPE_UINT32: + virBufferAsprintf(&attrBuf, "%u", item->u.u32); + break; + + case DATATYPE_IPADDR: + case DATATYPE_IPV6ADDR: + virNWIPAddressFormat(&attrBuf, &item->u.ipaddr); + break; + + case DATATYPE_MACMASK: + case DATATYPE_MACADDR: + for (j =3D 0; j < 6; j++) + virBufferAsprintf(&attrBuf, "%02x%s", + item->u.macaddr.addr[j], + (j < 5) ? ":" : ""); + break; + + case DATATYPE_STRINGCOPY: + virBufferEscapeString(&attrBuf, "%s", item->u.string); + break; + + case DATATYPE_BOOLEAN: + if (item->u.boolean) + virBufferAddLit(&attrBuf, "true"); + else + virBufferAddLit(&attrBuf, "false"); + break; + + case DATATYPE_IPSETNAME: + case DATATYPE_IPSETFLAGS: + case DATATYPE_STRING: + case DATATYPE_LAST: + default: + virBufferAsprintf(&attrBuf, + "UNSUPPORTED DATATYPE 0x%02x\n", + att[i].datatype); } - virBufferAddLit(buf, "'"); } - i++; + + virBufferAddLit(&attrBuf, "'"); } - if (typeShown) - virBufferAddLit(buf, "/>\n"); - if (neverShown) - virBufferAsprintf(buf, - "<%s/>\n", type); + if (!present) + return; - return; + virXMLFormatElement(buf, type, &attrBuf, NULL); } @@ -2861,10 +2834,17 @@ virNWFilterRuleDefFormat(virBuffer *buf, virBufferAddLit(&attrBuf, " statematch=3D'false'"); for (i =3D 0; virAttr[i].id; i++) { + bool hasAttrs =3D false; + if (virAttr[i].prtclType !=3D def->prtclType) continue; - virNWFilterRuleDefDetailsFormat(&childBuf, virAttr[i].id, virAttr[= i].att, def); + virNWFilterRuleDefDetailsFormat(&childBuf, virAttr[i].id, virAttr[= i].att, def, false, &hasAttrs); + virNWFilterRuleDefDetailsFormat(&childBuf, virAttr[i].id, virAttr[= i].att, def, true, &hasAttrs); + + if (!hasAttrs) + virBufferAsprintf(&childBuf, "<%s/>\n", virAttr[i].id); + break; } diff --git a/tests/nwfilterxml2xmlout/quirks-invalid.xml b/tests/nwfilterxm= l2xmlout/quirks-invalid.xml index f244d45e08..5159eaf21d 100644 --- a/tests/nwfilterxml2xmlout/quirks-invalid.xml +++ b/tests/nwfilterxml2xmlout/quirks-invalid.xml @@ -1,7 +1,7 @@ 01a992d2-f8c8-7c27-f69b-ab0a9d377379 - + --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705346; cv=none; d=zohomail.com; s=zohoarc; b=Mo8X1VmBnshKevaYQ+mnd8hazItGyqnE7xFEpxkcnos00bRIDVwBH7fu0+X+xCxQHUbRiYZr2hlsg9jVUSlJfR3CLSxK0x6IjFFWkZShA2niMbRtxx6P1e/oNHGDhnZ/ZvNuTgI47rELtj1GUe6N+/OVAZJu3zQrdJ22gQeOZbU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705346; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=fqmVSX8hO84E5kmsG+cQHKAtenWwoRq32jK7vbi0oGw=; b=ZGcsQwD/wJnPEC/EROQDDVGl0OjsFdXGvZJc0Gsug6vV2TTp/BUdj8NncXVJ7NRhAxe4JUsgvemNHrwwJWGxsgNI6WALJ8SLSGNqCeYBPVuCSydXbRnpXi4pQXi1M2UV+p5IlPLm6tkDvQ317XtIT85MOwyMyvRZB4yXlY0Yvb4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1685705346441903.8016418141989; Fri, 2 Jun 2023 04:29:06 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-297-NVnAxIgpOwGL-EphkRmySg-1; Fri, 02 Jun 2023 07:28:43 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 39785801224; Fri, 2 Jun 2023 11:28:40 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 26067492B0A; Fri, 2 Jun 2023 11:28:40 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 064D019465A2; Fri, 2 Jun 2023 11:28:40 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id B42301946595 for ; Fri, 2 Jun 2023 11:28:38 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 875F29E8B; Fri, 2 Jun 2023 11:28:38 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0BD859E68 for ; Fri, 2 Jun 2023 11:28:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705345; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=fqmVSX8hO84E5kmsG+cQHKAtenWwoRq32jK7vbi0oGw=; b=HjyJskXXz6MNW6q2UTDYbMXtb3499vVDGr/2b7JcItRQVPvJOekcbHMyvt5Aws/VgWboaP eVtTUfTWBFpkXKxnk86VFs2qsvJPBHHCNAf5XHpOpx7kG0lF+yN9EKMDZ+OWDiVupYknYx Vw0xujmjSBxdRcVSKyH3sfgTU4WH3ng= X-MC-Unique: NVnAxIgpOwGL-EphkRmySg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 14/15] conf: nwfilter: Refactor virNWFilterIncludeParse Date: Fri, 2 Jun 2023 13:28:24 +0200 Message-Id: <417918159bef1bd40039ad1e867ad508b1a91e37.1685705273.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705348296100009 Content-Type: text/plain; charset="utf-8" Use automatic memory freeing and modern XML parsers to simplify the function. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/nwfilter_conf.c | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index f96ae707f9..b79fd2561e 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -298,7 +298,7 @@ virNWFilterIncludeDefFree(virNWFilterIncludeDef *inc) g_free(inc->filterref); g_free(inc); } - +G_DEFINE_AUTOPTR_CLEANUP_FUNC(virNWFilterIncludeDef, virNWFilterIncludeDef= Free); static void virNWFilterEntryFree(virNWFilterEntry *entry) @@ -2031,27 +2031,15 @@ virNWFilterRuleDetailsParse(xmlNodePtr node, static virNWFilterIncludeDef * virNWFilterIncludeParse(xmlNodePtr cur) { - virNWFilterIncludeDef *ret; - - ret =3D g_new0(virNWFilterIncludeDef, 1); - - ret->filterref =3D virXMLPropString(cur, "filter"); - if (!ret->filterref) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", - _("rule node requires action attribute")); - goto err_exit; - } + g_autoptr(virNWFilterIncludeDef) ret =3D g_new0(virNWFilterIncludeDef,= 1); - ret->params =3D virNWFilterParseParamAttributes(cur); - if (!ret->params) - goto err_exit; + if (!(ret->filterref =3D virXMLPropStringRequired(cur, "filter"))) + return NULL; - return ret; + if (!(ret->params =3D virNWFilterParseParamAttributes(cur))) + return NULL; - err_exit: - virNWFilterIncludeDefFree(ret); - return NULL; + return g_steal_pointer(&ret); } --=20 2.40.1 From nobody Thu May 2 08:41:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1685705404; cv=none; d=zohomail.com; s=zohoarc; b=dPE3OkyGy5Z/5B1umv+DLdmbhLpUyrVXq0hkDFoHFvegcMY3xkOOpZfpMcEMLYD8Vor3OnwhZKKtrDvJQqFSyzd2hIgtIcyhmNp1wwv59aA3R+qfI4PIiH/JF8DTCL1ayzvz2w9attNKWc/2uVLEY9qXNM0AI1jVFYdPFqpHP+Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685705404; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=3ILj8wQ92X6Q+jVvgRqyJDzdey76zahYEsZud1yVIlY=; b=VBCJreBNsmNPVOSvts2E01i4iTPedxfB9cYO7JJmAFf3YwZkSv/xx1SNznEYIkUVm59IDuSRcObdsQdAphI141MK5a1ZXi7PDtAKVCSaBIL452oL8wN0EkeiYUBTa0MLHVJA6LvYkvAXoWEe7lL2tU1jkwfQ+4t0XgUyQSd7YwQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1685705404684486.66988019608107; Fri, 2 Jun 2023 04:30:04 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-341-ZzddNHhnO2SVvuGbSfakLA-1; Fri, 02 Jun 2023 07:28:44 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4ADEE3C13926; Fri, 2 Jun 2023 11:28:41 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3681A2026D49; Fri, 2 Jun 2023 11:28:41 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 27F9B19465B6; Fri, 2 Jun 2023 11:28:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 81A3619465A2 for ; Fri, 2 Jun 2023 11:28:39 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 6E7A19E60; Fri, 2 Jun 2023 11:28:39 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.14]) by smtp.corp.redhat.com (Postfix) with ESMTP id DE8DB8162 for ; Fri, 2 Jun 2023 11:28:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685705403; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=3ILj8wQ92X6Q+jVvgRqyJDzdey76zahYEsZud1yVIlY=; b=SiR3T+IsZn1SuARW6awXifu7Mb8fisAm6mEu+Ts4cwmZH/ZZ2voEl3j8VdHH/Qr3uey8TW 00bge7Xk6QiW3A+P0y5AZMdEhXxpHLlgent+vAxiQnyPcd0fQR9aZBOm8lm2aPqOKvfCS3 uPDSCwfOzsDmyRD0mlKys4PkoIUtgYM= X-MC-Unique: ZzddNHhnO2SVvuGbSfakLA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 15/15] conf: nwfilter: Refactor virNWFilterFormatParamAttributes Date: Fri, 2 Jun 2023 13:28:25 +0200 Message-Id: <83b865b05f4cc8a07b9ce2ff0ef7f8490caed278.1685705273.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1685705406608100001 Content-Type: text/plain; charset="utf-8" Use virXMLFormatElement and simplify the formatter. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/nwfilter_params.c | 45 ++++++++++++++------------------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/src/conf/nwfilter_params.c b/src/conf/nwfilter_params.c index 496ed2f0b8..868baf7192 100644 --- a/src/conf/nwfilter_params.c +++ b/src/conf/nwfilter_params.c @@ -731,45 +731,34 @@ virNWFilterFormatParamAttributes(virBuffer *buf, GHashTable *table, const char *filterref) { - virHashKeyValuePair *items; - size_t i, j; - int card, numKeys; - - numKeys =3D virHashSize(table); + g_auto(virBuffer) attrBuf =3D VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) childBuf =3D VIR_BUFFER_INIT_CHILD(buf); + g_autofree virHashKeyValuePair *items =3D NULL; + size_t i; + size_t nitems; - if (numKeys < 0) { + if (!(items =3D virHashGetItems(table, &nitems, true))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("missing filter parameter table")); return -1; } - items =3D virHashGetItems(table, NULL, true); - if (!items) - return -1; + virBufferAsprintf(&attrBuf, " filter=3D'%s'", filterref); - virBufferAsprintf(buf, "\n"); - virBufferAdjustIndent(buf, 2); - for (i =3D 0; i < numKeys; i++) { - const virNWFilterVarValue *value =3D items[i].value; + for (i =3D 0; i < nitems; i++) { + const virNWFilterVarValue *value =3D items[i].value; + size_t npar =3D virNWFilterVarValueGetCardinality(value); + size_t j; - card =3D virNWFilterVarValueGetCardinality(value); + for (j =3D 0; j < npar; j++) + virBufferAsprintf(&childBuf, + "\n", + (const char *)items[i].key, + virNWFilterVarValueGetNthValue(value, j)); - for (j =3D 0; j < card; j++) - virBufferAsprintf(buf, - "\n= ", - (const char *)items[i].key, - virNWFilterVarValueGetNthValue(value, j)= ); - - } - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "\n"); - } else { - virBufferAddLit(buf, "/>\n"); } - VIR_FREE(items); + virXMLFormatElement(buf, "filterref", &attrBuf, &childBuf); return 0; } --=20 2.40.1