From nobody Mon Mar 30 00:47:03 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.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; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1491852987427728.7944208247983; Mon, 10 Apr 2017 12:36:27 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6D06180492; Mon, 10 Apr 2017 19:35:55 +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 3774578C0A; Mon, 10 Apr 2017 19:35:55 +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 D272718523CF; Mon, 10 Apr 2017 19:35:54 +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 v3AJZnB2017133 for ; Mon, 10 Apr 2017 15:35:49 -0400 Received: by smtp.corp.redhat.com (Postfix) id 9639017AD2; Mon, 10 Apr 2017 19:35:49 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-15.phx2.redhat.com [10.3.116.15]) by smtp.corp.redhat.com (Postfix) with ESMTP id 47D0A17B54 for ; Mon, 10 Apr 2017 19:35:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 6D06180492 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 6D06180492 From: John Ferlan To: libvir-list@redhat.com Date: Mon, 10 Apr 2017 15:35:44 -0400 Message-Id: <20170410193544.1347-4-jferlan@redhat.com> In-Reply-To: <20170410193544.1347-1-jferlan@redhat.com> References: <20170410193544.1347-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 3/3] nwfilter: Introduce virNWFilterObjListExport 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: , MIME-Version: 1.0 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.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 10 Apr 2017 19:35:56 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Essentially code motion to move the ListExport function from nwfilter_driver into virnwfilterobj Signed-off-by: John Ferlan --- src/conf/virnwfilterobj.c | 50 ++++++++++++++++++++++++++++++++++++++= ++++ src/conf/virnwfilterobj.h | 6 +++++ src/libvirt_private.syms | 1 + src/nwfilter/nwfilter_driver.c | 42 +++-------------------------------- 4 files changed, 60 insertions(+), 39 deletions(-) diff --git a/src/conf/virnwfilterobj.c b/src/conf/virnwfilterobj.c index ce19e60..34d843c 100644 --- a/src/conf/virnwfilterobj.c +++ b/src/conf/virnwfilterobj.c @@ -358,6 +358,56 @@ virNWFilterObjGetNames(virNWFilterObjListPtr nwfilters, } =20 =20 +int +virNWFilterObjListExport(virConnectPtr conn, + virNWFilterObjListPtr nwfilters, + virNWFilterPtr **filters, + virNWFilterObjListFilter aclfilter) +{ + virNWFilterPtr *tmp_filters =3D NULL; + int nfilters =3D 0; + virNWFilterPtr filter =3D NULL; + virNWFilterObjPtr obj =3D NULL; + size_t i; + int ret =3D -1; + + if (!filters) { + ret =3D nwfilters->count; + goto cleanup; + } + + if (VIR_ALLOC_N(tmp_filters, nwfilters->count + 1) < 0) + goto cleanup; + + for (i =3D 0; i < nwfilters->count; i++) { + obj =3D nwfilters->objs[i]; + virNWFilterObjLock(obj); + if (!aclfilter || aclfilter(conn, obj->def)) { + if (!(filter =3D virGetNWFilter(conn, obj->def->name, + obj->def->uuid))) { + virNWFilterObjUnlock(obj); + goto cleanup; + } + tmp_filters[nfilters++] =3D filter; + } + virNWFilterObjUnlock(obj); + } + + *filters =3D tmp_filters; + tmp_filters =3D NULL; + ret =3D nfilters; + + cleanup: + if (tmp_filters) { + for (i =3D 0; i < nfilters; i ++) + virObjectUnref(tmp_filters[i]); + } + VIR_FREE(tmp_filters); + + return ret; +} + + static virNWFilterObjPtr virNWFilterObjLoadConfig(virNWFilterObjListPtr nwfilters, const char *configDir, diff --git a/src/conf/virnwfilterobj.h b/src/conf/virnwfilterobj.h index cd1600c..49b1170 100644 --- a/src/conf/virnwfilterobj.h +++ b/src/conf/virnwfilterobj.h @@ -98,6 +98,12 @@ virNWFilterObjGetNames(virNWFilterObjListPtr nwfilters, int maxnames); =20 int +virNWFilterObjListExport(virConnectPtr conn, + virNWFilterObjListPtr nwfilters, + virNWFilterPtr **filters, + virNWFilterObjListFilter aclfilter); + +int virNWFilterObjLoadAllConfigs(virNWFilterObjListPtr nwfilters, const char *configDir); =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 033cdc6..e1318f3 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -963,6 +963,7 @@ virNWFilterObjAssignDef; virNWFilterObjFindByName; virNWFilterObjFindByUUID; virNWFilterObjGetNames; +virNWFilterObjListExport; virNWFilterObjListFree; virNWFilterObjLoadAllConfigs; virNWFilterObjLock; diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c index 0d164a2..f6c419c 100644 --- a/src/nwfilter/nwfilter_driver.c +++ b/src/nwfilter/nwfilter_driver.c @@ -446,12 +446,7 @@ nwfilterConnectListAllNWFilters(virConnectPtr conn, virNWFilterPtr **filters, unsigned int flags) { - virNWFilterPtr *tmp_filters =3D NULL; - int nfilters =3D 0; - virNWFilterPtr filter =3D NULL; - virNWFilterObjPtr obj =3D NULL; - size_t i; - int ret =3D -1; + int ret; =20 virCheckFlags(0, -1); =20 @@ -459,40 +454,9 @@ nwfilterConnectListAllNWFilters(virConnectPtr conn, return -1; =20 nwfilterDriverLock(); - - if (!filters) { - ret =3D driver->nwfilters.count; - goto cleanup; - } - - if (VIR_ALLOC_N(tmp_filters, driver->nwfilters.count + 1) < 0) - goto cleanup; - - for (i =3D 0; i < driver->nwfilters.count; i++) { - obj =3D driver->nwfilters.objs[i]; - virNWFilterObjLock(obj); - if (virConnectListAllNWFiltersCheckACL(conn, obj->def)) { - if (!(filter =3D virGetNWFilter(conn, obj->def->name, - obj->def->uuid))) { - virNWFilterObjUnlock(obj); - goto cleanup; - } - tmp_filters[nfilters++] =3D filter; - } - virNWFilterObjUnlock(obj); - } - - *filters =3D tmp_filters; - tmp_filters =3D NULL; - ret =3D nfilters; - - cleanup: + ret =3D virNWFilterObjListExport(conn, &driver->nwfilters, filters, + virConnectListAllNWFiltersCheckACL); nwfilterDriverUnlock(); - if (tmp_filters) { - for (i =3D 0; i < nfilters; i ++) - virObjectUnref(tmp_filters[i]); - } - VIR_FREE(tmp_filters); =20 return ret; } --=20 2.9.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list