kernel-listener: Use a struct to pass data from acquires

This commit is contained in:
Tobias Brunner
2022-04-14 18:42:01 +02:00
parent 9983326b20
commit 3b699c720f
12 changed files with 81 additions and 63 deletions
@@ -1634,6 +1634,7 @@ static u_int hash_trap(trap_t *trap)
static void acquire(private_kernel_wfp_ipsec_t *this, UINT64 filter_id,
traffic_selector_t *src, traffic_selector_t *dst)
{
kernel_acquire_data_t data = {};
uint32_t reqid = 0;
trap_t *trap, key = {
.filter_id = filter_id,
@@ -1649,9 +1650,13 @@ static void acquire(private_kernel_wfp_ipsec_t *this, UINT64 filter_id,
if (reqid)
{
src = src ? src->clone(src) : NULL;
dst = dst ? dst->clone(dst) : NULL;
charon->kernel->acquire(charon->kernel, reqid, src, dst);
data.src = src ? src->clone(src) : NULL;
data.dst = dst ? dst->clone(dst) : NULL;
charon->kernel->acquire(charon->kernel, reqid, &data);
DESTROY_IF(data.src);
DESTROY_IF(data.dst);
}
}