-
- /* Create the Initiator notification for IKE SA removal */
- {
- ike_header_t *ike0;
- u32 bi0 = 0;
- int len;
-
- bi0 = ikev2_get_new_ike_header_buff (vm, &ike0);
-
-
- ike0->exchange = IKEV2_EXCHANGE_INFORMATIONAL;
- ike0->ispi = clib_host_to_net_u64 (fsa->ispi);
- ike0->rspi = clib_host_to_net_u64 (fsa->rspi);
- vec_resize (fsa->del, 1);
- fsa->del->protocol_id = IKEV2_PROTOCOL_IKE;
- fsa->del->spi = ispi;
- ike0->msgid = clib_host_to_net_u32 (fsa->last_init_msg_id + 1);
- fsa->last_init_msg_id = clib_net_to_host_u32 (ike0->msgid);
- len = ikev2_generate_message (fsa, ike0, 0);
-
- ikev2_send_ike (vm, &fsa->iaddr, &fsa->raddr, bi0, len);
- }
-
-
- /* delete local SA */
- ikev2_child_sa_t *c;
- vec_foreach (c, fsa->childs)
- {
- ikev2_delete_tunnel_interface (km->vnet_main, fsa, c);
- ikev2_sa_del_child_sa (fsa, c);
- }
- ikev2_sa_free_all_vec (fsa);
- uword *p = hash_get (ftkm->sa_by_rspi, fsa->rspi);
- if (p)
- {
- hash_unset (ftkm->sa_by_rspi, fsa->rspi);
- pool_put (ftkm->sas, fsa);
- }
-
-