mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-23 11:52:20 +00:00
nwfilter_dhcpsnoop: Replace virNWFilterSnoopActiveLock macros
Use automatic mutex management instead. Signed-off-by: Tim Wiederhake <twiederh@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
398745c3b3
commit
f61baec724
@ -93,14 +93,6 @@ struct virNWFilterSnoopState {
|
|||||||
do { \
|
do { \
|
||||||
virMutexUnlock(&virNWFilterSnoopState.snoopLock); \
|
virMutexUnlock(&virNWFilterSnoopState.snoopLock); \
|
||||||
} while (0)
|
} while (0)
|
||||||
# define virNWFilterSnoopActiveLock() \
|
|
||||||
do { \
|
|
||||||
virMutexLock(&virNWFilterSnoopState.activeLock); \
|
|
||||||
} while (0)
|
|
||||||
# define virNWFilterSnoopActiveUnlock() \
|
|
||||||
do { \
|
|
||||||
virMutexUnlock(&virNWFilterSnoopState.activeLock); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
# define VIR_IFKEY_LEN ((VIR_UUID_STRING_BUFLEN) + (VIR_MAC_STRING_BUFLEN))
|
# define VIR_IFKEY_LEN ((VIR_UUID_STRING_BUFLEN) + (VIR_MAC_STRING_BUFLEN))
|
||||||
|
|
||||||
@ -281,47 +273,35 @@ static char *
|
|||||||
virNWFilterSnoopActivate(virNWFilterSnoopReq *req)
|
virNWFilterSnoopActivate(virNWFilterSnoopReq *req)
|
||||||
{
|
{
|
||||||
g_autofree char *key = g_strdup_printf("%p-%d", req, req->ifindex);
|
g_autofree char *key = g_strdup_printf("%p-%d", req, req->ifindex);
|
||||||
char *ret = NULL;
|
VIR_LOCK_GUARD lock = virLockGuardLock(&virNWFilterSnoopState.activeLock);
|
||||||
|
|
||||||
virNWFilterSnoopActiveLock();
|
if (virHashAddEntry(virNWFilterSnoopState.active, key, (void *)0x1) < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if (virHashAddEntry(virNWFilterSnoopState.active, key, (void *)0x1) == 0)
|
return g_steal_pointer(&key);
|
||||||
ret = g_steal_pointer(&key);
|
|
||||||
|
|
||||||
virNWFilterSnoopActiveUnlock();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
virNWFilterSnoopCancel(char **threadKey)
|
virNWFilterSnoopCancel(char **threadKey)
|
||||||
{
|
{
|
||||||
|
VIR_LOCK_GUARD lock = virLockGuardLock(&virNWFilterSnoopState.activeLock);
|
||||||
|
|
||||||
if (*threadKey == NULL)
|
if (*threadKey == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
virNWFilterSnoopActiveLock();
|
|
||||||
|
|
||||||
ignore_value(virHashRemoveEntry(virNWFilterSnoopState.active, *threadKey));
|
ignore_value(virHashRemoveEntry(virNWFilterSnoopState.active, *threadKey));
|
||||||
g_clear_pointer(threadKey, g_free);
|
g_clear_pointer(threadKey, g_free);
|
||||||
|
|
||||||
virNWFilterSnoopActiveUnlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
virNWFilterSnoopIsActive(char *threadKey)
|
virNWFilterSnoopIsActive(char *threadKey)
|
||||||
{
|
{
|
||||||
void *entry;
|
VIR_LOCK_GUARD lock = virLockGuardLock(&virNWFilterSnoopState.activeLock);
|
||||||
|
|
||||||
if (threadKey == NULL)
|
if (threadKey == NULL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
virNWFilterSnoopActiveLock();
|
return virHashLookup(virNWFilterSnoopState.active, threadKey) != NULL;
|
||||||
|
|
||||||
entry = virHashLookup(virNWFilterSnoopState.active, threadKey);
|
|
||||||
|
|
||||||
virNWFilterSnoopActiveUnlock();
|
|
||||||
|
|
||||||
return entry != NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2083,9 +2063,9 @@ virNWFilterDHCPSnoopShutdown(void)
|
|||||||
|
|
||||||
virNWFilterSnoopUnlock();
|
virNWFilterSnoopUnlock();
|
||||||
|
|
||||||
virNWFilterSnoopActiveLock();
|
VIR_WITH_MUTEX_LOCK_GUARD(&virNWFilterSnoopState.activeLock) {
|
||||||
g_clear_pointer(&virNWFilterSnoopState.active, g_hash_table_unref);
|
g_clear_pointer(&virNWFilterSnoopState.active, g_hash_table_unref);
|
||||||
virNWFilterSnoopActiveUnlock();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* WITH_LIBPCAP */
|
#else /* WITH_LIBPCAP */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user