nwfilter: Introduce virNWFilterObjGetNames

Mostly code motion to move nwfilterConnectListNWFilters into nwfilterobj.c
and rename to virNWFilterObjGetNames.

Also includes a couple of variable name adjustments to keep code consistent
with other drivers.

Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
John Ferlan 2017-03-19 16:24:59 -04:00
parent 0c22162836
commit 206f71e11d
4 changed files with 47 additions and 23 deletions

View File

@ -325,6 +325,39 @@ virNWFilterObjNumOfNWFilters(virNWFilterObjListPtr nwfilters,
}
int
virNWFilterObjGetNames(virNWFilterObjListPtr nwfilters,
virConnectPtr conn,
virNWFilterObjListFilter aclfilter,
char **const names,
int maxnames)
{
int nnames = 0;
size_t i;
for (i = 0; i < nwfilters->count && nnames < maxnames; i++) {
virNWFilterObjPtr obj = nwfilters->objs[i];
virNWFilterObjLock(obj);
if (!aclfilter || aclfilter(conn, obj->def)) {
if (VIR_STRDUP(names[nnames], obj->def->name) < 0) {
virNWFilterObjUnlock(obj);
goto failure;
}
nnames++;
}
virNWFilterObjUnlock(obj);
}
return nnames;
failure:
while (--nnames >= 0)
VIR_FREE(names[nnames]);
return -1;
}
static virNWFilterObjPtr
virNWFilterObjLoadConfig(virNWFilterObjListPtr nwfilters,
const char *configDir,

View File

@ -90,6 +90,13 @@ virNWFilterObjNumOfNWFilters(virNWFilterObjListPtr nwfilters,
virConnectPtr conn,
virNWFilterObjListFilter aclfilter);
int
virNWFilterObjGetNames(virNWFilterObjListPtr nwfilters,
virConnectPtr conn,
virNWFilterObjListFilter aclfilter,
char **const names,
int maxnames);
int
virNWFilterObjLoadAllConfigs(virNWFilterObjListPtr nwfilters,
const char *configDir);

View File

@ -962,6 +962,7 @@ virNodeDeviceObjUnlock;
virNWFilterObjAssignDef;
virNWFilterObjFindByName;
virNWFilterObjFindByUUID;
virNWFilterObjGetNames;
virNWFilterObjListFree;
virNWFilterObjLoadAllConfigs;
virNWFilterObjLock;

View File

@ -425,36 +425,19 @@ nwfilterConnectNumOfNWFilters(virConnectPtr conn)
static int
nwfilterConnectListNWFilters(virConnectPtr conn,
char **const names,
int nnames)
int maxnames)
{
int got = 0;
size_t i;
int nnames;
if (virConnectListNWFiltersEnsureACL(conn) < 0)
return -1;
nwfilterDriverLock();
for (i = 0; i < driver->nwfilters.count && got < nnames; i++) {
virNWFilterObjPtr obj = driver->nwfilters.objs[i];
virNWFilterObjLock(obj);
if (virConnectListNWFiltersCheckACL(conn, obj->def)) {
if (VIR_STRDUP(names[got], obj->def->name) < 0) {
virNWFilterObjUnlock(obj);
goto cleanup;
}
got++;
}
virNWFilterObjUnlock(obj);
}
nnames = virNWFilterObjGetNames(&driver->nwfilters, conn,
virConnectListNWFiltersCheckACL,
names, maxnames);
nwfilterDriverUnlock();
return got;
cleanup:
nwfilterDriverUnlock();
for (i = 0; i < got; i++)
VIR_FREE(names[i]);
memset(names, 0, nnames * sizeof(*names));
return -1;
return nnames;
}