api: multiple connections per process
[vpp.git] / src / plugins / mactime / mactime.c
index 502ac98..9192a26 100644 (file)
@@ -24,6 +24,7 @@
 #include <vpp/app/version.h>
 
 /* define message IDs */
+#include <vnet/format_fns.h>
 #include <mactime/mactime.api_enum.h>
 #include <mactime/mactime.api_types.h>
 
@@ -64,6 +65,7 @@ mactime_enable_disable (mactime_main_t * mm, u32 sw_if_index,
 {
   vnet_sw_interface_t *sw;
   int rv = 0;
+  static u8 url_init_done;
 
   feature_init (mm);
 
@@ -81,6 +83,12 @@ mactime_enable_disable (mactime_main_t * mm, u32 sw_if_index,
                               sw_if_index, enable_disable, 0, 0);
   vnet_feature_enable_disable ("interface-output", "mactime-tx",
                               sw_if_index, enable_disable, 0, 0);
+  if (url_init_done == 0)
+    {
+      mactime_url_init (mm->vlib_main);
+      url_init_done = 1;
+    }
+
   return rv;
 }
 
@@ -192,6 +200,7 @@ vl_api_mactime_dump_t_handler (vl_api_mactime_dump_t * mp)
     memset (ep, 0, message_size);
     ep->_vl_msg_id = clib_host_to_net_u16 (VL_API_MACTIME_DETAILS
                                            + mm->msg_id_base);
+    ep->context = mp->context;
     /* Index is the key for the stats segment combined counters */
     ep->pool_index = clib_host_to_net_u32 (dev - mm->devices);
 
@@ -240,7 +249,7 @@ mactime_send_create_entry_message (u8 * mac_address)
   u8 *name;
   vl_api_mactime_add_del_range_t *mp;
 
-  am = &api_main;
+  am = vlibapi_get_main ();
   shmem_hdr = am->shmem_hdr;
   mp = vl_msg_api_alloc_as_if_client (sizeof (*mp));
   clib_memset (mp, 0, sizeof (*mp));