API refactoring : bfd
[vpp.git] / vpp / vpp-api / api.c
index a5ac060..37079ce 100644 (file)
@@ -49,7 +49,6 @@
 #include <vnet/vnet.h>
 #include <vnet/l2/l2_input.h>
 #include <vnet/l2/l2_bd.h>
-#include <vnet/l2tp/l2tp.h>
 #include <vnet/ip/ip.h>
 #include <vnet/ip/ip6.h>
 #include <vnet/ip/ip6_neighbor.h>
@@ -71,7 +70,6 @@
 #include <vnet/classify/flow_classify.h>
 #include <vnet/l2/l2_classify.h>
 #include <vnet/vxlan/vxlan.h>
-#include <vnet/gre/gre.h>
 #include <vnet/l2/l2_vtr.h>
 #include <vnet/vxlan-gpe/vxlan_gpe.h>
 #include <vnet/lisp-gpe/lisp_gpe.h>
@@ -82,9 +80,7 @@
 #include <vnet/cop/cop.h>
 #include <vnet/ip/ip6_hop_by_hop.h>
 #include <vnet/ip/ip_source_and_port_range_check.h>
-#include <vnet/devices/af_packet/af_packet.h>
 #include <vnet/policer/policer.h>
-#include <vnet/devices/netmap/netmap.h>
 #include <vnet/flow/flow_report.h>
 #include <vnet/ipsec-gre/ipsec_gre.h>
 #include <vnet/flow/flow_report_classify.h>
 #include <vnet/ipsec/ipsec.h>
 #include <vnet/ipsec/ikev2.h>
 #endif /* IPSEC */
-#include <vnet/devices/virtio/vhost-user.h>
 
 #include <stats/stats.h>
 #include <oam/oam.h>
 #include <vpp-api/vpe_msg_enum.h>
 #include <vnet/span/span.h>
 
-#include <vnet/bfd/bfd_main.h>
-#include <vnet/bfd/bfd_api.h>
 #include <vnet/fib/ip6_fib.h>
 #include <vnet/fib/ip4_fib.h>
 #include <vnet/fib/fib_api.h>
@@ -188,23 +181,11 @@ _(CLASSIFY_SET_INTERFACE_IP_TABLE, classify_set_interface_ip_table)     \
 _(CLASSIFY_SET_INTERFACE_L2_TABLES, classify_set_interface_l2_tables)   \
 _(GET_NODE_INDEX, get_node_index)                                       \
 _(ADD_NODE_NEXT, add_node_next)                                                \
-_(L2TPV3_CREATE_TUNNEL, l2tpv3_create_tunnel)                           \
-_(L2TPV3_SET_TUNNEL_COOKIES, l2tpv3_set_tunnel_cookies)                 \
-_(L2TPV3_INTERFACE_ENABLE_DISABLE, l2tpv3_interface_enable_disable)     \
-_(L2TPV3_SET_LOOKUP_KEY, l2tpv3_set_lookup_key)                         \
-_(SW_IF_L2TPV3_TUNNEL_DUMP, sw_if_l2tpv3_tunnel_dump)                   \
 _(VXLAN_ADD_DEL_TUNNEL, vxlan_add_del_tunnel)                           \
 _(VXLAN_TUNNEL_DUMP, vxlan_tunnel_dump)                                 \
-_(GRE_ADD_DEL_TUNNEL, gre_add_del_tunnel)                               \
-_(GRE_TUNNEL_DUMP, gre_tunnel_dump)                                     \
 _(L2_FIB_CLEAR_TABLE, l2_fib_clear_table)                               \
 _(L2_INTERFACE_EFP_FILTER, l2_interface_efp_filter)                     \
 _(L2_INTERFACE_VLAN_TAG_REWRITE, l2_interface_vlan_tag_rewrite)         \
-_(CREATE_VHOST_USER_IF, create_vhost_user_if)                           \
-_(MODIFY_VHOST_USER_IF, modify_vhost_user_if)                           \
-_(DELETE_VHOST_USER_IF, delete_vhost_user_if)                           \
-_(SW_INTERFACE_VHOST_USER_DUMP, sw_interface_vhost_user_dump)           \
-_(SW_INTERFACE_VHOST_USER_DETAILS, sw_interface_vhost_user_details)    \
 _(SHOW_VERSION, show_version)                                          \
 _(L2_FIB_TABLE_DUMP, l2_fib_table_dump)                                        \
 _(L2_FIB_TABLE_ENTRY, l2_fib_table_entry)                               \
@@ -265,14 +246,10 @@ _(LISP_GET_MAP_REQUEST_ITR_RLOCS, lisp_get_map_request_itr_rlocs)       \
 _(SHOW_LISP_PITR, show_lisp_pitr)                                       \
 _(SHOW_LISP_MAP_REQUEST_MODE, show_lisp_map_request_mode)               \
 _(SR_MULTICAST_MAP_ADD_DEL, sr_multicast_map_add_del)                   \
-_(AF_PACKET_CREATE, af_packet_create)                                   \
-_(AF_PACKET_DELETE, af_packet_delete)                                   \
 _(POLICER_ADD_DEL, policer_add_del)                                     \
 _(POLICER_DUMP, policer_dump)                                           \
 _(POLICER_CLASSIFY_SET_INTERFACE, policer_classify_set_interface)       \
 _(POLICER_CLASSIFY_DUMP, policer_classify_dump)                         \
-_(NETMAP_CREATE, netmap_create)                                         \
-_(NETMAP_DELETE, netmap_delete)                                         \
 _(MPLS_TUNNEL_DUMP, mpls_tunnel_dump)                                   \
 _(MPLS_TUNNEL_DETAILS, mpls_tunnel_details)                             \
 _(MPLS_FIB_DUMP, mpls_fib_dump)                                         \
@@ -304,12 +281,7 @@ _(PUNT, punt)                                                           \
 _(FLOW_CLASSIFY_SET_INTERFACE, flow_classify_set_interface)             \
 _(FLOW_CLASSIFY_DUMP, flow_classify_dump)                               \
 _(IPSEC_SPD_DUMP, ipsec_spd_dump)                                       \
-_(FEATURE_ENABLE_DISABLE, feature_enable_disable)                       \
-_(BFD_UDP_ADD, bfd_udp_add)                                             \
-_(BFD_UDP_DEL, bfd_udp_del)                                             \
-_(BFD_UDP_SESSION_DUMP, bfd_udp_session_dump)                           \
-_(BFD_SESSION_SET_FLAGS, bfd_session_set_flags)                         \
-_(WANT_BFD_EVENTS, want_bfd_events)
+_(FEATURE_ENABLE_DISABLE, feature_enable_disable)
 
 #define QUOTE_(x) #x
 #define QUOTE(x) QUOTE_(x)
@@ -350,7 +322,6 @@ vl_api_memclnt_delete_callback (u32 client_index)
 }
 
 pub_sub_handler (oam_events, OAM_EVENTS);
-pub_sub_handler (bfd_events, BFD_EVENTS);
 
 #define RESOLUTION_EVENT 1
 #define RESOLUTION_PENDING_EVENT 2
@@ -982,7 +953,7 @@ vl_api_bridge_domain_add_del_t_handler (vl_api_bridge_domain_add_del_t * mp)
       if (disable_flags)
        bd_set_flags (vm, bd_index, disable_flags, 0 /* disable */ );
 
-      bd_set_mac_age (vm, mp->mac_age, mp->mac_age);
+      bd_set_mac_age (vm, bd_index, mp->mac_age);
     }
   else
     rv = bd_delete_bd_index (bdm, bd_id);
@@ -1612,27 +1583,6 @@ static void
   REPLY_MACRO (VL_API_SW_INTERFACE_SET_MPLS_ENABLE_REPLY);
 }
 
-/*
- * WARNING: replicated pending api refactor completion
- */
-static void
-send_sw_interface_flags_deleted (vpe_api_main_t * am,
-                                unix_shared_memory_queue_t * q,
-                                u32 sw_if_index)
-{
-  vl_api_sw_interface_set_flags_t *mp;
-
-  mp = vl_msg_api_alloc (sizeof (*mp));
-  memset (mp, 0, sizeof (*mp));
-  mp->_vl_msg_id = ntohs (VL_API_SW_INTERFACE_SET_FLAGS);
-  mp->sw_if_index = ntohl (sw_if_index);
-
-  mp->admin_up_down = 0;
-  mp->link_up_down = 0;
-  mp->deleted = 1;
-  vl_msg_api_send_shmem (q, (u8 *) & mp);
-}
-
 void
 send_oam_event (oam_target_t * t)
 {
@@ -2588,202 +2538,6 @@ static void
   REPLY_MACRO (VL_API_L2_INTERFACE_VLAN_TAG_REWRITE_REPLY);
 }
 
-static void
-vl_api_create_vhost_user_if_t_handler (vl_api_create_vhost_user_if_t * mp)
-{
-  int rv = 0;
-  vl_api_create_vhost_user_if_reply_t *rmp;
-  u32 sw_if_index = (u32) ~ 0;
-  vnet_main_t *vnm = vnet_get_main ();
-  vlib_main_t *vm = vlib_get_main ();
-
-  rv = vhost_user_create_if (vnm, vm, (char *) mp->sock_filename,
-                            mp->is_server, &sw_if_index, (u64) ~ 0,
-                            mp->renumber, ntohl (mp->custom_dev_instance),
-                            (mp->use_custom_mac) ? mp->mac_address : NULL);
-
-  /* Remember an interface tag for the new interface */
-  if (rv == 0)
-    {
-      /* If a tag was supplied... */
-      if (mp->tag[0])
-       {
-         /* Make sure it's a proper C-string */
-         mp->tag[ARRAY_LEN (mp->tag) - 1] = 0;
-         u8 *tag = format (0, "%s%c", mp->tag, 0);
-         vnet_set_sw_interface_tag (vnm, tag, sw_if_index);
-       }
-    }
-
-  /* *INDENT-OFF* */
-  REPLY_MACRO2(VL_API_CREATE_VHOST_USER_IF_REPLY,
-  ({
-    rmp->sw_if_index = ntohl (sw_if_index);
-  }));
-  /* *INDENT-ON* */
-}
-
-static void
-vl_api_modify_vhost_user_if_t_handler (vl_api_modify_vhost_user_if_t * mp)
-{
-  int rv = 0;
-  vl_api_modify_vhost_user_if_reply_t *rmp;
-  u32 sw_if_index = ntohl (mp->sw_if_index);
-
-  vnet_main_t *vnm = vnet_get_main ();
-  vlib_main_t *vm = vlib_get_main ();
-
-  rv = vhost_user_modify_if (vnm, vm, (char *) mp->sock_filename,
-                            mp->is_server, sw_if_index, (u64) ~ 0,
-                            mp->renumber, ntohl (mp->custom_dev_instance));
-
-  REPLY_MACRO (VL_API_MODIFY_VHOST_USER_IF_REPLY);
-}
-
-static void
-vl_api_delete_vhost_user_if_t_handler (vl_api_delete_vhost_user_if_t * mp)
-{
-  int rv = 0;
-  vl_api_delete_vhost_user_if_reply_t *rmp;
-  vpe_api_main_t *vam = &vpe_api_main;
-  u32 sw_if_index = ntohl (mp->sw_if_index);
-
-  vnet_main_t *vnm = vnet_get_main ();
-  vlib_main_t *vm = vlib_get_main ();
-
-  rv = vhost_user_delete_if (vnm, vm, sw_if_index);
-
-  REPLY_MACRO (VL_API_DELETE_VHOST_USER_IF_REPLY);
-  if (!rv)
-    {
-      unix_shared_memory_queue_t *q =
-       vl_api_client_index_to_input_queue (mp->client_index);
-      if (!q)
-       return;
-
-      vnet_clear_sw_interface_tag (vnm, sw_if_index);
-      send_sw_interface_flags_deleted (vam, q, sw_if_index);
-    }
-}
-
-static void
-  vl_api_sw_interface_vhost_user_details_t_handler
-  (vl_api_sw_interface_vhost_user_details_t * mp)
-{
-  clib_warning ("BUG");
-}
-
-static void
-send_sw_interface_vhost_user_details (vpe_api_main_t * am,
-                                     unix_shared_memory_queue_t * q,
-                                     vhost_user_intf_details_t * vui,
-                                     u32 context)
-{
-  vl_api_sw_interface_vhost_user_details_t *mp;
-
-  mp = vl_msg_api_alloc (sizeof (*mp));
-  memset (mp, 0, sizeof (*mp));
-  mp->_vl_msg_id = ntohs (VL_API_SW_INTERFACE_VHOST_USER_DETAILS);
-  mp->sw_if_index = ntohl (vui->sw_if_index);
-  mp->virtio_net_hdr_sz = ntohl (vui->virtio_net_hdr_sz);
-  mp->features = clib_net_to_host_u64 (vui->features);
-  mp->is_server = vui->is_server;
-  mp->num_regions = ntohl (vui->num_regions);
-  mp->sock_errno = ntohl (vui->sock_errno);
-  mp->context = context;
-
-  strncpy ((char *) mp->sock_filename,
-          (char *) vui->sock_filename, ARRAY_LEN (mp->sock_filename) - 1);
-  strncpy ((char *) mp->interface_name,
-          (char *) vui->if_name, ARRAY_LEN (mp->interface_name) - 1);
-
-  vl_msg_api_send_shmem (q, (u8 *) & mp);
-}
-
-static void
-  vl_api_sw_interface_vhost_user_dump_t_handler
-  (vl_api_sw_interface_vhost_user_dump_t * mp)
-{
-  int rv = 0;
-  vpe_api_main_t *am = &vpe_api_main;
-  vnet_main_t *vnm = vnet_get_main ();
-  vlib_main_t *vm = vlib_get_main ();
-  vhost_user_intf_details_t *ifaces = NULL;
-  vhost_user_intf_details_t *vuid = NULL;
-  unix_shared_memory_queue_t *q;
-
-  q = vl_api_client_index_to_input_queue (mp->client_index);
-  if (q == 0)
-    return;
-
-  rv = vhost_user_dump_ifs (vnm, vm, &ifaces);
-  if (rv)
-    return;
-
-  vec_foreach (vuid, ifaces)
-  {
-    send_sw_interface_vhost_user_details (am, q, vuid, mp->context);
-  }
-  vec_free (ifaces);
-}
-
-static void
-send_sw_if_l2tpv3_tunnel_details (vpe_api_main_t * am,
-                                 unix_shared_memory_queue_t * q,
-                                 l2t_session_t * s,
-                                 l2t_main_t * lm, u32 context)
-{
-  vl_api_sw_if_l2tpv3_tunnel_details_t *mp;
-  u8 *if_name = NULL;
-  vnet_sw_interface_t *si = NULL;
-
-  si = vnet_get_hw_sw_interface (lm->vnet_main, s->hw_if_index);
-
-  if_name = format (if_name, "%U",
-                   format_vnet_sw_interface_name, lm->vnet_main, si);
-
-  mp = vl_msg_api_alloc (sizeof (*mp));
-  memset (mp, 0, sizeof (*mp));
-  mp->_vl_msg_id = ntohs (VL_API_SW_IF_L2TPV3_TUNNEL_DETAILS);
-  strncpy ((char *) mp->interface_name,
-          (char *) if_name, ARRAY_LEN (mp->interface_name) - 1);
-  mp->sw_if_index = ntohl (si->sw_if_index);
-  mp->local_session_id = s->local_session_id;
-  mp->remote_session_id = s->remote_session_id;
-  mp->local_cookie[0] = s->local_cookie[0];
-  mp->local_cookie[1] = s->local_cookie[1];
-  mp->remote_cookie = s->remote_cookie;
-  clib_memcpy (mp->client_address, &s->client_address,
-              sizeof (s->client_address));
-  clib_memcpy (mp->our_address, &s->our_address, sizeof (s->our_address));
-  mp->l2_sublayer_present = s->l2_sublayer_present;
-  mp->context = context;
-
-  vl_msg_api_send_shmem (q, (u8 *) & mp);
-}
-
-
-static void
-vl_api_sw_if_l2tpv3_tunnel_dump_t_handler (vl_api_sw_if_l2tpv3_tunnel_dump_t *
-                                          mp)
-{
-  vpe_api_main_t *am = &vpe_api_main;
-  l2t_main_t *lm = &l2t_main;
-  unix_shared_memory_queue_t *q;
-  l2t_session_t *session;
-
-  q = vl_api_client_index_to_input_queue (mp->client_index);
-  if (q == 0)
-    return;
-
-  /* *INDENT-OFF* */
-  pool_foreach (session, lm->sessions,
-  ({
-    send_sw_if_l2tpv3_tunnel_details (am, q, session, lm, mp->context);
-  }));
-  /* *INDENT-ON* */
-}
-
 static void
 vl_api_l2_fib_table_entry_t_handler (vl_api_l2_fib_table_entry_t * mp)
 {
@@ -2987,114 +2741,6 @@ out:
   /* *INDENT-ON* */
 }
 
-static void vl_api_l2tpv3_create_tunnel_t_handler
-  (vl_api_l2tpv3_create_tunnel_t * mp)
-{
-  vl_api_l2tpv3_create_tunnel_reply_t *rmp;
-  l2t_main_t *lm = &l2t_main;
-  u32 sw_if_index = (u32) ~ 0;
-  int rv;
-
-  if (mp->is_ipv6 != 1)
-    {
-      rv = VNET_API_ERROR_UNIMPLEMENTED;
-      goto out;
-    }
-
-  u32 encap_fib_index;
-
-  if (mp->encap_vrf_id != ~0)
-    {
-      uword *p;
-      ip6_main_t *im = &ip6_main;
-      if (!
-         (p =
-          hash_get (im->fib_index_by_table_id, ntohl (mp->encap_vrf_id))))
-       {
-         rv = VNET_API_ERROR_NO_SUCH_FIB;
-         goto out;
-       }
-      encap_fib_index = p[0];
-    }
-  else
-    {
-      encap_fib_index = ~0;
-    }
-
-  rv = create_l2tpv3_ipv6_tunnel (lm,
-                                 (ip6_address_t *) mp->client_address,
-                                 (ip6_address_t *) mp->our_address,
-                                 ntohl (mp->local_session_id),
-                                 ntohl (mp->remote_session_id),
-                                 clib_net_to_host_u64 (mp->local_cookie),
-                                 clib_net_to_host_u64 (mp->remote_cookie),
-                                 mp->l2_sublayer_present,
-                                 encap_fib_index, &sw_if_index);
-
-out:
-  /* *INDENT-OFF* */
-  REPLY_MACRO2(VL_API_L2TPV3_CREATE_TUNNEL_REPLY,
-  ({
-    rmp->sw_if_index = ntohl (sw_if_index);
-  }));
-  /* *INDENT-ON* */
-}
-
-static void vl_api_l2tpv3_set_tunnel_cookies_t_handler
-  (vl_api_l2tpv3_set_tunnel_cookies_t * mp)
-{
-  vl_api_l2tpv3_set_tunnel_cookies_reply_t *rmp;
-  l2t_main_t *lm = &l2t_main;
-  int rv;
-
-  VALIDATE_SW_IF_INDEX (mp);
-
-  rv = l2tpv3_set_tunnel_cookies (lm, ntohl (mp->sw_if_index),
-                                 clib_net_to_host_u64 (mp->new_local_cookie),
-                                 clib_net_to_host_u64
-                                 (mp->new_remote_cookie));
-
-  BAD_SW_IF_INDEX_LABEL;
-
-  REPLY_MACRO (VL_API_L2TPV3_SET_TUNNEL_COOKIES_REPLY);
-}
-
-static void vl_api_l2tpv3_interface_enable_disable_t_handler
-  (vl_api_l2tpv3_interface_enable_disable_t * mp)
-{
-  int rv;
-  vnet_main_t *vnm = vnet_get_main ();
-  vl_api_l2tpv3_interface_enable_disable_reply_t *rmp;
-
-  VALIDATE_SW_IF_INDEX (mp);
-
-  rv = l2tpv3_interface_enable_disable
-    (vnm, ntohl (mp->sw_if_index), mp->enable_disable);
-
-  BAD_SW_IF_INDEX_LABEL;
-
-  REPLY_MACRO (VL_API_L2TPV3_INTERFACE_ENABLE_DISABLE_REPLY);
-}
-
-static void vl_api_l2tpv3_set_lookup_key_t_handler
-  (vl_api_l2tpv3_set_lookup_key_t * mp)
-{
-  int rv = 0;
-  l2t_main_t *lm = &l2t_main;
-  vl_api_l2tpv3_set_lookup_key_reply_t *rmp;
-
-  if (mp->key > L2T_LOOKUP_SESSION_ID)
-    {
-      rv = VNET_API_ERROR_INVALID_VALUE;
-      goto out;
-    }
-
-  lm->lookup_type = mp->key;
-
-out:
-  REPLY_MACRO (VL_API_L2TPV3_SET_LOOKUP_KEY_REPLY);
-}
-
 static void vl_api_vxlan_add_del_tunnel_t_handler
   (vl_api_vxlan_add_del_tunnel_t * mp)
 {
@@ -3104,6 +2750,7 @@ static void vl_api_vxlan_add_del_tunnel_t_handler
   u32 encap_fib_index;
   uword *p;
   ip4_main_t *im = &ip4_main;
+  vnet_main_t *vnm = vnet_get_main ();
   u32 sw_if_index = ~0;
 
   p = hash_get (im->fib_index_by_table_id, ntohl (mp->encap_vrf_id));
@@ -3129,6 +2776,13 @@ static void vl_api_vxlan_add_del_tunnel_t_handler
       goto out;
     }
   a->mcast_sw_if_index = ntohl (mp->mcast_sw_if_index);
+  if (ip46_address_is_multicast (&a->dst) &&
+      pool_is_free_index (vnm->interface_main.sw_interfaces,
+                         a->mcast_sw_if_index))
+    {
+      rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;
+      goto out;
+    }
   a->encap_fib_index = encap_fib_index;
   a->decap_next_index = ntohl (mp->decap_next_index);
   a->vni = ntohl (mp->vni);
@@ -3213,109 +2867,6 @@ static void vl_api_vxlan_tunnel_dump_t_handler
     }
 }
 
-static void vl_api_gre_add_del_tunnel_t_handler
-  (vl_api_gre_add_del_tunnel_t * mp)
-{
-  vl_api_gre_add_del_tunnel_reply_t *rmp;
-  int rv = 0;
-  vnet_gre_add_del_tunnel_args_t _a, *a = &_a;
-  u32 outer_fib_id;
-  uword *p;
-  ip4_main_t *im = &ip4_main;
-  u32 sw_if_index = ~0;
-
-  p = hash_get (im->fib_index_by_table_id, ntohl (mp->outer_fib_id));
-  if (!p)
-    {
-      rv = VNET_API_ERROR_NO_SUCH_FIB;
-      goto out;
-    }
-  outer_fib_id = p[0];
-
-  /* Check src & dst are different */
-  if ((mp->is_ipv6 && memcmp (mp->src_address, mp->dst_address, 16) == 0) ||
-      (!mp->is_ipv6 && memcmp (mp->src_address, mp->dst_address, 4) == 0))
-    {
-      rv = VNET_API_ERROR_SAME_SRC_DST;
-      goto out;
-    }
-  memset (a, 0, sizeof (*a));
-
-  a->is_add = mp->is_add;
-  a->teb = mp->teb;
-
-  /* ip addresses sent in network byte order */
-  clib_memcpy (&(a->src), mp->src_address, 4);
-  clib_memcpy (&(a->dst), mp->dst_address, 4);
-
-  a->outer_fib_id = outer_fib_id;
-  rv = vnet_gre_add_del_tunnel (a, &sw_if_index);
-
-out:
-  /* *INDENT-OFF* */
-  REPLY_MACRO2(VL_API_GRE_ADD_DEL_TUNNEL_REPLY,
-  ({
-    rmp->sw_if_index = ntohl (sw_if_index);
-  }));
-  /* *INDENT-ON* */
-}
-
-static void send_gre_tunnel_details
-  (gre_tunnel_t * t, unix_shared_memory_queue_t * q, u32 context)
-{
-  vl_api_gre_tunnel_details_t *rmp;
-  ip4_main_t *im = &ip4_main;
-
-  rmp = vl_msg_api_alloc (sizeof (*rmp));
-  memset (rmp, 0, sizeof (*rmp));
-  rmp->_vl_msg_id = ntohs (VL_API_GRE_TUNNEL_DETAILS);
-  clib_memcpy (rmp->src_address, &(t->tunnel_src), 4);
-  clib_memcpy (rmp->dst_address, &(t->tunnel_dst), 4);
-  rmp->outer_fib_id = htonl (im->fibs[t->outer_fib_index].ft_table_id);
-  rmp->teb = (GRE_TUNNEL_TYPE_TEB == t->type);
-  rmp->sw_if_index = htonl (t->sw_if_index);
-  rmp->context = context;
-
-  vl_msg_api_send_shmem (q, (u8 *) & rmp);
-}
-
-static void
-vl_api_gre_tunnel_dump_t_handler (vl_api_gre_tunnel_dump_t * mp)
-{
-  unix_shared_memory_queue_t *q;
-  gre_main_t *gm = &gre_main;
-  gre_tunnel_t *t;
-  u32 sw_if_index;
-
-  q = vl_api_client_index_to_input_queue (mp->client_index);
-  if (q == 0)
-    {
-      return;
-    }
-
-  sw_if_index = ntohl (mp->sw_if_index);
-
-  if (~0 == sw_if_index)
-    {
-      /* *INDENT-OFF* */
-      pool_foreach (t, gm->tunnels,
-      ({
-        send_gre_tunnel_details(t, q, mp->context);
-      }));
-      /* *INDENT-ON* */
-    }
-  else
-    {
-      if ((sw_if_index >= vec_len (gm->tunnel_index_by_sw_if_index)) ||
-         (~0 == gm->tunnel_index_by_sw_if_index[sw_if_index]))
-       {
-         return;
-       }
-      t = &gm->tunnels[gm->tunnel_index_by_sw_if_index[sw_if_index]];
-      send_gre_tunnel_details (t, q, mp->context);
-    }
-}
-
 static void
 vl_api_l2_patch_add_del_t_handler (vl_api_l2_patch_add_del_t * mp)
 {
@@ -5457,50 +5008,6 @@ vl_api_ioam_disable_t_handler (vl_api_ioam_disable_t * mp)
   REPLY_MACRO (VL_API_IOAM_DISABLE_REPLY);
 }
 
-static void
-vl_api_af_packet_create_t_handler (vl_api_af_packet_create_t * mp)
-{
-  vlib_main_t *vm = vlib_get_main ();
-  vl_api_af_packet_create_reply_t *rmp;
-  int rv = 0;
-  u8 *host_if_name = NULL;
-  u32 sw_if_index;
-
-  host_if_name = format (0, "%s", mp->host_if_name);
-  vec_add1 (host_if_name, 0);
-
-  rv = af_packet_create_if (vm, host_if_name,
-                           mp->use_random_hw_addr ? 0 : mp->hw_addr,
-                           &sw_if_index);
-
-  vec_free (host_if_name);
-
-  /* *INDENT-OFF* */
-  REPLY_MACRO2(VL_API_AF_PACKET_CREATE_REPLY,
-  ({
-    rmp->sw_if_index = clib_host_to_net_u32(sw_if_index);
-  }));
-  /* *INDENT-ON* */
-}
-
-static void
-vl_api_af_packet_delete_t_handler (vl_api_af_packet_delete_t * mp)
-{
-  vlib_main_t *vm = vlib_get_main ();
-  vl_api_af_packet_delete_reply_t *rmp;
-  int rv = 0;
-  u8 *host_if_name = NULL;
-
-  host_if_name = format (0, "%s", mp->host_if_name);
-  vec_add1 (host_if_name, 0);
-
-  rv = af_packet_delete_if (vm, host_if_name);
-
-  vec_free (host_if_name);
-
-  REPLY_MACRO (VL_API_AF_PACKET_DELETE_REPLY);
-}
-
 static void
 vl_api_policer_add_del_t_handler (vl_api_policer_add_del_t * mp)
 {
@@ -5704,44 +5211,6 @@ vl_api_policer_classify_dump_t_handler (vl_api_policer_classify_dump_t * mp)
     }
 }
 
-static void
-vl_api_netmap_create_t_handler (vl_api_netmap_create_t * mp)
-{
-  vlib_main_t *vm = vlib_get_main ();
-  vl_api_netmap_create_reply_t *rmp;
-  int rv = 0;
-  u8 *if_name = NULL;
-
-  if_name = format (0, "%s", mp->netmap_if_name);
-  vec_add1 (if_name, 0);
-
-  rv =
-    netmap_create_if (vm, if_name, mp->use_random_hw_addr ? 0 : mp->hw_addr,
-                     mp->is_pipe, mp->is_master, 0);
-
-  vec_free (if_name);
-
-  REPLY_MACRO (VL_API_NETMAP_CREATE_REPLY);
-}
-
-static void
-vl_api_netmap_delete_t_handler (vl_api_netmap_delete_t * mp)
-{
-  vlib_main_t *vm = vlib_get_main ();
-  vl_api_netmap_delete_reply_t *rmp;
-  int rv = 0;
-  u8 *if_name = NULL;
-
-  if_name = format (0, "%s", mp->netmap_if_name);
-  vec_add1 (if_name, 0);
-
-  rv = netmap_delete_if (vm, if_name);
-
-  vec_free (if_name);
-
-  REPLY_MACRO (VL_API_NETMAP_DELETE_REPLY);
-}
-
 static void
 vl_api_mpls_tunnel_details_t_handler (vl_api_mpls_fib_details_t * mp)
 {
@@ -6777,162 +6246,6 @@ static void
 
 }
 
-static void
-vl_api_bfd_udp_add_t_handler (vl_api_bfd_udp_add_t * mp)
-{
-  vl_api_bfd_udp_add_reply_t *rmp;
-  int rv;
-
-  VALIDATE_SW_IF_INDEX (mp);
-
-  ip46_address_t local_addr;
-  memset (&local_addr, 0, sizeof (local_addr));
-  ip46_address_t peer_addr;
-  memset (&peer_addr, 0, sizeof (peer_addr));
-  if (mp->is_ipv6)
-    {
-      clib_memcpy (&local_addr.ip6, mp->local_addr, sizeof (local_addr.ip6));
-      clib_memcpy (&peer_addr.ip6, mp->peer_addr, sizeof (peer_addr.ip6));
-    }
-  else
-    {
-      clib_memcpy (&local_addr.ip4, mp->local_addr, sizeof (local_addr.ip4));
-      clib_memcpy (&peer_addr.ip4, mp->peer_addr, sizeof (peer_addr.ip4));
-    }
-
-  rv = bfd_udp_add_session (clib_net_to_host_u32 (mp->sw_if_index),
-                           clib_net_to_host_u32 (mp->desired_min_tx),
-                           clib_net_to_host_u32 (mp->required_min_rx),
-                           mp->detect_mult, &local_addr, &peer_addr);
-
-  BAD_SW_IF_INDEX_LABEL;
-  REPLY_MACRO (VL_API_BFD_UDP_ADD_REPLY);
-}
-
-static void
-vl_api_bfd_udp_del_t_handler (vl_api_bfd_udp_del_t * mp)
-{
-  vl_api_bfd_udp_del_reply_t *rmp;
-  int rv;
-
-  VALIDATE_SW_IF_INDEX (mp);
-
-  ip46_address_t local_addr;
-  memset (&local_addr, 0, sizeof (local_addr));
-  ip46_address_t peer_addr;
-  memset (&peer_addr, 0, sizeof (peer_addr));
-  if (mp->is_ipv6)
-    {
-      clib_memcpy (&local_addr.ip6, mp->local_addr, sizeof (local_addr.ip6));
-      clib_memcpy (&peer_addr.ip6, mp->peer_addr, sizeof (peer_addr.ip6));
-    }
-  else
-    {
-      clib_memcpy (&local_addr.ip4, mp->local_addr, sizeof (local_addr.ip4));
-      clib_memcpy (&peer_addr.ip4, mp->peer_addr, sizeof (peer_addr.ip4));
-    }
-
-  rv =
-    bfd_udp_del_session (clib_net_to_host_u32 (mp->sw_if_index), &local_addr,
-                        &peer_addr);
-
-  BAD_SW_IF_INDEX_LABEL;
-  REPLY_MACRO (VL_API_BFD_UDP_DEL_REPLY);
-}
-
-void
-send_bfd_udp_session_details (unix_shared_memory_queue_t * q, u32 context,
-                             bfd_session_t * bs)
-{
-  if (bs->transport != BFD_TRANSPORT_UDP4 &&
-      bs->transport != BFD_TRANSPORT_UDP6)
-    {
-      return;
-    }
-
-  vl_api_bfd_udp_session_details_t *mp = vl_msg_api_alloc (sizeof (*mp));
-  memset (mp, 0, sizeof (*mp));
-  mp->_vl_msg_id = ntohs (VL_API_BFD_UDP_SESSION_DETAILS);
-  mp->context = context;
-  mp->bs_index = clib_host_to_net_u32 (bs->bs_idx);
-  mp->state = bs->local_state;
-  bfd_udp_session_t *bus = &bs->udp;
-  bfd_udp_key_t *key = &bus->key;
-  mp->sw_if_index = clib_host_to_net_u32 (key->sw_if_index);
-  mp->is_ipv6 = !(ip46_address_is_ip4 (&key->local_addr));
-  if (mp->is_ipv6)
-    {
-      clib_memcpy (mp->local_addr, &key->local_addr,
-                  sizeof (key->local_addr));
-      clib_memcpy (mp->peer_addr, &key->peer_addr, sizeof (key->peer_addr));
-    }
-  else
-    {
-      clib_memcpy (mp->local_addr, &key->local_addr.ip4.data,
-                  sizeof (&key->local_addr.ip4.data));
-      clib_memcpy (mp->peer_addr, &key->peer_addr.ip4.data,
-                  sizeof (&key->peer_addr.ip4.data));
-    }
-
-  vl_msg_api_send_shmem (q, (u8 *) & mp);
-}
-
-void
-bfd_event (bfd_main_t * bm, bfd_session_t * bs)
-{
-  vpe_api_main_t *vam = &vpe_api_main;
-  vpe_client_registration_t *reg;
-  unix_shared_memory_queue_t *q;
-  /* *INDENT-OFF* */
-  pool_foreach (reg, vam->bfd_events_registrations, ({
-                  q = vl_api_client_index_to_input_queue (reg->client_index);
-                  if (q)
-                    {
-                      switch (bs->transport)
-                        {
-                        case BFD_TRANSPORT_UDP4:
-                        /* fallthrough */
-                        case BFD_TRANSPORT_UDP6:
-                          send_bfd_udp_session_details (q, 0, bs);
-                        }
-                    }
-                }));
-  /* *INDENT-ON* */
-}
-
-static void
-vl_api_bfd_udp_session_dump_t_handler (vl_api_bfd_udp_session_dump_t * mp)
-{
-  unix_shared_memory_queue_t *q;
-
-  q = vl_api_client_index_to_input_queue (mp->client_index);
-
-  if (q == 0)
-    return;
-
-  bfd_session_t *bs = NULL;
-  /* *INDENT-OFF* */
-  pool_foreach (bs, bfd_main.sessions, ({
-                  if (bs->transport == BFD_TRANSPORT_UDP4 ||
-                      bs->transport == BFD_TRANSPORT_UDP6)
-                    send_bfd_udp_session_details (q, mp->context, bs);
-                }));
-  /* *INDENT-ON* */
-}
-
-static void
-vl_api_bfd_session_set_flags_t_handler (vl_api_bfd_session_set_flags_t * mp)
-{
-  vl_api_bfd_session_set_flags_reply_t *rmp;
-  int rv;
-
-  rv =
-    bfd_session_set_flags (clib_net_to_host_u32 (mp->bs_index),
-                          mp->admin_up_down);
-
-  REPLY_MACRO (VL_API_BFD_SESSION_SET_FLAGS_REPLY);
-}
-
 static void
 vl_api_punt_t_handler (vl_api_punt_t * mp)
 {