static virMutex driverMutex = VIR_MUTEX_INITIALIZER;
-static void nwfilterDriverLock(void)
-{
- virMutexLock(&driverMutex);
-}
-static void nwfilterDriverUnlock(void)
-{
- virMutexUnlock(&driverMutex);
-}
-
#ifdef WITH_FIREWALLD
static void
virStateInhibitCallback callback G_GNUC_UNUSED,
void *opaque G_GNUC_UNUSED)
{
+ VIR_LOCK_GUARD lock = virLockGuardLock(&driverMutex);
GDBusConnection *sysbus = NULL;
if (root != NULL) {
if (!privileged)
return VIR_DRV_STATE_INIT_SKIPPED;
- nwfilterDriverLock();
-
driver->stateDir = g_strdup(RUNSTATEDIR "/libvirt/nwfilter");
if (g_mkdir_with_parents(driver->stateDir, S_IRWXU) < 0) {
if (virNWFilterBuildAll(driver, false) < 0)
goto error;
- nwfilterDriverUnlock();
-
return VIR_DRV_STATE_INIT_COMPLETE;
error:
- nwfilterDriverUnlock();
- nwfilterStateCleanup();
+ nwfilterStateCleanupLocked();
return VIR_DRV_STATE_INIT_ERROR;
/* shut down all threads -- they will be restarted if necessary */
virNWFilterLearnThreadsTerminate(true);
- nwfilterDriverLock();
- virNWFilterWriteLockFilterUpdates();
-
- virNWFilterObjListLoadAllConfigs(driver->nwfilters, driver->configDir);
+ VIR_WITH_MUTEX_LOCK_GUARD(&driverMutex) {
+ virNWFilterWriteLockFilterUpdates();
- virNWFilterUnlockFilterUpdates();
+ virNWFilterObjListLoadAllConfigs(driver->nwfilters, driver->configDir);
- virNWFilterBuildAll(driver, false);
+ virNWFilterUnlockFilterUpdates();
- nwfilterDriverUnlock();
+ virNWFilterBuildAll(driver, false);
+ }
return 0;
}
nwfilterLookupByUUID(virConnectPtr conn,
const unsigned char *uuid)
{
- virNWFilterObj *obj;
+ virNWFilterObj *obj = NULL;
virNWFilterDef *def;
virNWFilterPtr nwfilter = NULL;
- nwfilterDriverLock();
- obj = nwfilterObjFromNWFilter(uuid);
- nwfilterDriverUnlock();
+ VIR_WITH_MUTEX_LOCK_GUARD(&driverMutex) {
+ obj = nwfilterObjFromNWFilter(uuid);
+ }
if (!obj)
return NULL;
nwfilterLookupByName(virConnectPtr conn,
const char *name)
{
- virNWFilterObj *obj;
+ virNWFilterObj *obj = NULL;
virNWFilterDef *def;
virNWFilterPtr nwfilter = NULL;
- nwfilterDriverLock();
- obj = virNWFilterObjListFindByName(driver->nwfilters, name);
- nwfilterDriverUnlock();
+ VIR_WITH_MUTEX_LOCK_GUARD(&driverMutex) {
+ obj = virNWFilterObjListFindByName(driver->nwfilters, name);
+ }
if (!obj) {
virReportError(VIR_ERR_NO_NWFILTER,
static int
nwfilterConnectNumOfNWFilters(virConnectPtr conn)
{
- int ret;
+ int ret = -1;
if (virConnectNumOfNWFiltersEnsureACL(conn) < 0)
return -1;
- nwfilterDriverLock();
- ret = virNWFilterObjListNumOfNWFilters(driver->nwfilters, conn,
- virConnectNumOfNWFiltersCheckACL);
- nwfilterDriverUnlock();
+ VIR_WITH_MUTEX_LOCK_GUARD(&driverMutex) {
+ ret = virNWFilterObjListNumOfNWFilters(driver->nwfilters, conn,
+ virConnectNumOfNWFiltersCheckACL);
+ }
+
return ret;
}
char **const names,
int maxnames)
{
- int nnames;
+ int nnames = -1;
if (virConnectListNWFiltersEnsureACL(conn) < 0)
return -1;
- nwfilterDriverLock();
- nnames = virNWFilterObjListGetNames(driver->nwfilters, conn,
- virConnectListNWFiltersCheckACL,
- names, maxnames);
- nwfilterDriverUnlock();
+ VIR_WITH_MUTEX_LOCK_GUARD(&driverMutex) {
+ nnames = virNWFilterObjListGetNames(driver->nwfilters, conn,
+ virConnectListNWFiltersCheckACL,
+ names, maxnames);
+ }
+
return nnames;
}
virNWFilterPtr **nwfilters,
unsigned int flags)
{
- int ret;
+ int ret = -1;
virCheckFlags(0, -1);
if (virConnectListAllNWFiltersEnsureACL(conn) < 0)
return -1;
- nwfilterDriverLock();
- ret = virNWFilterObjListExport(conn, driver->nwfilters, nwfilters,
- virConnectListAllNWFiltersCheckACL);
- nwfilterDriverUnlock();
+ VIR_WITH_MUTEX_LOCK_GUARD(&driverMutex) {
+ ret = virNWFilterObjListExport(conn, driver->nwfilters, nwfilters,
+ virConnectListAllNWFiltersCheckACL);
+ }
return ret;
}
const char *xml,
unsigned int flags)
{
+ VIR_LOCK_GUARD lock = virLockGuardLock(&driverMutex);
virNWFilterDef *def;
virNWFilterObj *obj = NULL;
virNWFilterDef *objdef;
return NULL;
}
- nwfilterDriverLock();
virNWFilterWriteLockFilterUpdates();
if (!(def = virNWFilterDefParseString(xml, flags)))
virNWFilterObjUnlock(obj);
virNWFilterUnlockFilterUpdates();
- nwfilterDriverUnlock();
return nwfilter;
}
static int
nwfilterUndefine(virNWFilterPtr nwfilter)
{
+ VIR_LOCK_GUARD lock = virLockGuardLock(&driverMutex);
virNWFilterObj *obj;
virNWFilterDef *def;
int ret = -1;
- nwfilterDriverLock();
virNWFilterWriteLockFilterUpdates();
if (!(obj = nwfilterObjFromNWFilter(nwfilter->uuid)))
virNWFilterObjUnlock(obj);
virNWFilterUnlockFilterUpdates();
- nwfilterDriverUnlock();
return ret;
}
nwfilterGetXMLDesc(virNWFilterPtr nwfilter,
unsigned int flags)
{
- virNWFilterObj *obj;
+ virNWFilterObj *obj = NULL;
virNWFilterDef *def;
char *ret = NULL;
virCheckFlags(0, NULL);
- nwfilterDriverLock();
- obj = nwfilterObjFromNWFilter(nwfilter->uuid);
- nwfilterDriverUnlock();
+ VIR_WITH_MUTEX_LOCK_GUARD(&driverMutex) {
+ obj = nwfilterObjFromNWFilter(nwfilter->uuid);
+ }
if (!obj)
return NULL;