c11 safe string handling support
[vpp.git] / src / plugins / ioam / lib-vxlan-gpe / vxlan_gpe_api.c
index 6875236..2d9c6bf 100644 (file)
@@ -25,7 +25,7 @@
 
 #include <vlibapi/api.h>
 #include <vlibmemory/api.h>
-#include <vlibsocket/api.h>
+
 
 /* define message IDs */
 #include <ioam/lib-vxlan-gpe/vxlan_gpe_msg_enum.h>
@@ -61,7 +61,7 @@
 
 #define VXLAN_GPE_REPLY_MACRO(t)                                \
 do {                                                            \
-    unix_shared_memory_queue_t * q =                            \
+    svm_queue_t * q =                            \
     vl_api_client_index_to_input_queue (mp->client_index);      \
     if (!q)                                                     \
         return;                                                 \
@@ -77,7 +77,7 @@ do {                                                            \
 /* *INDENT-OFF* */
 #define VXLAN_GPE_REPLY_MACRO2(t, body)                         \
 do {                                                            \
-    unix_shared_memory_queue_t * q;                             \
+    svm_queue_t * q;                             \
     rv = vl_msg_api_pd_handler (mp, rv);                        \
     q = vl_api_client_index_to_input_queue (mp->client_index);  \
     if (!q)                                                     \
@@ -249,7 +249,7 @@ static void vl_api_vxlan_gpe_ioam_transit_enable_t_handler
   vxlan_gpe_ioam_main_t *sm = &vxlan_gpe_ioam_main;
   ip46_address_t dst_addr;
 
-  memset (&dst_addr.ip4, 0, sizeof (dst_addr.ip4));
+  clib_memset (&dst_addr.ip4, 0, sizeof (dst_addr.ip4));
   if (!mp->is_ipv6)
     {
       clib_memcpy (&dst_addr.ip4, &mp->dst_addr, sizeof (dst_addr.ip4));
@@ -271,7 +271,7 @@ static void vl_api_vxlan_gpe_ioam_transit_disable_t_handler
   vxlan_gpe_ioam_main_t *sm = &vxlan_gpe_ioam_main;
   ip46_address_t dst_addr;
 
-  memset (&dst_addr.ip4, 0, sizeof (dst_addr.ip4));
+  clib_memset (&dst_addr.ip4, 0, sizeof (dst_addr.ip4));
   if (!mp->is_ipv6)
     {
       clib_memcpy (&dst_addr.ip4, &mp->dst_addr, sizeof (dst_addr.ip4));
@@ -284,28 +284,6 @@ static void vl_api_vxlan_gpe_ioam_transit_disable_t_handler
   VXLAN_GPE_REPLY_MACRO (VL_API_VXLAN_GPE_IOAM_TRANSIT_DISABLE_REPLY);
 }
 
-
-/*
- * This routine exists to convince the vlib plugin framework that
- * we haven't accidentally copied a random .dll into the plugin directory.
- *
- * Also collects global variable pointers passed from the vpp engine
- */
-
-clib_error_t *
-vlib_plugin_register (vlib_main_t * vm, vnet_plugin_handoff_t * h,
-                     int from_early_init)
-{
-  vxlan_gpe_ioam_main_t *sm = &vxlan_gpe_ioam_main;
-  clib_error_t *error = 0;
-
-  sm->vlib_main = vm;
-  sm->vnet_main = h->vnet_main;
-  sm->unix_time_0 = (u32) time (0);    /* Store starting time */
-  sm->vlib_time_0 = vlib_time_now (vm);
-  return error;
-}
-
 /* Set up the API message handling tables */
 static clib_error_t *
 vxlan_gpe_plugin_api_hookup (vlib_main_t * vm)
@@ -325,6 +303,19 @@ vxlan_gpe_plugin_api_hookup (vlib_main_t * vm)
   return 0;
 }
 
+#define vl_msg_name_crc_list
+#include <ioam/lib-vxlan-gpe/vxlan_gpe_all_api_h.h>
+#undef vl_msg_name_crc_list
+
+static void
+setup_message_id_table (vxlan_gpe_ioam_main_t * sm, api_main_t * am)
+{
+#define _(id,n,crc) \
+  vl_msg_api_add_msg_name_crc (am, #n "_" #crc, id + sm->msg_id_base);
+  foreach_vl_msg_name_crc_ioam_vxlan_gpe;
+#undef _
+}
+
 static clib_error_t *
 vxlan_gpe_init (vlib_main_t * vm)
 {
@@ -337,6 +328,11 @@ vxlan_gpe_init (vlib_main_t * vm)
   vlib_node_t *vxlan_gpe_decap_node = NULL;
   uword next_node = 0;
 
+  sm->vlib_main = vm;
+  sm->vnet_main = vnet_get_main ();
+  sm->unix_time_0 = (u32) time (0);    /* Store starting time */
+  sm->vlib_time_0 = vlib_time_now (vm);
+
   name = format (0, "ioam_vxlan_gpe_%08x%c", api_version, 0);
 
   /* Ask for a correctly-sized block of API message decode slots */
@@ -345,6 +341,9 @@ vxlan_gpe_init (vlib_main_t * vm)
 
   error = vxlan_gpe_plugin_api_hookup (vm);
 
+  /* Add our API messages to the global name_crc hash table */
+  setup_message_id_table (sm, &api_main);
+
   /* Hook the ioam-encap node to vxlan-gpe-encap */
   vxlan_gpe_encap_node = vlib_get_node_by_name (vm, (u8 *) "vxlan-gpe-encap");
   sm->encap_v4_next_node =