Add access control filtering of domain objects

Ensure that all APIs which list domain objects filter
them against the access control system.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2013-06-24 17:49:47 +01:00
parent 9d5d4700c2
commit 763973607d
10 changed files with 143 additions and 71 deletions

View File

@ -17106,47 +17106,51 @@ virDomainGetRootFilesystem(virDomainDefPtr def)
} }
static void struct virDomainObjListData {
virDomainObjListCountActive(void *payload, virDomainObjListFilter filter;
const void *name ATTRIBUTE_UNUSED, virConnectPtr conn;
void *data) bool active;
{ int count;
virDomainObjPtr obj = payload; };
int *count = data;
virObjectLock(obj);
if (virDomainObjIsActive(obj))
(*count)++;
virObjectUnlock(obj);
}
static void static void
virDomainObjListCountInactive(void *payload, virDomainObjListCount(void *payload,
const void *name ATTRIBUTE_UNUSED, const void *name ATTRIBUTE_UNUSED,
void *data) void *opaque)
{ {
virDomainObjPtr obj = payload; virDomainObjPtr obj = payload;
int *count = data; struct virDomainObjListData *data = opaque;
virObjectLock(obj); virObjectLock(obj);
if (!virDomainObjIsActive(obj)) if (data->filter &&
(*count)++; !data->filter(data->conn, obj->def))
goto cleanup;
if (virDomainObjIsActive(obj)) {
if (data->active)
data->count++;
} else {
if (!data->active)
data->count++;
}
cleanup:
virObjectUnlock(obj); virObjectUnlock(obj);
} }
int int
virDomainObjListNumOfDomains(virDomainObjListPtr doms, virDomainObjListNumOfDomains(virDomainObjListPtr doms,
int active) bool active,
virDomainObjListFilter filter,
virConnectPtr conn)
{ {
int count = 0; struct virDomainObjListData data = { filter, conn, active, 0 };
virObjectLock(doms); virObjectLock(doms);
if (active) virHashForEach(doms->objs, virDomainObjListCount, &data);
virHashForEach(doms->objs, virDomainObjListCountActive, &count);
else
virHashForEach(doms->objs, virDomainObjListCountInactive, &count);
virObjectUnlock(doms); virObjectUnlock(doms);
return count; return data.count;
} }
struct virDomainIDData { struct virDomainIDData {
virDomainObjListFilter filter;
virConnectPtr conn;
int numids; int numids;
int maxids; int maxids;
int *ids; int *ids;
@ -17160,17 +17164,24 @@ virDomainObjListCopyActiveIDs(void *payload,
virDomainObjPtr obj = payload; virDomainObjPtr obj = payload;
struct virDomainIDData *data = opaque; struct virDomainIDData *data = opaque;
virObjectLock(obj); virObjectLock(obj);
if (data->filter &&
!data->filter(data->conn, obj->def))
goto cleanup;
if (virDomainObjIsActive(obj) && data->numids < data->maxids) if (virDomainObjIsActive(obj) && data->numids < data->maxids)
data->ids[data->numids++] = obj->def->id; data->ids[data->numids++] = obj->def->id;
cleanup:
virObjectUnlock(obj); virObjectUnlock(obj);
} }
int int
virDomainObjListGetActiveIDs(virDomainObjListPtr doms, virDomainObjListGetActiveIDs(virDomainObjListPtr doms,
int *ids, int *ids,
int maxids) int maxids,
virDomainObjListFilter filter,
virConnectPtr conn)
{ {
struct virDomainIDData data = { 0, maxids, ids }; struct virDomainIDData data = { filter, conn,
0, maxids, ids };
virObjectLock(doms); virObjectLock(doms);
virHashForEach(doms->objs, virDomainObjListCopyActiveIDs, &data); virHashForEach(doms->objs, virDomainObjListCopyActiveIDs, &data);
virObjectUnlock(doms); virObjectUnlock(doms);
@ -17178,6 +17189,8 @@ virDomainObjListGetActiveIDs(virDomainObjListPtr doms,
} }
struct virDomainNameData { struct virDomainNameData {
virDomainObjListFilter filter;
virConnectPtr conn;
int oom; int oom;
int numnames; int numnames;
int maxnames; int maxnames;
@ -17196,12 +17209,16 @@ virDomainObjListCopyInactiveNames(void *payload,
return; return;
virObjectLock(obj); virObjectLock(obj);
if (data->filter &&
!data->filter(data->conn, obj->def))
goto cleanup;
if (!virDomainObjIsActive(obj) && data->numnames < data->maxnames) { if (!virDomainObjIsActive(obj) && data->numnames < data->maxnames) {
if (VIR_STRDUP(data->names[data->numnames], obj->def->name) < 0) if (VIR_STRDUP(data->names[data->numnames], obj->def->name) < 0)
data->oom = 1; data->oom = 1;
else else
data->numnames++; data->numnames++;
} }
cleanup:
virObjectUnlock(obj); virObjectUnlock(obj);
} }
@ -17209,9 +17226,12 @@ virDomainObjListCopyInactiveNames(void *payload,
int int
virDomainObjListGetInactiveNames(virDomainObjListPtr doms, virDomainObjListGetInactiveNames(virDomainObjListPtr doms,
char **const names, char **const names,
int maxnames) int maxnames,
virDomainObjListFilter filter,
virConnectPtr conn)
{ {
struct virDomainNameData data = { 0, 0, maxnames, names }; struct virDomainNameData data = { filter, conn,
0, 0, maxnames, names };
int i; int i;
virObjectLock(doms); virObjectLock(doms);
virHashForEach(doms->objs, virDomainObjListCopyInactiveNames, &data); virHashForEach(doms->objs, virDomainObjListCopyInactiveNames, &data);
@ -17927,6 +17947,7 @@ cleanup:
struct virDomainListData { struct virDomainListData {
virConnectPtr conn; virConnectPtr conn;
virDomainPtr *domains; virDomainPtr *domains;
virDomainObjListFilter filter;
unsigned int flags; unsigned int flags;
int ndomains; int ndomains;
bool error; bool error;
@ -17948,6 +17969,11 @@ virDomainListPopulate(void *payload,
virObjectLock(vm); virObjectLock(vm);
/* check if the domain matches the filter */ /* check if the domain matches the filter */
/* filter by the callback function (access control checks) */
if (data->filter != NULL &&
!data->filter(data->conn, vm->def))
goto cleanup;
/* filter by active state */ /* filter by active state */
if (MATCH(VIR_CONNECT_LIST_DOMAINS_FILTERS_ACTIVE) && if (MATCH(VIR_CONNECT_LIST_DOMAINS_FILTERS_ACTIVE) &&
!((MATCH(VIR_CONNECT_LIST_DOMAINS_ACTIVE) && !((MATCH(VIR_CONNECT_LIST_DOMAINS_ACTIVE) &&
@ -18027,12 +18053,17 @@ int
virDomainObjListExport(virDomainObjListPtr doms, virDomainObjListExport(virDomainObjListPtr doms,
virConnectPtr conn, virConnectPtr conn,
virDomainPtr **domains, virDomainPtr **domains,
virDomainObjListFilter filter,
unsigned int flags) unsigned int flags)
{ {
int ret = -1; int ret = -1;
int i; int i;
struct virDomainListData data = { conn, NULL, flags, 0, false }; struct virDomainListData data = {
conn, NULL,
filter,
flags, 0, false
};
virObjectLock(doms); virObjectLock(doms);
if (domains) { if (domains) {

View File

@ -2073,6 +2073,9 @@ struct _virDomainObj {
typedef struct _virDomainObjList virDomainObjList; typedef struct _virDomainObjList virDomainObjList;
typedef virDomainObjList *virDomainObjListPtr; typedef virDomainObjList *virDomainObjListPtr;
typedef bool (*virDomainObjListFilter)(virConnectPtr conn,
virDomainDefPtr def);
/* This structure holds various callbacks and data needed /* This structure holds various callbacks and data needed
* while parsing and creating domain XMLs */ * while parsing and creating domain XMLs */
@ -2426,14 +2429,21 @@ int virDomainFSIndexByName(virDomainDefPtr def, const char *name);
int virDomainVideoDefaultType(virDomainDefPtr def); int virDomainVideoDefaultType(virDomainDefPtr def);
int virDomainVideoDefaultRAM(virDomainDefPtr def, int type); int virDomainVideoDefaultRAM(virDomainDefPtr def, int type);
int virDomainObjListNumOfDomains(virDomainObjListPtr doms, int active); int virDomainObjListNumOfDomains(virDomainObjListPtr doms,
bool active,
virDomainObjListFilter filter,
virConnectPtr conn);
int virDomainObjListGetActiveIDs(virDomainObjListPtr doms, int virDomainObjListGetActiveIDs(virDomainObjListPtr doms,
int *ids, int *ids,
int maxids); int maxids,
virDomainObjListFilter filter,
virConnectPtr conn);
int virDomainObjListGetInactiveNames(virDomainObjListPtr doms, int virDomainObjListGetInactiveNames(virDomainObjListPtr doms,
char **const names, char **const names,
int maxnames); int maxnames,
virDomainObjListFilter filter,
virConnectPtr conn);
typedef int (*virDomainObjListIterator)(virDomainObjPtr dom, typedef int (*virDomainObjListIterator)(virDomainObjPtr dom,
void *opaque); void *opaque);
@ -2643,6 +2653,7 @@ VIR_ENUM_DECL(virDomainStartupPolicy)
int virDomainObjListExport(virDomainObjListPtr doms, int virDomainObjListExport(virDomainObjListPtr doms,
virConnectPtr conn, virConnectPtr conn,
virDomainPtr **domains, virDomainPtr **domains,
virDomainObjListFilter filter,
unsigned int flags); unsigned int flags);
virDomainVcpuPinDefPtr virDomainLookupVcpuPin(virDomainDefPtr def, virDomainVcpuPinDefPtr virDomainLookupVcpuPin(virDomainDefPtr def,

View File

@ -1574,7 +1574,8 @@ libxlConnectListDomains(virConnectPtr conn, int *ids, int nids)
return -1; return -1;
libxlDriverLock(driver); libxlDriverLock(driver);
n = virDomainObjListGetActiveIDs(driver->domains, ids, nids); n = virDomainObjListGetActiveIDs(driver->domains, ids, nids,
virConnectListDomainsCheckACL, conn);
libxlDriverUnlock(driver); libxlDriverUnlock(driver);
return n; return n;
@ -1590,7 +1591,8 @@ libxlConnectNumOfDomains(virConnectPtr conn)
return -1; return -1;
libxlDriverLock(driver); libxlDriverLock(driver);
n = virDomainObjListNumOfDomains(driver->domains, 1); n = virDomainObjListNumOfDomains(driver->domains, true,
virConnectNumOfDomainsCheckACL, conn);
libxlDriverUnlock(driver); libxlDriverUnlock(driver);
return n; return n;
@ -3202,7 +3204,8 @@ libxlConnectListDefinedDomains(virConnectPtr conn,
return -1; return -1;
libxlDriverLock(driver); libxlDriverLock(driver);
n = virDomainObjListGetInactiveNames(driver->domains, names, nnames); n = virDomainObjListGetInactiveNames(driver->domains, names, nnames,
virConnectListDefinedDomainsCheckACL, conn);
libxlDriverUnlock(driver); libxlDriverUnlock(driver);
return n; return n;
} }
@ -3217,7 +3220,8 @@ libxlConnectNumOfDefinedDomains(virConnectPtr conn)
return -1; return -1;
libxlDriverLock(driver); libxlDriverLock(driver);
n = virDomainObjListNumOfDomains(driver->domains, 0); n = virDomainObjListNumOfDomains(driver->domains, false,
virConnectNumOfDefinedDomainsCheckACL, NULL);
libxlDriverUnlock(driver); libxlDriverUnlock(driver);
return n; return n;
@ -4654,7 +4658,8 @@ libxlConnectListAllDomains(virConnectPtr conn,
return -1; return -1;
libxlDriverLock(driver); libxlDriverLock(driver);
ret = virDomainObjListExport(driver->domains, conn, domains, flags); ret = virDomainObjListExport(driver->domains, conn, domains,
virConnectListAllDomainsCheckACL, flags);
libxlDriverUnlock(driver); libxlDriverUnlock(driver);
return ret; return ret;

View File

@ -392,7 +392,8 @@ static int lxcConnectListDomains(virConnectPtr conn, int *ids, int nids) {
return -1; return -1;
lxcDriverLock(driver); lxcDriverLock(driver);
n = virDomainObjListGetActiveIDs(driver->domains, ids, nids); n = virDomainObjListGetActiveIDs(driver->domains, ids, nids,
virConnectListDomainsCheckACL, conn);
lxcDriverUnlock(driver); lxcDriverUnlock(driver);
return n; return n;
@ -406,7 +407,8 @@ static int lxcConnectNumOfDomains(virConnectPtr conn) {
return -1; return -1;
lxcDriverLock(driver); lxcDriverLock(driver);
n = virDomainObjListNumOfDomains(driver->domains, 1); n = virDomainObjListNumOfDomains(driver->domains, true,
virConnectNumOfDomainsCheckACL, conn);
lxcDriverUnlock(driver); lxcDriverUnlock(driver);
return n; return n;
@ -421,7 +423,8 @@ static int lxcConnectListDefinedDomains(virConnectPtr conn,
return -1; return -1;
lxcDriverLock(driver); lxcDriverLock(driver);
n = virDomainObjListGetInactiveNames(driver->domains, names, nnames); n = virDomainObjListGetInactiveNames(driver->domains, names, nnames,
virConnectListDefinedDomainsCheckACL, conn);
lxcDriverUnlock(driver); lxcDriverUnlock(driver);
return n; return n;
@ -436,7 +439,8 @@ static int lxcConnectNumOfDefinedDomains(virConnectPtr conn) {
return -1; return -1;
lxcDriverLock(driver); lxcDriverLock(driver);
n = virDomainObjListNumOfDomains(driver->domains, 0); n = virDomainObjListNumOfDomains(driver->domains, false,
virConnectNumOfDefinedDomainsCheckACL, conn);
lxcDriverUnlock(driver); lxcDriverUnlock(driver);
return n; return n;
@ -2829,7 +2833,8 @@ lxcConnectListAllDomains(virConnectPtr conn,
return -1; return -1;
lxcDriverLock(driver); lxcDriverLock(driver);
ret = virDomainObjListExport(driver->domains, conn, domains, flags); ret = virDomainObjListExport(driver->domains, conn, domains,
virConnectListAllDomainsCheckACL, flags);
lxcDriverUnlock(driver); lxcDriverUnlock(driver);
return ret; return ret;

View File

@ -1566,7 +1566,7 @@ static int openvzConnectNumOfDomains(virConnectPtr conn) {
int n; int n;
openvzDriverLock(driver); openvzDriverLock(driver);
n = virDomainObjListNumOfDomains(driver->domains, 1); n = virDomainObjListNumOfDomains(driver->domains, true, NULL, NULL);
openvzDriverUnlock(driver); openvzDriverUnlock(driver);
return n; return n;
@ -1678,7 +1678,7 @@ static int openvzConnectNumOfDefinedDomains(virConnectPtr conn) {
int n; int n;
openvzDriverLock(driver); openvzDriverLock(driver);
n = virDomainObjListNumOfDomains(driver->domains, 0); n = virDomainObjListNumOfDomains(driver->domains, false, NULL, NULL);
openvzDriverUnlock(driver); openvzDriverUnlock(driver);
return n; return n;
@ -2122,7 +2122,8 @@ openvzConnectListAllDomains(virConnectPtr conn,
virCheckFlags(VIR_CONNECT_LIST_DOMAINS_FILTERS_ALL, -1); virCheckFlags(VIR_CONNECT_LIST_DOMAINS_FILTERS_ALL, -1);
openvzDriverLock(driver); openvzDriverLock(driver);
ret = virDomainObjListExport(driver->domains, conn, domains, flags); ret = virDomainObjListExport(driver->domains, conn, domains,
NULL, flags);
openvzDriverUnlock(driver); openvzDriverUnlock(driver);
return ret; return ret;

View File

@ -1045,7 +1045,8 @@ parallelsConnectListDomains(virConnectPtr conn, int *ids, int maxids)
int n; int n;
parallelsDriverLock(privconn); parallelsDriverLock(privconn);
n = virDomainObjListGetActiveIDs(privconn->domains, ids, maxids); n = virDomainObjListGetActiveIDs(privconn->domains, ids, maxids,
NULL, NULL);
parallelsDriverUnlock(privconn); parallelsDriverUnlock(privconn);
return n; return n;
@ -1058,7 +1059,8 @@ parallelsConnectNumOfDomains(virConnectPtr conn)
int count; int count;
parallelsDriverLock(privconn); parallelsDriverLock(privconn);
count = virDomainObjListNumOfDomains(privconn->domains, 1); count = virDomainObjListNumOfDomains(privconn->domains, true,
NULL, NULL);
parallelsDriverUnlock(privconn); parallelsDriverUnlock(privconn);
return count; return count;
@ -1073,7 +1075,7 @@ parallelsConnectListDefinedDomains(virConnectPtr conn, char **const names, int m
parallelsDriverLock(privconn); parallelsDriverLock(privconn);
memset(names, 0, sizeof(*names) * maxnames); memset(names, 0, sizeof(*names) * maxnames);
n = virDomainObjListGetInactiveNames(privconn->domains, names, n = virDomainObjListGetInactiveNames(privconn->domains, names,
maxnames); maxnames, NULL, NULL);
parallelsDriverUnlock(privconn); parallelsDriverUnlock(privconn);
return n; return n;
@ -1086,7 +1088,8 @@ parallelsConnectNumOfDefinedDomains(virConnectPtr conn)
int count; int count;
parallelsDriverLock(privconn); parallelsDriverLock(privconn);
count = virDomainObjListNumOfDomains(privconn->domains, 0); count = virDomainObjListNumOfDomains(privconn->domains, false,
NULL, NULL);
parallelsDriverUnlock(privconn); parallelsDriverUnlock(privconn);
return count; return count;
@ -1102,7 +1105,8 @@ parallelsConnectListAllDomains(virConnectPtr conn,
virCheckFlags(VIR_CONNECT_LIST_DOMAINS_FILTERS_ALL, -1); virCheckFlags(VIR_CONNECT_LIST_DOMAINS_FILTERS_ALL, -1);
parallelsDriverLock(privconn); parallelsDriverLock(privconn);
ret = virDomainObjListExport(privconn->domains, conn, domains, flags); ret = virDomainObjListExport(privconn->domains, conn, domains,
NULL, flags);
parallelsDriverUnlock(privconn); parallelsDriverUnlock(privconn);
return ret; return ret;

View File

@ -1492,7 +1492,8 @@ static int qemuConnectListDomains(virConnectPtr conn, int *ids, int nids) {
if (virConnectListDomainsEnsureACL(conn) < 0) if (virConnectListDomainsEnsureACL(conn) < 0)
return -1; return -1;
n = virDomainObjListGetActiveIDs(driver->domains, ids, nids); n = virDomainObjListGetActiveIDs(driver->domains, ids, nids,
virConnectListDomainsCheckACL, conn);
return n; return n;
} }
@ -1504,7 +1505,8 @@ static int qemuConnectNumOfDomains(virConnectPtr conn) {
if (virConnectNumOfDomainsEnsureACL(conn) < 0) if (virConnectNumOfDomainsEnsureACL(conn) < 0)
return -1; return -1;
n = virDomainObjListNumOfDomains(driver->domains, 1); n = virDomainObjListNumOfDomains(driver->domains, true,
virConnectNumOfDomainsCheckACL, conn);
return n; return n;
} }
@ -5884,7 +5886,8 @@ static int qemuConnectListDefinedDomains(virConnectPtr conn,
if (virConnectListDefinedDomainsEnsureACL(conn) < 0) if (virConnectListDefinedDomainsEnsureACL(conn) < 0)
goto cleanup; goto cleanup;
ret = virDomainObjListGetInactiveNames(driver->domains, names, nnames); ret = virDomainObjListGetInactiveNames(driver->domains, names, nnames,
virConnectListDefinedDomainsCheckACL, NULL);
cleanup: cleanup:
return ret; return ret;
@ -5897,7 +5900,8 @@ static int qemuConnectNumOfDefinedDomains(virConnectPtr conn) {
if (virConnectNumOfDefinedDomainsEnsureACL(conn) < 0) if (virConnectNumOfDefinedDomainsEnsureACL(conn) < 0)
goto cleanup; goto cleanup;
ret = virDomainObjListNumOfDomains(driver->domains, 0); ret = virDomainObjListNumOfDomains(driver->domains, false,
virConnectNumOfDefinedDomainsCheckACL, NULL);
cleanup: cleanup:
return ret; return ret;
@ -15787,7 +15791,8 @@ qemuConnectListAllDomains(virConnectPtr conn,
if (virConnectListAllDomainsEnsureACL(conn) < 0) if (virConnectListAllDomainsEnsureACL(conn) < 0)
goto cleanup; goto cleanup;
ret = virDomainObjListExport(driver->domains, conn, domains, flags); ret = virDomainObjListExport(driver->domains, conn, domains,
virConnectListAllDomainsCheckACL, flags);
cleanup: cleanup:
return ret; return ret;

View File

@ -1274,7 +1274,7 @@ static int testConnectNumOfDomains(virConnectPtr conn)
int count; int count;
testDriverLock(privconn); testDriverLock(privconn);
count = virDomainObjListNumOfDomains(privconn->domains, 1); count = virDomainObjListNumOfDomains(privconn->domains, true, NULL, NULL);
testDriverUnlock(privconn); testDriverUnlock(privconn);
return count; return count;
@ -1463,7 +1463,7 @@ static int testConnectListDomains(virConnectPtr conn,
int n; int n;
testDriverLock(privconn); testDriverLock(privconn);
n = virDomainObjListGetActiveIDs(privconn->domains, ids, maxids); n = virDomainObjListGetActiveIDs(privconn->domains, ids, maxids, NULL, NULL);
testDriverUnlock(privconn); testDriverUnlock(privconn);
return n; return n;
@ -2475,7 +2475,7 @@ static int testConnectNumOfDefinedDomains(virConnectPtr conn) {
int count; int count;
testDriverLock(privconn); testDriverLock(privconn);
count = virDomainObjListNumOfDomains(privconn->domains, 0); count = virDomainObjListNumOfDomains(privconn->domains, false, NULL, NULL);
testDriverUnlock(privconn); testDriverUnlock(privconn);
return count; return count;
@ -2490,7 +2490,8 @@ static int testConnectListDefinedDomains(virConnectPtr conn,
testDriverLock(privconn); testDriverLock(privconn);
memset(names, 0, sizeof(*names)*maxnames); memset(names, 0, sizeof(*names)*maxnames);
n = virDomainObjListGetInactiveNames(privconn->domains, names, maxnames); n = virDomainObjListGetInactiveNames(privconn->domains, names, maxnames,
NULL, NULL);
testDriverUnlock(privconn); testDriverUnlock(privconn);
return n; return n;
@ -5688,6 +5689,7 @@ static int testNWFilterClose(virConnectPtr conn) {
return 0; return 0;
} }
static int testConnectListAllDomains(virConnectPtr conn, static int testConnectListAllDomains(virConnectPtr conn,
virDomainPtr **domains, virDomainPtr **domains,
unsigned int flags) unsigned int flags)
@ -5698,7 +5700,8 @@ static int testConnectListAllDomains(virConnectPtr conn,
virCheckFlags(VIR_CONNECT_LIST_DOMAINS_FILTERS_ALL, -1); virCheckFlags(VIR_CONNECT_LIST_DOMAINS_FILTERS_ALL, -1);
testDriverLock(privconn); testDriverLock(privconn);
ret = virDomainObjListExport(privconn->domains, conn, domains, flags); ret = virDomainObjListExport(privconn->domains, conn, domains,
NULL, flags);
testDriverUnlock(privconn); testDriverUnlock(privconn);
return ret; return ret;

View File

@ -1545,7 +1545,8 @@ static int umlConnectListDomains(virConnectPtr conn, int *ids, int nids) {
return -1; return -1;
umlDriverLock(driver); umlDriverLock(driver);
n = virDomainObjListGetActiveIDs(driver->domains, ids, nids); n = virDomainObjListGetActiveIDs(driver->domains, ids, nids,
virConnectListDomainsCheckACL, conn);
umlDriverUnlock(driver); umlDriverUnlock(driver);
return n; return n;
@ -1558,7 +1559,8 @@ static int umlConnectNumOfDomains(virConnectPtr conn) {
return -1; return -1;
umlDriverLock(driver); umlDriverLock(driver);
n = virDomainObjListNumOfDomains(driver->domains, 1); n = virDomainObjListNumOfDomains(driver->domains, true,
virConnectNumOfDomainsCheckACL, conn);
umlDriverUnlock(driver); umlDriverUnlock(driver);
return n; return n;
@ -1965,7 +1967,8 @@ static int umlConnectListDefinedDomains(virConnectPtr conn,
return -1; return -1;
umlDriverLock(driver); umlDriverLock(driver);
n = virDomainObjListGetInactiveNames(driver->domains, names, nnames); n = virDomainObjListGetInactiveNames(driver->domains, names, nnames,
virConnectListDefinedDomainsCheckACL, conn);
umlDriverUnlock(driver); umlDriverUnlock(driver);
return n; return n;
@ -1979,7 +1982,8 @@ static int umlConnectNumOfDefinedDomains(virConnectPtr conn) {
return -1; return -1;
umlDriverLock(driver); umlDriverLock(driver);
n = virDomainObjListNumOfDomains(driver->domains, 0); n = virDomainObjListNumOfDomains(driver->domains, false,
virConnectNumOfDefinedDomainsCheckACL, conn);
umlDriverUnlock(driver); umlDriverUnlock(driver);
return n; return n;
@ -2710,7 +2714,8 @@ static int umlConnectListAllDomains(virConnectPtr conn,
return -1; return -1;
umlDriverLock(driver); umlDriverLock(driver);
ret = virDomainObjListExport(driver->domains, conn, domains, flags); ret = virDomainObjListExport(driver->domains, conn, domains,
virConnectListAllDomainsCheckACL, flags);
umlDriverUnlock(driver); umlDriverUnlock(driver);
return ret; return ret;

View File

@ -987,7 +987,7 @@ vmwareConnectNumOfDefinedDomains(virConnectPtr conn)
vmwareDriverLock(driver); vmwareDriverLock(driver);
vmwareDomainObjListUpdateAll(driver->domains, driver); vmwareDomainObjListUpdateAll(driver->domains, driver);
n = virDomainObjListNumOfDomains(driver->domains, 0); n = virDomainObjListNumOfDomains(driver->domains, false, NULL, NULL);
vmwareDriverUnlock(driver); vmwareDriverUnlock(driver);
return n; return n;
@ -1001,7 +1001,7 @@ vmwareConnectNumOfDomains(virConnectPtr conn)
vmwareDriverLock(driver); vmwareDriverLock(driver);
vmwareDomainObjListUpdateAll(driver->domains, driver); vmwareDomainObjListUpdateAll(driver->domains, driver);
n = virDomainObjListNumOfDomains(driver->domains, 1); n = virDomainObjListNumOfDomains(driver->domains, true, NULL, NULL);
vmwareDriverUnlock(driver); vmwareDriverUnlock(driver);
return n; return n;
@ -1016,7 +1016,7 @@ vmwareConnectListDomains(virConnectPtr conn, int *ids, int nids)
vmwareDriverLock(driver); vmwareDriverLock(driver);
vmwareDomainObjListUpdateAll(driver->domains, driver); vmwareDomainObjListUpdateAll(driver->domains, driver);
n = virDomainObjListGetActiveIDs(driver->domains, ids, nids); n = virDomainObjListGetActiveIDs(driver->domains, ids, nids, NULL, NULL);
vmwareDriverUnlock(driver); vmwareDriverUnlock(driver);
return n; return n;
@ -1031,7 +1031,8 @@ vmwareConnectListDefinedDomains(virConnectPtr conn,
vmwareDriverLock(driver); vmwareDriverLock(driver);
vmwareDomainObjListUpdateAll(driver->domains, driver); vmwareDomainObjListUpdateAll(driver->domains, driver);
n = virDomainObjListGetInactiveNames(driver->domains, names, nnames); n = virDomainObjListGetInactiveNames(driver->domains, names, nnames,
NULL, NULL);
vmwareDriverUnlock(driver); vmwareDriverUnlock(driver);
return n; return n;
} }
@ -1121,7 +1122,8 @@ vmwareConnectListAllDomains(virConnectPtr conn,
vmwareDriverLock(driver); vmwareDriverLock(driver);
vmwareDomainObjListUpdateAll(driver->domains, driver); vmwareDomainObjListUpdateAll(driver->domains, driver);
ret = virDomainObjListExport(driver->domains, conn, domains, flags); ret = virDomainObjListExport(driver->domains, conn, domains,
NULL, flags);
vmwareDriverUnlock(driver); vmwareDriverUnlock(driver);
return ret; return ret;
} }