PAPI: Use UNIX domain sockets instead of shared memory

Adds support for running the API purely across Unix domain sockets.
Usage: vpp = VPP(use_socket=True)

Change-Id: Iafc1301e03dd3edc3f4d702dd6c0b98d3b50b69e
Signed-off-by: Ole Troan <ot@cisco.com>
diff --git a/src/vlibmemory/memclnt.api b/src/vlibmemory/memclnt.api
index f88e5bd..451bc0e 100644
--- a/src/vlibmemory/memclnt.api
+++ b/src/vlibmemory/memclnt.api
@@ -17,7 +17,7 @@
 option version = "2.0.0";
 
 /*
- * Define services not following the normal convetions here
+ * Define services not following the normal conventions here
  */
 service {
   rpc memclnt_rx_thread_suspend returns null;
@@ -145,6 +145,12 @@
     u16 last_msg_id;
 };
 
+typedef message_table_entry
+{
+  u16 index;
+  u8 name[64];
+};
+
 /*
  * Create a socket client registration. 
  */
@@ -154,23 +160,26 @@
 };
 
 define sockclnt_create_reply {
+    u32 client_index;
     u32 context;                /* opaque value from the create request */
     i32 response;               /* Non-negative = success */
-    u64 handle;           	/* handle by which vlib knows this client */
     u32 index;                  /* index, used e.g. by API trace replay */
+    u16 count;
+    vl_api_message_table_entry_t message_table[count];
 };
 
 /*
  * Delete a client registration 
  */
 define sockclnt_delete {
+    u32 client_index;
+    u32 context;
     u32 index;                  /* index, used e.g. by API trace replay */
-    u64 handle;               	/* handle by which vlib knows this client */
 };
 
 define sockclnt_delete_reply {
+    u32 context;
     i32 response;               /* Non-negative = success */
-    u64 handle;               	/* in case the client wonders */
 };
 
 /*