kernel-listener: Use a struct to pass data from acquires
This commit is contained in:
@@ -30,34 +30,28 @@ struct private_acquire_job_t {
|
||||
acquire_job_t public;
|
||||
|
||||
/**
|
||||
* reqid of the child to rekey
|
||||
* reqid of the triggered policy
|
||||
*/
|
||||
uint32_t reqid;
|
||||
|
||||
/**
|
||||
* acquired source traffic selector
|
||||
* Data from the acquire
|
||||
*/
|
||||
traffic_selector_t *src_ts;
|
||||
|
||||
/**
|
||||
* acquired destination traffic selector
|
||||
*/
|
||||
traffic_selector_t *dst_ts;
|
||||
kernel_acquire_data_t data;
|
||||
};
|
||||
|
||||
METHOD(job_t, destroy, void,
|
||||
private_acquire_job_t *this)
|
||||
{
|
||||
DESTROY_IF(this->src_ts);
|
||||
DESTROY_IF(this->dst_ts);
|
||||
DESTROY_IF(this->data.src);
|
||||
DESTROY_IF(this->data.dst);
|
||||
free(this);
|
||||
}
|
||||
|
||||
METHOD(job_t, execute, job_requeue_t,
|
||||
private_acquire_job_t *this)
|
||||
{
|
||||
charon->traps->acquire(charon->traps, this->reqid,
|
||||
this->src_ts, this->dst_ts);
|
||||
charon->traps->acquire(charon->traps, this->reqid, &this->data);
|
||||
return JOB_REQUEUE_NONE;
|
||||
}
|
||||
|
||||
@@ -70,9 +64,7 @@ METHOD(job_t, get_priority, job_priority_t,
|
||||
/*
|
||||
* Described in header
|
||||
*/
|
||||
acquire_job_t *acquire_job_create(uint32_t reqid,
|
||||
traffic_selector_t *src_ts,
|
||||
traffic_selector_t *dst_ts)
|
||||
acquire_job_t *acquire_job_create(uint32_t reqid, kernel_acquire_data_t *data)
|
||||
{
|
||||
private_acquire_job_t *this;
|
||||
|
||||
@@ -85,10 +77,18 @@ acquire_job_t *acquire_job_create(uint32_t reqid,
|
||||
},
|
||||
},
|
||||
.reqid = reqid,
|
||||
.src_ts = src_ts,
|
||||
.dst_ts = dst_ts,
|
||||
.data = *data,
|
||||
);
|
||||
|
||||
if (this->data.src)
|
||||
{
|
||||
this->data.src = this->data.src->clone(this->data.src);
|
||||
}
|
||||
if (this->data.dst)
|
||||
{
|
||||
this->data.dst = this->data.dst->clone(this->data.dst);
|
||||
}
|
||||
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
typedef struct acquire_job_t acquire_job_t;
|
||||
|
||||
#include <library.h>
|
||||
#include <selectors/traffic_selector.h>
|
||||
#include <kernel/kernel_interface.h>
|
||||
#include <processing/jobs/job.h>
|
||||
|
||||
/**
|
||||
@@ -42,13 +42,10 @@ struct acquire_job_t {
|
||||
/**
|
||||
* Creates a job of type ACQUIRE.
|
||||
*
|
||||
* @param reqid reqid of the trapped CHILD_SA to acquire
|
||||
* @param src_ts source traffic selector
|
||||
* @param dst_ts destination traffic selector
|
||||
* @param reqid reqid of the triggered policy
|
||||
* @param data data from the acquire
|
||||
* @return acquire_job_t object
|
||||
*/
|
||||
acquire_job_t *acquire_job_create(uint32_t reqid,
|
||||
traffic_selector_t *src_ts,
|
||||
traffic_selector_t *dst_ts);
|
||||
acquire_job_t *acquire_job_create(uint32_t reqid, kernel_acquire_data_t *data);
|
||||
|
||||
#endif /** REKEY_CHILD_SA_JOB_H_ @}*/
|
||||
|
||||
Reference in New Issue
Block a user