aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/queues/jobs/retransmit_request_job.c
diff options
context:
space:
mode:
Diffstat (limited to 'Source/charon/queues/jobs/retransmit_request_job.c')
-rw-r--r--Source/charon/queues/jobs/retransmit_request_job.c24
1 files changed, 24 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);