static int parallelsListDefinedNetworks(virConnectPtr conn, char **const names, int nnames) { parallelsConnPtr privconn = conn->privateData; int got = 0, i; parallelsDriverLock(privconn); for (i = 0 ; i < privconn->networks.count && got < nnames ; i++) { virNetworkObjLock(privconn->networks.objs[i]); if (!virNetworkObjIsActive(privconn->networks.objs[i])) { if (!(names[got] = strdup(privconn->networks.objs[i]->def->name))) { virNetworkObjUnlock(privconn->networks.objs[i]); virReportOOMError(); goto cleanup; } got++; } virNetworkObjUnlock(privconn->networks.objs[i]); } parallelsDriverUnlock(privconn); return got; cleanup: parallelsDriverUnlock(privconn); for (i = 0 ; i < got ; i++) VIR_FREE(names[i]); return -1; }
static int parallelsNumDefinedNetworks(virConnectPtr conn) { int ninactive = 0, i; parallelsConnPtr privconn = conn->privateData; parallelsDriverLock(privconn); for (i = 0 ; i < privconn->networks.count ; i++) { virNetworkObjLock(privconn->networks.objs[i]); if (!virNetworkObjIsActive(privconn->networks.objs[i])) ninactive++; virNetworkObjUnlock(privconn->networks.objs[i]); } parallelsDriverUnlock(privconn); return ninactive; }
static int parallelsNetworkIsActive(virNetworkPtr net) { parallelsConnPtr privconn = net->conn->privateData; virNetworkObjPtr obj; int ret = -1; obj = virNetworkObjFindByUUID(privconn->networks, net->uuid); if (!obj) { virReportError(VIR_ERR_NO_NETWORK, NULL); goto cleanup; } ret = virNetworkObjIsActive(obj); cleanup: virNetworkObjEndAPI(&obj); return ret; }