struct nhrp_interface *nifp = ifp->info;
if (nifp->ipsec_profile)
+ {
+ vici_terminate_vc_by_profile_name(nifp->ipsec_profile);
free(nifp->ipsec_profile);
+ }
nifp->ipsec_profile = profile ? strdup(profile) : NULL;
if (nifp->ipsec_fallback_profile)
+ {
+ vici_terminate_vc_by_profile_name(nifp->ipsec_fallback_profile);
free(nifp->ipsec_fallback_profile);
+ }
nifp->ipsec_fallback_profile =
fallback_profile ? strdup(fallback_profile) : NULL;
if(r->peer && r->peer->vc && r->peer->vc->ike_uniqueid)
{
debugf(NHRP_DEBUG_COMMON, "Terminating IPSec Connection for %d\n", r->peer->vc->ike_uniqueid);
- vici_terminate_vc(r->peer->vc->ike_uniqueid);
+ vici_terminate_vc_by_ike_id(r->peer->vc->ike_uniqueid);
+ r->peer->vc->ike_uniqueid = 0;
}
r->timeout = 2;
}
void vici_init(void);
void vici_terminate(void);
-void vici_terminate_vc(unsigned int ike_id);
+void vici_terminate_vc_by_profile_name(char *profile_name);
+void vici_terminate_vc_by_ike_id(unsigned int ike_id);
void vici_request_vc(const char *profile, union sockunion *src,
union sockunion *dst, int prio);
{
}
-void vici_terminate_vc(unsigned int ike_id)
+void vici_terminate_vc_by_profile_name(char *profile_name)
+{
+ struct vici_conn *vici = &vici_connection;
+ vici_submit_request(vici, "terminate", VICI_KEY_VALUE, "ike",
+ strlen(profile_name), profile_name, VICI_END);
+}
+
+void vici_terminate_vc_by_ike_id(unsigned int ike_id)
{
struct vici_conn *vici = &vici_connection;
char ike_id_str[10]={0};
snprintf(ike_id_str, sizeof(ike_id_str), "%d", ike_id);
- debugf(NHRP_DEBUG_VICI,"ike_id_str = %s", ike_id_str);
-
-
vici_submit_request(vici, "terminate", VICI_KEY_VALUE, "ike-id",
strlen(ike_id_str), ike_id_str, VICI_END);
}