diff options
Diffstat (limited to 'libtransport/src/hicn/transport/core/hicn_vapi.c')
-rw-r--r-- | libtransport/src/hicn/transport/core/hicn_vapi.c | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/libtransport/src/hicn/transport/core/hicn_vapi.c b/libtransport/src/hicn/transport/core/hicn_vapi.c index cca5a552a..af7fa5a03 100644 --- a/libtransport/src/hicn/transport/core/hicn_vapi.c +++ b/libtransport/src/hicn/transport/core/hicn_vapi.c @@ -24,6 +24,7 @@ #include <hicn/name.h> #undef HICN_VPP_PLUGIN +#include <vapi/vapi_safe.h> #include <vlib/vlib.h> #include <vlibapi/api.h> #include <vlibmemory/api.h> @@ -32,12 +33,10 @@ #include <vnet/ip/format.h> #include <vnet/ip/ip4_packet.h> #include <vnet/ip/ip6_packet.h> -#include <vnet/ip/ip_types_api.h> #include <vnet/fib/fib_types.h> #include <vpp_plugins/hicn/error.h> #include <vapi/hicn.api.vapi.h> -//#include <vpp_plugins/hicn/hicn_api.h> ///////////////////////////////////////////////////// const char *HICN_ERROR_STRING[] = { @@ -51,16 +50,6 @@ const char *HICN_ERROR_STRING[] = { u8 * format_vl_api_address_union (u8 * s, va_list * args) { - // const vl_api_address_union_t *addr = - // va_arg (*args, vl_api_address_union_t *); - // vl_api_address_family_t af = va_arg (*args, vl_api_address_family_t); - - // if (ADDRESS_IP6 == af) - // s = format (s, "%U", format_ip6_address, addr->ip6); - // else - // s = format (s, "%U", format_ip4_address, addr->ip4); - - // return s; return NULL; } @@ -93,10 +82,11 @@ static vapi_error_e register_prod_app_cb(vapi_ctx_t ctx, int hicn_vapi_register_prod_app( vapi_ctx_t ctx, hicn_producer_input_params *input_params, hicn_producer_output_params *output_params) { - + + vapi_lock(); vapi_msg_hicn_api_register_prod_app * msg = vapi_alloc_hicn_api_register_prod_app(ctx); - if(ip46_address_is_ip4(&input_params->prefix->address)) { + if(ip46_address_is_ip4((ip46_address_t *)&input_params->prefix->address)) { memcpy(&msg->payload.prefix.address.un.ip4, &input_params->prefix->address, sizeof(ip4_address_t)); msg->payload.prefix.address.af = ADDRESS_IP4; } else { @@ -108,7 +98,9 @@ int hicn_vapi_register_prod_app( msg->payload.swif = input_params->swif; msg->payload.cs_reserved = input_params->cs_reserved; - return vapi_hicn_api_register_prod_app(ctx, msg, register_prod_app_cb, output_params); + int ret = vapi_hicn_api_register_prod_app(ctx, msg, register_prod_app_cb, output_params); + vapi_unlock(); + return ret; } static vapi_error_e face_prod_del_cb(vapi_ctx_t ctx, @@ -124,12 +116,16 @@ static vapi_error_e face_prod_del_cb(vapi_ctx_t ctx, int hicn_vapi_face_prod_del( vapi_ctx_t ctx, hicn_del_face_app_input_params *input_params) { - + vapi_lock(); vapi_msg_hicn_api_face_prod_del * msg = vapi_alloc_hicn_api_face_prod_del(ctx); msg->payload.faceid = input_params->face_id; - return vapi_hicn_api_face_prod_del(ctx, msg, face_prod_del_cb, NULL); + printf("Deleting producer face %d\n", msg->payload.faceid); + int ret = vapi_hicn_api_face_prod_del(ctx, msg, face_prod_del_cb, NULL); + printf("DONE Deleting producer face %d\n", input_params->face_id); + vapi_unlock(); + return ret; } static vapi_error_e register_cons_app_cb(vapi_ctx_t ctx, @@ -159,11 +155,14 @@ int hicn_vapi_register_cons_app( vapi_ctx_t ctx, hicn_consumer_input_params *input_params, hicn_consumer_output_params *output_params) { + vapi_lock(); vapi_msg_hicn_api_register_cons_app * msg = vapi_alloc_hicn_api_register_cons_app(ctx); msg->payload.swif = input_params->swif; - return vapi_hicn_api_register_cons_app(ctx, msg, register_cons_app_cb, output_params); + int ret = vapi_hicn_api_register_cons_app(ctx, msg, register_cons_app_cb, output_params); + vapi_unlock(); + return ret; } static vapi_error_e face_cons_del_cb(vapi_ctx_t ctx, @@ -179,12 +178,15 @@ static vapi_error_e face_cons_del_cb(vapi_ctx_t ctx, int hicn_vapi_face_cons_del( vapi_ctx_t ctx, hicn_del_face_app_input_params *input_params) { - + + vapi_lock(); vapi_msg_hicn_api_face_cons_del * msg = vapi_alloc_hicn_api_face_cons_del(ctx); msg->payload.faceid = input_params->face_id; - return vapi_hicn_api_face_cons_del(ctx, msg, face_cons_del_cb, NULL); + int ret = vapi_hicn_api_face_cons_del(ctx, msg, face_cons_del_cb, NULL); + vapi_unlock(); + return ret; } static vapi_error_e reigster_route_cb(vapi_ctx_t ctx, @@ -201,7 +203,8 @@ static vapi_error_e reigster_route_cb(vapi_ctx_t ctx, int hicn_vapi_register_route( vapi_ctx_t ctx, hicn_producer_set_route_params *input_params) { - + + vapi_lock(); vapi_msg_hicn_api_route_nhops_add * msg = vapi_alloc_hicn_api_route_nhops_add(ctx); fib_prefix_t prefix; @@ -210,7 +213,10 @@ int hicn_vapi_register_route( msg->payload.face_ids[0] = input_params->face_id; msg->payload.n_faces = 1; - return vapi_hicn_api_route_nhops_add(ctx, msg, reigster_route_cb, NULL); + int ret = vapi_hicn_api_route_nhops_add(ctx, msg, reigster_route_cb, NULL); + + vapi_unlock(); + return ret; } char *hicn_vapi_get_error_string(int ret_val) { |