fixed statusall rekey time jitter bug (again)

This commit is contained in:
Martin Willi
2007-03-20 14:56:41 +00:00
parent 39a268b867
commit e70d5576fa
+9 -4
View File
@@ -128,6 +128,11 @@ struct private_child_sa_t {
*/ */
time_t install_time; time_t install_time;
/**
* absolute time when rekeying is sceduled
*/
time_t rekey_time;
/** /**
* state of the CHILD_SA * state of the CHILD_SA
*/ */
@@ -537,6 +542,7 @@ static status_t install(private_child_sa_t *this, proposal_t *proposal,
this->encryption = *enc_algo; this->encryption = *enc_algo;
this->integrity = *int_algo; this->integrity = *int_algo;
this->install_time = time(NULL); this->install_time = time(NULL);
this->rekey_time = soft;
return status; return status;
} }
@@ -743,7 +749,7 @@ static int print(FILE *stream, const struct printf_info *info,
private_child_sa_t *this = *((private_child_sa_t**)(args[0])); private_child_sa_t *this = *((private_child_sa_t**)(args[0]));
iterator_t *iterator; iterator_t *iterator;
sa_policy_t *policy; sa_policy_t *policy;
u_int32_t now, rekeying, soft; u_int32_t now, rekeying;
u_int32_t use, use_in, use_fwd; u_int32_t use, use_in, use_fwd;
status_t status; status_t status;
size_t written = 0; size_t written = 0;
@@ -792,11 +798,10 @@ static int print(FILE *stream, const struct printf_info *info,
} }
written += fprintf(stream, ", rekeying "); written += fprintf(stream, ", rekeying ");
soft = this->policy->get_soft_lifetime(this->policy);
/* calculate rekey times */ /* calculate rekey times */
if (soft) if (this->rekey_time)
{ {
rekeying = this->install_time + soft - now; rekeying = this->install_time + this->rekey_time - now;
written += fprintf(stream, "in %ds", rekeying); written += fprintf(stream, "in %ds", rekeying);
} }
else else