Type: feature
Change-Id: I0db0a9b2f872753fa64d27335838cb34645a9ee8
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
+void
+ikev2_disable_dpd (void)
+{
+ ikev2_main_t *km = &ikev2_main;
+ km->dpd_disabled = 1;
+}
+
static_always_inline int
ikev2_mngr_process_responder_sas (ikev2_sa_t * sa)
{
static_always_inline int
ikev2_mngr_process_responder_sas (ikev2_sa_t * sa)
{
req_sent |= ikev2_mngr_process_child_sa(sa, c, del_old_ids);
}
req_sent |= ikev2_mngr_process_child_sa(sa, c, del_old_ids);
}
- if (ikev2_mngr_process_responder_sas (sa))
+ if (!km->dpd_disabled && ikev2_mngr_process_responder_sas (sa))
vec_add1 (to_be_deleted, sa - tkm->sas);
}));
/* *INDENT-ON* */
vec_add1 (to_be_deleted, sa - tkm->sas);
}));
/* *INDENT-ON* */
+static clib_error_t *
+ikev2_disable_dpd_command_fn (vlib_main_t * vm,
+ unformat_input_t * input,
+ vlib_cli_command_t * cmd)
+{
+ ikev2_disable_dpd ();
+ return 0;
+}
+
+/* *INDENT-OFF* */
+VLIB_CLI_COMMAND (ikev2_cli_disable_dpd_command, static) = {
+ .path = "ikev2 dpd disable",
+ .short_help = "ikev2 dpd disable",
+ .function = ikev2_disable_dpd_command_fn,
+};
+/* *INDENT-ON* */
+
static uword
unformat_ikev2_token (unformat_input_t * input, va_list * va)
{
static uword
unformat_ikev2_token (unformat_input_t * input, va_list * va)
{
"ikev2 initiate sa-init <profile id>\n"
"ikev2 initiate del-child-sa <child sa ispi>\n"
"ikev2 initiate del-sa <sa ispi>\n"
"ikev2 initiate sa-init <profile id>\n"
"ikev2 initiate del-child-sa <child sa ispi>\n"
"ikev2 initiate del-sa <sa ispi>\n"
- "ikev2 initiate rekey-child-sa <profile id> <child sa ispi>\n",
+ "ikev2 initiate rekey-child-sa <child sa ispi>\n",
.function = ikev2_initiate_command_fn,
};
/* *INDENT-ON* */
.function = ikev2_initiate_command_fn,
};
/* *INDENT-ON* */
/* max number of retries before considering peer dead */
u32 liveness_max_retries;
/* max number of retries before considering peer dead */
u32 liveness_max_retries;
+
+ /* dead peer detection */
+ u8 dpd_disabled;
} ikev2_main_t;
extern ikev2_main_t ikev2_main;
} ikev2_main_t;
extern ikev2_main_t ikev2_main;
u32 rlen);
int ikev2_set_log_level (ikev2_log_level_t log_level);
u8 *ikev2_find_ike_notify_payload (ike_header_t * ike, u32 msg_type);
u32 rlen);
int ikev2_set_log_level (ikev2_log_level_t log_level);
u8 *ikev2_find_ike_notify_payload (ike_header_t * ike, u32 msg_type);
+void ikev2_disable_dpd (void);
static_always_inline ikev2_main_per_thread_data_t *
ikev2_get_per_thread_data ()
static_always_inline ikev2_main_per_thread_data_t *
ikev2_get_per_thread_data ()