From nobody Mon Feb 9 07:54:53 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 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=1569110683; cv=none; d=zoho.com; s=zohoarc; b=jgV0V24UUWCpSY595pqzYhrD+x97gO68Wg05xJCj4XxKNdDKyASBuk/NYIg4ESvlJcWmg+4LEz/ry9lc4GWL8ipzNOfR1Edwgvmx7RlV/27kURb3z5aBqf2lQ+MTkexiZxihcuVchWU3rp0P3gLox3FDmXnAkqH6Ob3eiAOxsfE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569110683; 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:ARC-Authentication-Results; bh=1icE9QZqwJWUySx2dEKOQR/rmtJHehk2eynCvEzwYOw=; b=cx1+WVzs+v883r2WBMxAsGUkrv8OuJwzWxn7El/+ty3RSVeYg9EJSnIaJY5iVPMdYq4UyBG7e/X4NYu1MBzfsE688cbwiDpz6Z8UQkMAtn+J6eu22arEicfVOCieQaX/QQ9uHeJ8ez7Ar/e23tnQ6UjP0GNAL2NTsA+3Kuaz91w= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 156911068315336.10853063093407; Sat, 21 Sep 2019 17:04:43 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B30B8550CF; Sun, 22 Sep 2019 00:04:41 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 827045C1B5; Sun, 22 Sep 2019 00:04:41 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 0BB434E58A; Sun, 22 Sep 2019 00:04:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x8M00AHu009211 for ; Sat, 21 Sep 2019 20:00:10 -0400 Received: by smtp.corp.redhat.com (Postfix) id 44F755DA21; Sun, 22 Sep 2019 00:00:10 +0000 (UTC) Received: from vhost2.laine.org (ovpn-116-86.phx2.redhat.com [10.3.116.86]) by smtp.corp.redhat.com (Postfix) with ESMTP id DB522612B1; Sun, 22 Sep 2019 00:00:09 +0000 (UTC) From: Laine Stump To: libvir-list@redhat.com Date: Sat, 21 Sep 2019 19:59:56 -0400 Message-Id: <20190921235957.31265-2-laine@redhat.com> In-Reply-To: <20190921235957.31265-1-laine@redhat.com> References: <20190921235957.31265-1-laine@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/2] conf: take advantage of VIR_AUTO* in virDomainNetCreatePort() X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Sun, 22 Sep 2019 00:04:42 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Before adding new code to this function that will be made easier by using auto-cleaning pointers, update it to use auto-cleaning pointers (and the more modern virErrorPreserveLast()). Signed-off-by: Laine Stump --- src/conf/domain_conf.c | 53 ++++++++++++++---------------------- src/conf/virnetworkportdef.h | 1 + 2 files changed, 21 insertions(+), 33 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 76aaa63f57..b6fa802523 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -30873,60 +30873,47 @@ virDomainNetCreatePort(virConnectPtr conn, virDomainNetDefPtr iface, unsigned int flags) { - virNetworkPtr net =3D NULL; - int ret =3D -1; - virNetworkPortDefPtr portdef =3D NULL; - virNetworkPortPtr port =3D NULL; - char *portxml =3D NULL; - virErrorPtr saved; + virErrorPtr save_err; + VIR_AUTOUNREF(virNetworkPtr) net =3D NULL; + VIR_AUTOPTR(virNetworkPortDef) portdef =3D NULL; + VIR_AUTOUNREF(virNetworkPortPtr) port =3D NULL; + VIR_AUTOFREE(char *) portxml =3D NULL; =20 if (!(net =3D virNetworkLookupByName(conn, iface->data.network.name))) return -1; =20 if (flags & VIR_NETWORK_PORT_CREATE_RECLAIM) { if (!(portdef =3D virDomainNetDefActualToNetworkPort(dom, iface))) - goto cleanup; + return -1; } else { if (!(portdef =3D virDomainNetDefToNetworkPort(dom, iface))) - goto cleanup; + return -1; } =20 if (!(portxml =3D virNetworkPortDefFormat(portdef))) - goto cleanup; + return -1; =20 + /* prepare to re-use portdef */ virNetworkPortDefFree(portdef); portdef =3D NULL; =20 if (!(port =3D virNetworkPortCreateXML(net, portxml, flags))) - goto cleanup; + return -1; =20 + /* prepare to re-use portxml */ VIR_FREE(portxml); =20 - if (!(portxml =3D virNetworkPortGetXMLDesc(port, 0))) - goto deleteport; - - if (!(portdef =3D virNetworkPortDefParseString(portxml))) - goto deleteport; - - if (virDomainNetDefActualFromNetworkPort(iface, portdef) < 0) - goto deleteport; + if (!(portxml =3D virNetworkPortGetXMLDesc(port, 0)) || + !(portdef =3D virNetworkPortDefParseString(portxml)) || + virDomainNetDefActualFromNetworkPort(iface, portdef) < 0) { + virErrorPreserveLast(&save_err); + virNetworkPortDelete(port, 0); + virErrorRestore(&save_err); + return -1; + } =20 virNetworkPortGetUUID(port, iface->data.network.portid); - - ret =3D 0; - cleanup: - virNetworkPortDefFree(portdef); - VIR_FREE(portxml); - virObjectUnref(port); - virObjectUnref(net); - return ret; - - deleteport: - saved =3D virSaveLastError(); - virNetworkPortDelete(port, 0); - virSetError(saved); - virFreeError(saved); - goto cleanup; + return 0; } =20 int diff --git a/src/conf/virnetworkportdef.h b/src/conf/virnetworkportdef.h index 3d42b9b6a2..796e269fe0 100644 --- a/src/conf/virnetworkportdef.h +++ b/src/conf/virnetworkportdef.h @@ -82,6 +82,7 @@ struct _virNetworkPortDef { =20 void virNetworkPortDefFree(virNetworkPortDefPtr port); +VIR_DEFINE_AUTOPTR_FUNC(virNetworkPortDef, virNetworkPortDefFree); =20 virNetworkPortDefPtr virNetworkPortDefParseNode(xmlDocPtr xml, --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list