43 #define vl_print(handle, ...) vlib_cli_output (handle, __VA_ARGS__) 50 #define foreach_vpe_api_msg \ 51 _(IPSEC_SPD_ADD_DEL, ipsec_spd_add_del) \ 52 _(IPSEC_INTERFACE_ADD_DEL_SPD, ipsec_interface_add_del_spd) \ 53 _(IPSEC_SPD_ADD_DEL_ENTRY, ipsec_spd_add_del_entry) \ 54 _(IPSEC_SAD_ADD_DEL_ENTRY, ipsec_sad_add_del_entry) \ 55 _(IPSEC_SA_SET_KEY, ipsec_sa_set_key) \ 56 _(IPSEC_SPD_DUMP, ipsec_spd_dump) \ 57 _(IKEV2_PROFILE_ADD_DEL, ikev2_profile_add_del) \ 58 _(IKEV2_PROFILE_SET_AUTH, ikev2_profile_set_auth) \ 59 _(IKEV2_PROFILE_SET_ID, ikev2_profile_set_id) \ 60 _(IKEV2_PROFILE_SET_TS, ikev2_profile_set_ts) \ 61 _(IKEV2_SET_LOCAL_KEY, ikev2_set_local_key) \ 62 _(IKEV2_SET_RESPONDER, ikev2_set_responder) \ 63 _(IKEV2_SET_IKE_TRANSFORMS, ikev2_set_ike_transforms) \ 64 _(IKEV2_SET_ESP_TRANSFORMS, ikev2_set_esp_transforms) \ 65 _(IKEV2_SET_SA_LIFETIME, ikev2_set_sa_lifetime) \ 66 _(IKEV2_INITIATE_SA_INIT, ikev2_initiate_sa_init) \ 67 _(IKEV2_INITIATE_DEL_IKE_SA, ikev2_initiate_del_ike_sa) \ 68 _(IKEV2_INITIATE_DEL_CHILD_SA, ikev2_initiate_del_child_sa) \ 69 _(IKEV2_INITIATE_REKEY_CHILD_SA, ikev2_initiate_rekey_child_sa) 94 u32 sw_if_index __attribute__ ((unused));
95 u32 spd_id __attribute__ ((unused));
98 spd_id = ntohl (mp->
spd_id);
105 rv = VNET_API_ERROR_UNIMPLEMENTED;
110 REPLY_MACRO (VL_API_IPSEC_INTERFACE_ADD_DEL_SPD_REPLY);
123 memset (&p, 0,
sizeof (p));
150 if (mp->
policy == IPSEC_POLICY_ACTION_RESOLVE)
153 rv = VNET_API_ERROR_UNIMPLEMENTED;
169 rv = VNET_API_ERROR_UNIMPLEMENTED;
174 REPLY_MACRO (VL_API_IPSEC_SPD_ADD_DEL_ENTRY_REPLY);
187 memset (&sa, 0,
sizeof (sa));
195 rv = VNET_API_ERROR_UNIMPLEMENTED;
205 rv = VNET_API_ERROR_UNIMPLEMENTED;
216 rv = VNET_API_ERROR_UNIMPLEMENTED;
242 rv = VNET_API_ERROR_UNIMPLEMENTED;
248 rv = VNET_API_ERROR_UNIMPLEMENTED;
253 REPLY_MACRO (VL_API_IPSEC_SAD_ADD_DEL_ENTRY_REPLY);
263 memset (mp, 0,
sizeof (*mp));
264 mp->_vl_msg_id = ntohs (VL_API_IPSEC_SPD_DETAILS);
322 if (mp->sa_id == ~(0) || ntohl (mp->sa_id) == policy->sa_id)
323 send_ipsec_spd_details (policy, q,
348 rv = VNET_API_ERROR_UNIMPLEMENTED;
367 rv = VNET_API_ERROR_UNSPECIFIED;
369 rv = VNET_API_ERROR_UNIMPLEMENTED;
392 rv = VNET_API_ERROR_UNSPECIFIED;
394 rv = VNET_API_ERROR_UNIMPLEMENTED;
416 rv = VNET_API_ERROR_UNSPECIFIED;
418 rv = VNET_API_ERROR_UNIMPLEMENTED;
439 rv = VNET_API_ERROR_UNSPECIFIED;
441 rv = VNET_API_ERROR_UNIMPLEMENTED;
459 rv = VNET_API_ERROR_UNSPECIFIED;
461 rv = VNET_API_ERROR_UNIMPLEMENTED;
484 rv = VNET_API_ERROR_UNSPECIFIED;
486 rv = VNET_API_ERROR_UNIMPLEMENTED;
510 rv = VNET_API_ERROR_UNSPECIFIED;
512 rv = VNET_API_ERROR_UNIMPLEMENTED;
515 REPLY_MACRO (VL_API_IKEV2_SET_IKE_TRANSFORMS_REPLY);
536 rv = VNET_API_ERROR_UNSPECIFIED;
538 rv = VNET_API_ERROR_UNIMPLEMENTED;
541 REPLY_MACRO (VL_API_IKEV2_SET_ESP_TRANSFORMS_REPLY);
561 rv = VNET_API_ERROR_UNSPECIFIED;
563 rv = VNET_API_ERROR_UNIMPLEMENTED;
584 rv = VNET_API_ERROR_UNSPECIFIED;
586 rv = VNET_API_ERROR_UNIMPLEMENTED;
605 rv = VNET_API_ERROR_UNSPECIFIED;
607 rv = VNET_API_ERROR_UNIMPLEMENTED;
610 REPLY_MACRO (VL_API_IKEV2_INITIATE_DEL_IKE_SA_REPLY);
626 rv = VNET_API_ERROR_UNSPECIFIED;
628 rv = VNET_API_ERROR_UNIMPLEMENTED;
631 REPLY_MACRO (VL_API_IKEV2_INITIATE_DEL_CHILD_SA_REPLY);
647 rv = VNET_API_ERROR_UNSPECIFIED;
649 rv = VNET_API_ERROR_UNIMPLEMENTED;
652 REPLY_MACRO (VL_API_IKEV2_INITIATE_REKEY_CHILD_SA_REPLY);
662 #define vl_msg_name_crc_list 664 #undef vl_msg_name_crc_list 669 #define _(id,n,crc) vl_msg_api_add_msg_name_crc (am, #n "_" #crc, id); 670 foreach_vl_msg_name_crc_ipsec;
680 vl_msg_api_set_handlers(VL_API_##N, #n, \ 681 vl_api_##n##_t_handler, \ 683 vl_api_##n##_t_endian, \ 684 vl_api_##n##_t_print, \ 685 sizeof(vl_api_##n##_t), 1);
Reply for IPsec: Add/delete Security Association Database entry.
static void vl_api_ikev2_profile_set_auth_t_handler(vl_api_ikev2_profile_set_auth_t *mp)
static void vl_api_ipsec_sa_set_key_t_handler(vl_api_ipsec_sa_set_key_t *mp)
static void vl_api_ikev2_set_local_key_t_handler(vl_api_ikev2_set_local_key_t *mp)
u8 use_extended_sequence_number
clib_error_t * ikev2_set_profile_responder(vlib_main_t *vm, u8 *name, u32 sw_if_index, ip4_address_t ip4)
int ipsec_add_del_policy(vlib_main_t *vm, ipsec_policy_t *policy, int is_add)
ip46_address_t tunnel_src_addr
IKEv2: Set Child SA lifetime, limited by time and/or data.
Reply for IKEv2: Set IKEv2 profile traffic selector parameters.
void vl_msg_api_send_shmem(unix_shared_memory_queue_t *q, u8 *elem)
clib_error_t * ikev2_add_del_profile(vlib_main_t *vm, u8 *name, int is_add)
static void vl_api_ikev2_initiate_rekey_child_sa_t_handler(vl_api_ikev2_initiate_rekey_child_sa_t *mp)
Reply for IKEv2: Set IKEv2 profile authentication method.
u8 tunnel_dst_address[16]
IKEv2: Add/delete profile.
VLIB_API_INIT_FUNCTION(ipsec_api_hookup)
IPsec: Update Security Association keys.
int ipsec_set_interface_spd(vlib_main_t *vm, u32 sw_if_index, u32 spd_id, int is_add)
clib_error_t * ikev2_initiate_delete_ike_sa(vlib_main_t *vm, u64 ispi)
Reply for IPsec: Add/delete Security Policy Database entry.
ipsec_integ_alg_t integ_alg
IPsec: Add/delete Security Policy Database entry.
Reply for IKEv2: Initiate the delete Child SA exchange.
unix_shared_memory_queue_t * vl_api_client_index_to_input_queue(u32 index)
static void setup_message_id_table(api_main_t *am)
static void vl_api_ipsec_spd_add_del_entry_t_handler(vl_api_ipsec_spd_add_del_entry_t *mp)
clib_error_t * ikev2_set_profile_sa_lifetime(vlib_main_t *vm, u8 *name, u64 lifetime, u32 jitter, u32 handover, u64 maxdata)
#define foreach_vpe_api_msg
int ipsec_add_del_spd(vlib_main_t *vm, u32 spd_id, int is_add)
static void vl_api_ipsec_interface_add_del_spd_t_handler(vl_api_ipsec_interface_add_del_spd_t *mp)
u8 local_address_start[16]
#define pool_foreach(VAR, POOL, BODY)
Iterate through pool.
clib_error_t * ikev2_initiate_sa_init(vlib_main_t *vm, u8 *name)
Reply for IPsec: Update Security Association keys.
#define vec_new(T, N)
Create new vector of given type and length (unspecified alignment, no header).
clib_error_t * ikev2_set_profile_auth(vlib_main_t *vm, u8 *name, u8 auth_method, u8 *auth_data, u8 data_hex_format)
Reply for IKEv2: Set IKEv2 responder interface and IP address.
static void vl_api_ikev2_set_responder_t_handler(vl_api_ikev2_set_responder_t *mp)
Reply for IKEv2: Initiate the delete IKE SA exchange.
static void vl_api_ipsec_spd_dump_t_handler(vl_api_ipsec_spd_dump_t *mp)
static void vl_api_ikev2_profile_set_ts_t_handler(vl_api_ikev2_profile_set_ts_t *mp)
ipsec_main_callbacks_t cb
IKEv2: Initiate the delete Child SA exchange.
clib_error_t * ikev2_set_profile_esp_transforms(vlib_main_t *vm, u8 *name, ikev2_transform_encr_type_t crypto_alg, ikev2_transform_integ_type_t integ_alg, ikev2_transform_dh_type_t dh_type, u32 crypto_key_size)
IKEv2: Set IKEv2 profile local/remote identification.
IKEv2: Set IKEv2 profile traffic selector parameters.
static void vl_api_ikev2_initiate_del_child_sa_t_handler(vl_api_ikev2_initiate_del_child_sa_t *mp)
u8 * format_ipsec_crypto_alg(u8 *s, va_list *args)
ipsec_policy_t * policies
static void vl_api_ipsec_spd_add_del_t_handler(vl_api_ipsec_spd_add_del_t *mp)
u8 local_address_stop[16]
clib_error_t * ikev2_set_profile_id(vlib_main_t *vm, u8 *name, u8 id_type, u8 *data, int is_local)
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
counter_t packets
packet counter
Reply for IKEv2: Initiate the rekey Child SA exchange.
IKEv2: Initiate the rekey Child SA exchange.
clib_error_t *(* check_support_cb)(ipsec_sa_t *sa)
IPsec: Add/delete Security Policy Database.
clib_error_t * ikev2_initiate_delete_child_sa(vlib_main_t *vm, u32 ispi)
Reply for IKEv2: Initiate the SA_INIT exchange.
static void vl_api_ikev2_initiate_sa_init_t_handler(vl_api_ikev2_initiate_sa_init_t *mp)
static void vl_api_ikev2_set_sa_lifetime_t_handler(vl_api_ikev2_set_sa_lifetime_t *mp)
ip46_address_range_t laddr
static void vl_api_ikev2_set_ike_transforms_t_handler(vl_api_ikev2_set_ike_transforms_t *mp)
uword * spd_index_by_spd_id
clib_error_t * ikev2_set_local_key(vlib_main_t *vm, u8 *file)
clib_error_t * ikev2_set_profile_ts(vlib_main_t *vm, u8 *name, u8 protocol_id, u16 start_port, u16 end_port, ip4_address_t start_addr, ip4_address_t end_addr, int is_local)
ip46_address_t tunnel_dst_addr
Reply for IPsec: Add/delete Security Policy Database entry.
#define BAD_SW_IF_INDEX_LABEL
IPsec: Add/delete SPD from interface.
clib_error_t * ikev2_initiate_rekey_child_sa(vlib_main_t *vm, u32 ispi)
void * vl_msg_api_alloc(int nbytes)
static void vl_api_ikev2_set_esp_transforms_t_handler(vl_api_ikev2_set_esp_transforms_t *mp)
u8 remote_address_stop[16]
int ipsec_add_del_sa(vlib_main_t *vm, ipsec_sa_t *new_sa, int is_add)
#define vec_free(V)
Free vector's memory (no header).
IPsec: Add/delete Security Association Database entry.
#define clib_warning(format, args...)
#define clib_memcpy(a, b, c)
u8 remote_address_start[16]
int ipsec_set_sa_key(vlib_main_t *vm, ipsec_sa_t *sa_update)
u8 tunnel_src_address[16]
IKEv2: Initiate the SA_INIT exchange.
static void vl_api_ipsec_sad_add_del_entry_t_handler(vl_api_ipsec_sad_add_del_entry_t *mp)
ip46_address_range_t raddr
IKEv2: Set IKEv2 responder interface and IP address.
IKEv2: Initiate the delete IKE SA exchange.
Reply for IPsec: Add/delete SPD from interface.
IKEv2: Set IKEv2 profile authentication method.
Dump ipsec policy database data.
ipsec_protocol_t protocol
static vlib_main_t * vlib_get_main(void)
IPsec policy database response.
u8 * format_ipsec_integ_alg(u8 *s, va_list *args)
counter_t bytes
byte counter
static void vl_api_ikev2_profile_set_id_t_handler(vl_api_ikev2_profile_set_id_t *mp)
Reply for IKEv2: Set Child SA lifetime.
IKEv2: Set IKEv2 local RSA private key.
static void send_ipsec_spd_details(ipsec_policy_t *p, unix_shared_memory_queue_t *q, u32 context)
clib_error_t * ikev2_set_profile_ike_transforms(vlib_main_t *vm, u8 *name, ikev2_transform_encr_type_t crypto_alg, ikev2_transform_integ_type_t integ_alg, ikev2_transform_dh_type_t dh_type, u32 crypto_key_size)
static void vl_api_ikev2_profile_add_del_t_handler(vl_api_ikev2_profile_add_del_t *mp)
ipsec_crypto_alg_t crypto_alg
static void vl_api_ikev2_initiate_del_ike_sa_t_handler(vl_api_ikev2_initiate_del_ike_sa_t *mp)
static clib_error_t * ipsec_api_hookup(vlib_main_t *vm)
Reply for IKEv2: Add/delete profile.
#define VALIDATE_SW_IF_INDEX(mp)
struct _unix_shared_memory_queue unix_shared_memory_queue_t