diff options
Diffstat (limited to 'Source/charon/queues')
-rw-r--r-- | Source/charon/queues/jobs/retransmit_request_job.c | 24 | ||||
-rw-r--r-- | Source/charon/queues/jobs/retransmit_request_job.h | 15 |
2 files changed, 39 insertions, 0 deletions
diff --git a/Source/charon/queues/jobs/retransmit_request_job.c b/Source/charon/queues/jobs/retransmit_request_job.c index f54de361d..089ebbfec 100644 --- a/Source/charon/queues/jobs/retransmit_request_job.c +++ b/Source/charon/queues/jobs/retransmit_request_job.c @@ -46,6 +46,11 @@ struct private_retransmit_request_job_t { * ID of the IKE_SA which the message belongs to. */ ike_sa_id_t *ike_sa_id; + + /** + * Number of times a request was retransmitted + */ + u_int32_t retransmit_count; }; @@ -66,6 +71,22 @@ static ike_sa_id_t *get_ike_sa_id(private_retransmit_request_job_t *this) } /** + * Implements retransmit_request_job_t.get_retransmit_count. + */ +static u_int32_t get_retransmit_count(private_retransmit_request_job_t *this) +{ + return this->retransmit_count; +} + +/** + * Implements retransmit_request_job_t.increase_retransmit_count. + */ +static void increase_retransmit_count(private_retransmit_request_job_t *this) +{ + this->retransmit_count++; +} + +/** * Implements retransmit_request_job_t.get_message_id. */ static u_int32_t get_message_id(private_retransmit_request_job_t *this) @@ -100,9 +121,12 @@ retransmit_request_job_t *retransmit_request_job_create(u_int32_t message_id,ike this->public.get_ike_sa_id = (ike_sa_id_t * (*)(retransmit_request_job_t *)) get_ike_sa_id; this->public.get_message_id = (u_int32_t (*)(retransmit_request_job_t *)) get_message_id; this->public.destroy = (void (*)(retransmit_request_job_t *)) destroy; + this->public.get_retransmit_count = (u_int32_t (*)(retransmit_request_job_t *)) get_retransmit_count; + this->public.increase_retransmit_count = (void (*)(retransmit_request_job_t *)) increase_retransmit_count; /* private variables */ this->message_id = message_id; + this->retransmit_count = 0; this->ike_sa_id = ike_sa_id->clone(ike_sa_id); return &(this->public); diff --git a/Source/charon/queues/jobs/retransmit_request_job.h b/Source/charon/queues/jobs/retransmit_request_job.h index 591c79864..0573f04ec 100644 --- a/Source/charon/queues/jobs/retransmit_request_job.h +++ b/Source/charon/queues/jobs/retransmit_request_job.h @@ -42,6 +42,21 @@ struct retransmit_request_job_t { job_t job_interface; /** + * @brief Returns the retransmit count for a specific request. + * + * @param this calling retransmit_request_job_t object + * @return retransmit count of request + */ + u_int32_t (*get_retransmit_count) (retransmit_request_job_t *this); + + /** + * @brief Increases number of retransmitt attemps. + * + * @param this calling retransmit_request_job_t object + */ + void (*increase_retransmit_count) (retransmit_request_job_t *this); + + /** * @brief Returns the message_id of the request to be resent * * @param this calling retransmit_request_job_t object |