#include <plugins/ikev2/ikev2_priv.h>
#include <openssl/sha.h>
-#define IKEV2_LIVENESS_RETRIES 2
+#define IKEV2_LIVENESS_RETRIES 3
#define IKEV2_LIVENESS_PERIOD_CHECK 30
ikev2_main_t ikev2_main;
{
ikev2_main_t *km = &ikev2_main;
sa->liveness_period_check =
- vlib_time_now (km->vlib_main) + IKEV2_LIVENESS_PERIOD_CHECK;
+ vlib_time_now (km->vlib_main) + km->liveness_period;
}
static uword
km->vnet_main = vnet_get_main ();
km->vlib_main = vm;
+ km->liveness_period = IKEV2_LIVENESS_PERIOD_CHECK;
+ km->liveness_max_retries = IKEV2_LIVENESS_RETRIES;
ikev2_crypto_init (km);
mhash_init_vec_string (&km->profile_index_by_name, sizeof (uword));
return 0;
}
+clib_error_t *
+ikev2_set_liveness_params (u32 period, u32 max_retries)
+{
+ ikev2_main_t *km = &ikev2_main;
+
+ if (period == 0 || max_retries == 0)
+ return clib_error_return (0, "invalid args");
+
+ km->liveness_period = period;
+ km->liveness_max_retries = max_retries;
+ return 0;
+}
+
static void
ikev2_mngr_process_ipsec_sa (ipsec_sa_t * ipsec_sa)
{
if (!sa->sk_ai || !sa->sk_ar)
return 0;
- if (sa->liveness_retries > IKEV2_LIVENESS_RETRIES)
+ if (sa->liveness_retries >= km->liveness_max_retries)
return 1;
f64 now = vlib_time_now (vm);
if (sa->liveness_period_check < now)
{
sa->liveness_retries++;
- sa->liveness_period_check = now + IKEV2_LIVENESS_PERIOD_CHECK;
+ sa->liveness_period_check = now + km->liveness_period;
ikev2_send_informational_request (sa);
}
return 0;