aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-plugin/src/hicn_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'hicn-plugin/src/hicn_api.c')
-rw-r--r--hicn-plugin/src/hicn_api.c263
1 files changed, 24 insertions, 239 deletions
diff --git a/hicn-plugin/src/hicn_api.c b/hicn-plugin/src/hicn_api.c
index 62fa55f47..841f0b604 100644
--- a/hicn-plugin/src/hicn_api.c
+++ b/hicn-plugin/src/hicn_api.c
@@ -137,114 +137,6 @@ vl_api_hicn_api_node_stats_get_t_handler (vl_api_hicn_api_node_stats_get_t *
}
-/****** FACE *******/
-/* static hicn_error_t */
-/* hicn_api_face_ip_add (vl_api_hicn_face_ip_t * mp, hicn_face_id_t * face_id) */
-/* { */
-/* hicn_error_t rv = HICN_ERROR_NONE; */
-
-/* vnet_main_t *vnm = vnet_get_main (); */
-
-/* ip46_address_t local_addr; */
-/* ip46_address_t remote_addr; */
-/* ip_address_decode (&mp->local_addr, &local_addr); */
-/* ip_address_decode (&mp->remote_addr, &remote_addr); */
-
-/* u32 sw_if = clib_net_to_host_u32 (mp->swif); */
-
-/* if (ip46_address_is_zero (&local_addr)) */
-/* { */
-/* if (!vnet_sw_interface_is_valid (vnm, sw_if)) */
-/* { */
-/* rv = HICN_ERROR_UNSPECIFIED; */
-/* } */
-
-/* if ((rv == HICN_ERROR_NONE) && ip46_address_is_ip4 (&remote_addr)) */
-/* { */
-/* ip_interface_address_t *interface_address; */
-/* ip4_address_t *addr = */
-/* ip4_interface_address_matching_destination (&ip4_main, */
-/* &remote_addr.ip4, */
-/* sw_if, */
-/* &interface_address); */
-/* if (addr == NULL) */
-/* addr = ip4_interface_first_address (&ip4_main, */
-/* sw_if, &interface_address); */
-
-/* if (addr == NULL) */
-/* rv = HICN_ERROR_UNSPECIFIED; */
-/* else */
-/* ip46_address_set_ip4 (&local_addr, addr); */
-/* } */
-/* else */
-/* { */
-/* ip_interface_address_t *interface_address; */
-/* ip6_interface_address_matching_destination (&ip6_main, */
-/* &remote_addr.ip6, sw_if, */
-/* &interface_address); */
-/* ip6_address_t *addr = NULL; */
-/* if (rv == HICN_ERROR_NONE && interface_address != NULL) */
-/* { */
-/* addr = */
-/* (ip6_address_t *) */
-/* ip_interface_address_get_address (&ip6_main.lookup_main, */
-/* interface_address); */
-/* } */
-/* else */
-/* { */
-/* addr = ip6_interface_first_address (&ip6_main, sw_if); */
-/* } */
-
-/* if (addr == NULL) */
-/* rv = HICN_ERROR_UNSPECIFIED; */
-/* else */
-/* ip46_address_set_ip6 (&local_addr, addr); */
-/* } */
-/* } */
-
-/* if (rv == HICN_ERROR_NONE) */
-/* rv = hicn_face_ip_add (&local_addr, &remote_addr, sw_if, face_id, 0); */
-
-/* return rv; */
-/* } */
-
-/* static void */
-/* vl_api_hicn_api_face_ip_add_t_handler (vl_api_hicn_api_face_ip_add_t * mp) */
-/* { */
-/* vl_api_hicn_api_face_ip_add_reply_t *rmp; */
-/* hicn_error_t rv = HICN_ERROR_NONE; */
-
-/* hicn_main_t *sm = &hicn_main; */
-/* hicn_face_id_t face_id = HICN_FACE_NULL; */
-/* rv = hicn_api_face_ip_add (&(mp->face), &face_id); */
-
-/* /\* *INDENT-OFF* *\/ */
-/* REPLY_MACRO2 (VL_API_HICN_API_FACE_IP_ADD_REPLY /\* , rmp, mp, rv *\/ ,( */
-/* { */
-/* rmp->faceid = clib_host_to_net_u32 ((u32) face_id); */
-/* rmp->retval = rv; */
-/* })); */
-/* /\* *INDENT-ON* *\/ */
-/* } */
-
-/* static void */
-/* vl_api_hicn_api_face_ip_del_t_handler (vl_api_hicn_api_face_ip_del_t * mp) */
-/* { */
-/* vl_api_hicn_api_face_ip_del_reply_t *rmp; */
-/* int rv = HICN_ERROR_FACE_NOT_FOUND; */
-
-/* hicn_main_t *sm = &hicn_main; */
-
-/* hicn_face_id_t faceid = clib_net_to_host_u32 (mp->faceid); */
-/* if (hicn_dpoi_idx_is_valid (faceid)) */
-/* { */
-/* rv = hicn_face_ip_del (faceid); */
-/* } */
-
-/* REPLY_MACRO (VL_API_HICN_API_FACE_IP_DEL_REPLY /\* , rmp, mp, rv *\/ ); */
-
-/* } */
-
static void
vl_api_hicn_api_face_params_get_t_handler
(vl_api_hicn_api_face_params_get_t * mp)
@@ -265,93 +157,6 @@ static void
/* *INDENT-ON* */
}
-/* static hicn_error_t */
-/* hicn_api_face_udp_add (vl_api_hicn_face_udp_t * mp, hicn_face_id_t * face_id) */
-/* { */
-/* hicn_error_t rv = HICN_ERROR_NONE; */
-
-/* ip46_address_t local_addr = ip46_address_initializer; */
-/* ip46_address_t remote_addr = ip46_address_initializer; */
-/* u16 lport; */
-/* u16 rport; */
-/* u32 sw_if; */
-/* ip_address_decode (&mp->local_addr, &local_addr); */
-/* ip_address_decode (&mp->remote_addr, &remote_addr); */
-/* //Do not byteswap. We store ports in network order */
-/* lport = mp->lport; */
-/* rport = mp->rport; */
-/* sw_if = clib_net_to_host_u32 (mp->swif); */
-
-/* int input_is_ok = !ip46_address_is_zero (&local_addr) */
-/* && !ip46_address_is_zero (&remote_addr) */
-/* && */
-/* ((ip46_address_is_ip4 (&local_addr) && ip46_address_is_ip4 (&remote_addr)) */
-/* || (!ip46_address_is_ip4 (&local_addr) */
-/* && !ip46_address_is_ip4 (&remote_addr))) && lport != 0 && rport != 0; */
-
-/* if (!input_is_ok) */
-/* { */
-/* rv = HICN_ERROR_UNSPECIFIED; */
-/* } */
-/* else */
-/* { */
-/* rv = hicn_face_udp_add (&local_addr, */
-/* &remote_addr, lport, rport, sw_if, face_id); */
-/* } */
-/* return rv; */
-/* } */
-
-/* static void */
-/* vl_api_hicn_api_face_add_t_handler (vl_api_hicn_api_face_add_t * mp) */
-/* { */
-/* vl_api_hicn_api_face_add_reply_t *rmp; */
-/* hicn_error_t rv = HICN_ERROR_NONE; */
-
-/* hicn_main_t *sm = &hicn_main; */
-/* hicn_face_id_t face_id; */
-/* vl_api_hicn_face_type_t face_type = clib_net_to_host_u32 (mp->type); */
-
-/* switch (face_type) */
-/* { */
-/* case IP_FACE: */
-/* rv = hicn_api_face_ip_add (&(mp->face.ip), &face_id); */
-/* break; */
-/* case UDP_FACE: */
-/* rv = hicn_api_face_udp_add (&(mp->face.udp), &face_id); */
-/* break; */
-/* default: */
-/* rv = HICN_ERROR_UNSPECIFIED; */
-/* break; */
-/* } */
-
-/* /\* *INDENT-OFF* *\/ */
-/* REPLY_MACRO2 (VL_API_HICN_API_FACE_ADD_REPLY /\* , rmp, mp, rv *\/ ,( */
-/* { */
-/* rmp->faceid = clib_host_to_net_u32 ((u32) face_id); */
-/* rmp->retval = clib_host_to_net_u32 (rv); */
-/* })); */
-/* /\* *INDENT-ON* *\/ */
-/* } */
-
-/* static void */
-/* vl_api_hicn_api_face_del_t_handler (vl_api_hicn_api_face_del_t * mp) */
-/* { */
-/* vl_api_hicn_api_face_del_reply_t *rmp; */
-/* int rv = HICN_ERROR_FACE_NOT_FOUND; */
-
-/* hicn_main_t *sm = &hicn_main; */
-
-/* hicn_face_id_t faceid = clib_net_to_host_u32 (mp->faceid); */
-/* if (hicn_dpoi_idx_is_valid (faceid)) */
-/* { */
-/* hicn_face_t *face = hicn_dpoi_get_from_idx (faceid); */
-/* hicn_face_vft_t *vft = hicn_face_get_vft (face->shared.face_type); */
-/* rv = vft->hicn_face_del (faceid); */
-/* } */
-
-/* REPLY_MACRO (VL_API_HICN_API_FACE_DEL_REPLY /\* , rmp, mp, rv *\/ ); */
-/* } */
-
static void
send_face_details (hicn_face_t * face, vl_api_hicn_face_t * mp)
{
@@ -371,50 +176,6 @@ send_face_details (hicn_face_t * face, vl_api_hicn_face_t * mp)
}
}
-/* static void */
-/* send_face_udp_details (hicn_face_t * face, vl_api_hicn_face_udp_t * mp) */
-/* { */
-/* vnet_main_t *vnm = vnet_get_main (); */
-/* hicn_face_udp_t *face_udp = (hicn_face_udp_t *) face->data; */
-/* if (face_udp->hdrs.ip4.ip.ip_version_and_header_length == 0x45) */
-/* { */
-/* ip46_address_t src_addr = { 0 }; */
-/* ip46_address_t dst_addr = { 0 }; */
-/* ip46_address_set_ip4 (&src_addr, &(face_udp->hdrs.ip4.ip.src_address)); */
-/* ip46_address_set_ip4 (&dst_addr, &(face_udp->hdrs.ip4.ip.dst_address)); */
-
-/* ip_address_encode (&src_addr, IP46_TYPE_ANY, &(mp->local_addr)); */
-/* ip_address_encode (&dst_addr, IP46_TYPE_ANY, &(mp->remote_addr)); */
-/* //Do not swap, they are already in network order */
-/* mp->lport = face_udp->hdrs.ip4.udp.src_port; */
-/* mp->rport = face_udp->hdrs.ip4.udp.dst_port; */
-/* } */
-/* else */
-/* { */
-/* ip46_address_t src_addr = { 0 }; */
-/* ip46_address_t dst_addr = { 0 }; */
-/* ip46_address_set_ip6 (&src_addr, &(face_udp->hdrs.ip6.ip.src_address)); */
-/* ip46_address_set_ip6 (&dst_addr, &(face_udp->hdrs.ip6.ip.dst_address)); */
-
-/* ip_address_encode (&src_addr, IP46_TYPE_ANY, &(mp->local_addr)); */
-/* ip_address_encode (&dst_addr, IP46_TYPE_ANY, &(mp->remote_addr)); */
-/* //Do not swap, they are already in network order */
-/* mp->lport = face_udp->hdrs.ip6.udp.src_port; */
-/* mp->rport = face_udp->hdrs.ip6.udp.dst_port; */
-/* } */
-/* mp->flags = clib_host_to_net_u32 (face->shared.flags); */
-/* mp->swif = clib_net_to_host_u32 (face->shared.sw_if); */
-/* vnet_sw_interface_t *sw_interface = */
-/* vnet_get_sw_interface_or_null (vnm, face->shared.sw_if); */
-/* u8 *sbuf = 0; */
-/* if (sw_interface != NULL) */
-/* { */
-/* sbuf = */
-/* format (0, "%U", format_vnet_sw_interface_name, vnm, sw_interface); */
-/* strcpy ((char *) (mp->if_name), (char *) sbuf); */
-/* } */
-/* } */
-
static void
send_faces_details (vl_api_registration_t * reg,
hicn_face_t * face, u32 context)
@@ -899,6 +660,30 @@ vl_api_hicn_api_face_cons_del_t_handler (vl_api_hicn_api_face_cons_del_t * mp)
REPLY_MACRO (VL_API_HICN_API_FACE_CONS_DEL_REPLY /* , rmp, mp, rv */ );
}
+static void vl_api_hicn_api_enable_disable_t_handler
+(vl_api_hicn_api_enable_disable_t * mp)
+{
+ vl_api_hicn_api_enable_disable_reply_t *rmp;
+ int rv = HICN_ERROR_NONE;
+
+ hicn_main_t *sm = &hicn_main;
+
+ fib_prefix_t prefix;
+ ip_prefix_decode (&mp->prefix, &prefix);
+
+ switch (clib_net_to_host_u32(mp->enable_disable))
+ {
+ case HICN_ENABLE:
+ rv = hicn_route_enable(&prefix);
+ break;
+ case HICN_DISABLE:
+ rv = hicn_route_disable(&prefix);
+ break;
+ }
+
+ REPLY_MACRO (VL_API_HICN_API_ENABLE_DISABLE_REPLY/* , rmp, mp, rv */ );
+}
+
/************************************************************************************/