From: Michal Privoznik Date: Mon, 23 Feb 2015 16:37:17 +0000 (+0100) Subject: network_conf: Introduce virNetworkObjListGetNames X-Git-Tag: v1.2.14-rc1~238 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5a13c48b739e28fbe3896fb9c1911439a1e169c3;p=thirdparty%2Flibvirt.git network_conf: Introduce virNetworkObjListGetNames An accessor following pattern laid out by virDomainObjList* APIs. Signed-off-by: Michal Privoznik --- diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index cb54e56571..fdf59076ef 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -4317,3 +4317,41 @@ virNetworkObjListForEach(virNetworkObjListPtr nets, return ret; } + +int +virNetworkObjListGetNames(virNetworkObjListPtr nets, + bool active, + char **names, + int nnames, + virNetworkObjListFilter filter, + virConnectPtr conn) +{ + int got = 0; + size_t i; + + for (i = 0; i < nets->count && got < nnames; i++) { + virNetworkObjPtr obj = nets->objs[i]; + virNetworkObjLock(obj); + if (filter && !filter(conn, obj->def)) { + virNetworkObjUnlock(obj); + continue; + } + + if ((active && virNetworkObjIsActive(obj)) || + (!active && !virNetworkObjIsActive(obj))) { + if (VIR_STRDUP(names[got], obj->def->name) < 0) { + virNetworkObjUnlock(obj); + goto error; + } + got++; + } + virNetworkObjUnlock(obj); + } + + return got; + + error: + for (i = 0; i < got; i++) + VIR_FREE(names[i]); + return -1; +} diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index 749c7fbf62..598ddc2192 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -451,6 +451,14 @@ typedef int (*virNetworkObjListIterator)(virNetworkObjPtr net, int virNetworkObjListForEach(virNetworkObjListPtr nets, virNetworkObjListIterator callback, void *opaque); + +int virNetworkObjListGetNames(virNetworkObjListPtr nets, + bool active, + char **names, + int nnames, + virNetworkObjListFilter filter, + virConnectPtr conn); + /* for testing */ int virNetworkDefUpdateSection(virNetworkDefPtr def, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 460730e28b..203b888191 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -571,6 +571,7 @@ virNetworkObjIsDuplicate; virNetworkObjListExport; virNetworkObjListForEach; virNetworkObjListFree; +virNetworkObjListGetNames; virNetworkObjLock; virNetworkObjReplacePersistentDef; virNetworkObjSetDefTransient;