提交 5a13c48b 编写于 作者: M Michal Privoznik

network_conf: Introduce virNetworkObjListGetNames

An accessor following pattern laid out by virDomainObjList* APIs.
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
上级 454fe219
......@@ -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;
}
......@@ -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,
......
......@@ -571,6 +571,7 @@ virNetworkObjIsDuplicate;
virNetworkObjListExport;
virNetworkObjListForEach;
virNetworkObjListFree;
virNetworkObjListGetNames;
virNetworkObjLock;
virNetworkObjReplacePersistentDef;
virNetworkObjSetDefTransient;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册