mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-09 23:15:51 -06:00
network_conf: Introduce virNetworkObjListGetNames
An accessor following pattern laid out by virDomainObjList* APIs. Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
454fe219ef
commit
5a13c48b73
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user