fixed statusall rekey time jitter bug (again)
authorMartin Willi <martin@strongswan.org>
Tue, 20 Mar 2007 14:56:41 +0000 (14:56 -0000)
committerMartin Willi <martin@strongswan.org>
Tue, 20 Mar 2007 14:56:41 +0000 (14:56 -0000)
src/charon/sa/child_sa.c

index ea7590c..1913138 100644 (file)
@@ -129,6 +129,11 @@ struct private_child_sa_t {
        time_t install_time;
        
        /**
+        * absolute time when rekeying is sceduled
+        */
+       time_t rekey_time;
+       
+       /**
         * state of the CHILD_SA
         */
        child_sa_state_t state;
@@ -537,6 +542,7 @@ static status_t install(private_child_sa_t *this, proposal_t *proposal,
        this->encryption = *enc_algo;
        this->integrity = *int_algo;
        this->install_time = time(NULL);
+       this->rekey_time = soft;
        
        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]));
        iterator_t *iterator;
        sa_policy_t *policy;
-       u_int32_t now, rekeying, soft;
+       u_int32_t now, rekeying;
        u_int32_t use, use_in, use_fwd;
        status_t status;
        size_t written = 0;
@@ -792,11 +798,10 @@ static int print(FILE *stream, const struct printf_info *info,
                        }
                        written += fprintf(stream, ", rekeying ");
                        
-                       soft = this->policy->get_soft_lifetime(this->policy);
                        /* 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);
                        }
                        else