From nobody Fri Dec 19 21:49:45 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1587477068; cv=none; d=zohomail.com; s=zohoarc; b=GrDcXroeC6ITP5ODiF4KSRU7s23MjBei3GMoPlDF7R9ng0uvEN8zCUBXQCfet877yyItVtqALIxksemSmC4EnfX53CO8YxdJFyyB2pKpvXuiqT4H+veeBLEPHKMtqSzoK847OMVxr9YQt7k2I8ZSJBMIYN5A0DK4nnEsFFR3E2M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477068; h=Content-Type:Content-Transfer-Encoding:Cc: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=ImIZ7VJeHcGm1BEx7YFYBbce2KTmZ/em/lEZrRG8cJM=; b=ZFz93eNfy10As9TYp5nX0ocEF5xAPYdDh1KVKyJd0DDzAnCJn4MG5zt+f3L3GkfXkQHCsCQYX8VL6jVUowarOpQFsWkIMShZJGiUQfIAhsxVecZFClScBeOpUf7K+/jV+FKVDqO18AzZQul33HlBtdxCbJRguosodGO4f4lqgLE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by mx.zohomail.com with SMTPS id 1587477068332820.0499784839191; Tue, 21 Apr 2020 06:51:08 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-11-1TIbv-tRO0WyE6ciL6ezSg-1; Tue, 21 Apr 2020 09:51:02 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2DA878024D2; Tue, 21 Apr 2020 13:50:56 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 056E65DA83; Tue, 21 Apr 2020 13:50:56 +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 AFBA91803500; Tue, 21 Apr 2020 13:50:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 03LDobY1003472 for ; Tue, 21 Apr 2020 09:50:38 -0400 Received: by smtp.corp.redhat.com (Postfix) id BD1AD11921A6; Tue, 21 Apr 2020 13:50:37 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B8C8511921A2 for ; Tue, 21 Apr 2020 13:50:33 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1131686BCD5 for ; Tue, 21 Apr 2020 13:50:33 +0000 (UTC) Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-262-jK5boiKMMyiODiDQi0CQow-1; Tue, 21 Apr 2020 09:50:28 -0400 Received: by mail-wm1-f49.google.com with SMTP id h2so3629984wmb.4 for ; Tue, 21 Apr 2020 06:50:28 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477067; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc: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=ImIZ7VJeHcGm1BEx7YFYBbce2KTmZ/em/lEZrRG8cJM=; b=EAXe/ATqjtI/4Noe1lCVn6/pFHa5b8fCGkjMXRevlFmQCFD1dQjFWvOJWLXWN7FTIlW3Tg ogNGr5O042EhTqskeZYkWKWAHOaUuugtNWkHfo5D2Cha5SKX1A2mrNn/wLRg7G8FYQ+mnm IcPWfIQ6QZIKSaj2vxn4KmZaTLjHVNE= X-MC-Unique: 1TIbv-tRO0WyE6ciL6ezSg-1 X-MC-Unique: jK5boiKMMyiODiDQi0CQow-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RrX5deWTCIzIwtRra6lN7Xrj5vNwd69xo5zjfkn6RT0=; b=GoC8LNGEzUpVdiXFuRvkn6MNOHq4iAfpn0uM0/O6FHgRnMGBxqndrUE93GejVOi4Q+ +Mw9Poa2OEPrDq5k6pSQHtPuy+tpkboEKDxyj1Y/JcVvlH84Ajk1qVr18hQyi04qVPvA a6d7YgKgGFYkRXCJ9gdgPwBgRtQ7NWQH+AMMoUtl2lDVp8DDhyjQ5gLZ16mzyhmOTsRh fyJc6xVCWH9tAZZ8F5f3pbWfVYmuO4UZSgWy/GAKXBWVHq+/kakqn9OBpmr17B8/KdTM IQExasV+3xuxtbokr6yEVvvqzwdq6chUQEVPmbO1Qlz4jJfPpVuvvdgpGqTHumObHu0A FcTg== X-Gm-Message-State: AGi0PuaecfeagC+V43DZiGrsFYS2VmqoFAGZahJ3myxytshFG8frOHps 9/HFTcIaDNMNKyYCE3CZd+PTgYQ7WY8= X-Google-Smtp-Source: APiQypKIjOI5PisfaSpTvJBEIjtjcvtTY60bVDR2h1aUTmjNG8Jf/zobB+D4IqXFXLbmfv0OSwTlzw== X-Received: by 2002:a1c:a7c2:: with SMTP id q185mr5086975wme.42.1587477026565; Tue, 21 Apr 2020 06:50:26 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 20/40] datatypes: convert virNWFilterBinding to GObject Date: Tue, 21 Apr 2020 15:49:01 +0200 Message-Id: <20200421134921.3717019-21-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDobY1003472 X-loop: libvir-list@redhat.com Cc: Rafael Fonseca 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: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Rafael Fonseca --- src/conf/virnwfilterbindingobjlist.c | 2 +- src/datatypes.c | 68 +++++++++++++++++++--------- src/datatypes.h | 14 ++++-- src/libvirt-nwfilter.c | 7 ++- src/libvirt_private.syms | 1 + src/nwfilter/nwfilter_driver.c | 3 +- src/rpc/gendispatch.pl | 1 + 7 files changed, 64 insertions(+), 32 deletions(-) diff --git a/src/conf/virnwfilterbindingobjlist.c b/src/conf/virnwfilterbin= dingobjlist.c index 97e4d3c49b..4f4f295b92 100644 --- a/src/conf/virnwfilterbindingobjlist.c +++ b/src/conf/virnwfilterbindingobjlist.c @@ -489,7 +489,7 @@ virNWFilterBindingObjListExport(virNWFilterBindingObjLi= stPtr bindings, cleanup: virObjectListFreeCount(bindingobjs, nbindings); if (ret < 0) { - virObjectListFreeCount(*bindinglist, nbindings); + virGObjectListFreeCount(*bindinglist, nbindings); *bindinglist =3D NULL; } return ret; diff --git a/src/datatypes.c b/src/datatypes.c index e9f6cafd72..a562b5da5f 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -40,7 +40,6 @@ virClassPtr virInterfaceClass; virClassPtr virNetworkClass; virClassPtr virNetworkPortClass; virClassPtr virNodeDeviceClass; -virClassPtr virNWFilterBindingClass; virClassPtr virSecretClass; virClassPtr virStreamClass; virClassPtr virStorageVolClass; @@ -53,7 +52,6 @@ static void virInterfaceDispose(void *obj); static void virNetworkDispose(void *obj); static void virNetworkPortDispose(void *obj); static void virNodeDeviceDispose(void *obj); -static void virNWFilterBindingDispose(void *obj); static void virSecretDispose(void *obj); static void virStreamDispose(void *obj); static void virStorageVolDispose(void *obj); @@ -113,6 +111,24 @@ vir_nw_filter_class_init(virNWFilterClass *klass) obj->finalize =3D virNWFilterFinalize; } =20 +G_DEFINE_TYPE(virNWFilterBinding, vir_nw_filter_binding, G_TYPE_OBJECT); +static void virNWFilterBindingDispose(GObject *obj); +static void virNWFilterBindingFinalize(GObject *obj); + +static void +vir_nw_filter_binding_init(virNWFilterBinding *bdg G_GNUC_UNUSED) +{ +} + +static void +vir_nw_filter_binding_class_init(virNWFilterBindingClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->dispose =3D virNWFilterBindingDispose; + obj->finalize =3D virNWFilterBindingFinalize; +} + virClassPtr virAdmConnectClass; virClassPtr virAdmConnectCloseCallbackDataClass; =20 @@ -171,7 +187,6 @@ virDataTypesOnceInit(void) DECLARE_CLASS(virNetwork); DECLARE_CLASS(virNetworkPort); DECLARE_CLASS(virNodeDevice); - DECLARE_CLASS(virNWFilterBinding); DECLARE_CLASS(virSecret); DECLARE_CLASS(virStream); DECLARE_CLASS(virStorageVol); @@ -980,7 +995,7 @@ virNWFilterFinalize(GObject *obj) * @filtername: name of the network filter * * Allocates a new network filter binding object. When the object is no lo= nger - * needed, virObjectUnref() must be called in order to not leak data. + * needed, g_object_unref() must be called in order to not leak data. * * Returns a pointer to the network filter binding object, or NULL on erro= r. */ @@ -988,16 +1003,15 @@ virNWFilterBindingPtr virGetNWFilterBinding(virConnectPtr conn, const char *portdev, const char *filtername) { - virNWFilterBindingPtr ret =3D NULL; + g_autoptr(virNWFilterBinding) ret =3D NULL; =20 if (virDataTypesInitialize() < 0) return NULL; =20 - virCheckConnectGoto(conn, error); - virCheckNonNullArgGoto(portdev, error); + virCheckConnectReturn(conn, NULL); + virCheckNonNullArgReturn(portdev, NULL); =20 - if (!(ret =3D virObjectNew(virNWFilterBindingClass))) - goto error; + ret =3D VIR_NW_FILTER_BINDING(g_object_new(VIR_TYPE_NW_FILTER_BINDING,= NULL)); =20 ret->portdev =3D g_strdup(portdev); =20 @@ -1005,11 +1019,7 @@ virGetNWFilterBinding(virConnectPtr conn, const char= *portdev, =20 ret->conn =3D virObjectRef(conn); =20 - return ret; - - error: - virObjectUnref(ret); - return NULL; + return g_steal_pointer(&ret); } =20 =20 @@ -1017,22 +1027,38 @@ virGetNWFilterBinding(virConnectPtr conn, const cha= r *portdev, * virNWFilterBindingDispose: * @obj: the network filter binding to release * - * Unconditionally release all memory associated with a nwfilter binding. - * The nwfilter binding object must not be used once this method returns. + * Unreferences the associated connection object, which may also be + * released if its ref count hits zero. + */ +static void +virNWFilterBindingDispose(GObject *obj) +{ + virNWFilterBindingPtr binding =3D VIR_NW_FILTER_BINDING(obj); + + virObjectUnref(binding->conn); + binding->conn =3D NULL; + + G_OBJECT_CLASS(vir_nw_filter_binding_parent_class)->dispose(obj); +} + +/** + * virNWFilterBindingFinalize: + * @obj: the network filter binding to release * - * It will also unreference the associated connection object, - * which may also be released if its ref count hits zero. + * Unconditionally releases all memory associated with a nwfilter binding. + * The nwfilter binding object must not be used once this method returns. */ static void -virNWFilterBindingDispose(void *obj) +virNWFilterBindingFinalize(GObject *obj) { - virNWFilterBindingPtr binding =3D obj; + virNWFilterBindingPtr binding =3D VIR_NW_FILTER_BINDING(obj); =20 VIR_DEBUG("release binding %p %s", binding, binding->portdev); =20 VIR_FREE(binding->portdev); VIR_FREE(binding->filtername); - virObjectUnref(binding->conn); + + G_OBJECT_CLASS(vir_nw_filter_binding_parent_class)->finalize(obj); } =20 =20 diff --git a/src/datatypes.h b/src/datatypes.h index b51514d579..5f0ab5c84b 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -36,7 +36,6 @@ extern virClassPtr virInterfaceClass; extern virClassPtr virNetworkClass; extern virClassPtr virNetworkPortClass; extern virClassPtr virNodeDeviceClass; -extern virClassPtr virNWFilterBindingClass; extern virClassPtr virSecretClass; extern virClassPtr virStreamClass; extern virClassPtr virStorageVolClass; @@ -59,6 +58,13 @@ G_DECLARE_FINAL_TYPE(virDomainSnapshot, #define VIR_TYPE_NW_FILTER vir_nw_filter_get_type() G_DECLARE_FINAL_TYPE(virNWFilter, vir_nw_filter, VIR, NW_FILTER, GObject); =20 +#define VIR_TYPE_NW_FILTER_BINDING vir_nw_filter_binding_get_type() +G_DECLARE_FINAL_TYPE(virNWFilterBinding, + vir_nw_filter_binding, + VIR, + NW_FILTER_BINDING, + GObject); + extern virClassPtr virAdmConnectClass; =20 #define VIR_TYPE_ADM_SERVER vir_adm_server_get_type() @@ -327,8 +333,8 @@ G_DECLARE_FINAL_TYPE(virAdmClient, vir_adm_client, VIR,= ADM_CLIENT, GObject); =20 #define virCheckNWFilterBindingReturn(obj, retval) \ do { \ - virNWFilterBindingPtr _nw =3D (obj); \ - if (!virObjectIsClass(_nw, virNWFilterBindingClass) || \ + virNWFilterBindingPtr _nw =3D VIR_NW_FILTER_BINDING(obj); \ + if (_nw =3D=3D NULL || \ !virObjectIsClass(_nw->conn, virConnectClass)) { \ virReportErrorHelper(VIR_FROM_NWFILTER, \ VIR_ERR_INVALID_NWFILTER_BINDING, \ @@ -799,7 +805,7 @@ struct _virNWFilter { * Internal structure associated to a network filter port binding */ struct _virNWFilterBinding { - virObject parent; + GObject parent; virConnectPtr conn; /* pointer back to the connection= */ char *portdev; /* the network filter port device= name */ char *filtername; /* the network filter name */ diff --git a/src/libvirt-nwfilter.c b/src/libvirt-nwfilter.c index cd3f5759b7..ac34d1fea0 100644 --- a/src/libvirt-nwfilter.c +++ b/src/libvirt-nwfilter.c @@ -621,7 +621,7 @@ virNWFilterBindingFree(virNWFilterBindingPtr binding) =20 virCheckNWFilterBindingReturn(binding, -1); =20 - virObjectUnref(binding); + g_object_unref(binding); return 0; } =20 @@ -819,13 +819,12 @@ virNWFilterBindingGetXMLDesc(virNWFilterBindingPtr bi= nding, unsigned int flags) int virNWFilterBindingRef(virNWFilterBindingPtr binding) { - VIR_DEBUG("binding=3D%p refs=3D%d", binding, - binding ? binding->parent.u.s.refs : 0); + VIR_DEBUG("binding=3D%p", binding); =20 virResetLastError(); =20 virCheckNWFilterBindingReturn(binding, -1); =20 - virObjectRef(binding); + g_object_ref(binding); return 0; } diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 44ffeb6abc..ba4a5f0986 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1348,6 +1348,7 @@ virCPUx86FeatureFilterSelectMSR; # datatypes.h vir_domain_checkpoint_get_type; vir_domain_snapshot_get_type; +vir_nw_filter_binding_get_type; vir_nw_filter_get_type; virConnectClass; virConnectCloseCallbackDataCall; diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c index 1c407727db..cbf396342e 100644 --- a/src/nwfilter/nwfilter_driver.c +++ b/src/nwfilter/nwfilter_driver.c @@ -785,8 +785,7 @@ nwfilterBindingCreateXML(virConnectPtr conn, =20 if (virNWFilterInstantiateFilter(driver, def) < 0) { virNWFilterBindingObjListRemove(driver->bindings, obj); - virObjectUnref(ret); - ret =3D NULL; + g_clear_object(&ret); goto cleanup; } virNWFilterBindingObjSave(obj, driver->bindingDir); diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index b51e2715ee..553ede5024 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -199,6 +199,7 @@ my %gobject_impl =3D ( virDomainCheckpoint =3D> 1, virDomainSnapshot =3D> 1, virNWFilter =3D> 1, + virNWFilterBinding =3D> 1, ); =20 sub use_gobject { --=20 2.25.3