Fix session connect_* api message handling.

Change-Id: If7fd125989c90240de12953658d10007b9eb4f07
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
diff --git a/src/vnet/session/session.api b/src/vnet/session/session.api
index e01cc75..30d2ae9 100644
--- a/src/vnet/session/session.api
+++ b/src/vnet/session/session.api
@@ -105,7 +105,7 @@
     @param client_queue_address - binary API client queue address. Used by 
     							  local server when connect was redirected.
 */
-define connect_uri {
+autoreply define connect_uri {
   u32 client_index;
   u32 context;
   u8 uri[128];
@@ -113,31 +113,6 @@
   u64 options[16];
 };
 
-/** \brief vpp->client, connect reply
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-    @param handle - session handle
-    @param server_rx_fifo - rx (vpp -> vpp-client) fifo address 
-    @param server_tx_fifo - tx (vpp-client -> vpp) fifo address 
-    @param vpp_event_queue_address - vpp's event queue address
-    @param segment_size - size of segment to be attached. Only for redirects.
-    @param segment_name_length - non-zero if the client needs to attach to 
-                                 the fifo segment. This should only happen 
-                                 if session was redirected.
-    @param segment_name - set if the client needs to attach to the segment
-*/
-define connect_uri_reply {
-  u32 context;
-  i32 retval;
-  u64 handle;
-  u64 server_rx_fifo;
-  u64 server_tx_fifo;
-  u64 vpp_event_queue_address;
-  u32 segment_size;
-  u8 segment_name_length;
-  u8 segment_name[128];
-};
-
 /** \brief vpp->client, accept this session
     @param context - sender context, to match reply w/ request
     @param listener_handle - tells client which listener this pertains to
@@ -273,10 +248,9 @@
                                   used to perform redirects
     @param options - socket options, fifo sizes, etc. when doing redirects
 */
-define connect_sock {
+autoreply define connect_sock {
   u32 client_index;
   u32 context;
-  u32 app_connect;
   u32 vrf;
   u8 is_ip4;
   u8 ip[16];
@@ -305,11 +279,19 @@
   u8 segment_name[128];
 };
 
-/** \brief vpp/server->client, connect reply
+/* Dummy connect message -- needed to satisfy api generators
+*
+*  NEVER USED, doxygen tags elided on purpose.
+*/
+define connect_session {
+  u32 client_index;
+  u32 context;
+};
+
+/** \brief vpp/server->client, connect reply -- used for all connect_* messages
     @param context - sender context, to match reply w/ request
     @param retval - return code for the request
     @param handle - connection handle
-    @param app_connect - application connection id from connect msg
     @param server_rx_fifo - rx (vpp -> vpp-client) fifo address 
     @param server_tx_fifo - tx (vpp-client -> vpp) fifo address 
     @param vpp_event_queue_address - vpp's event queue address
@@ -318,11 +300,10 @@
                                  the fifo segment
     @param segment_name - set if the client needs to attach to the segment
 */
-define connect_sock_reply {
+define connect_session_reply {
   u32 context;
   i32 retval;
   u64 handle;
-  u32 app_connect;
   u64 server_rx_fifo;
   u64 server_tx_fifo;
   u64 vpp_event_queue_address;
diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h
index 74d82a4..83addec 100644
--- a/src/vnet/session/session.h
+++ b/src/vnet/session/session.h
@@ -38,6 +38,28 @@
   FIFO_EVENT_RPC,
 } fifo_event_type_t;
 
+static inline const char *
+fifo_event_type_str (fifo_event_type_t et)
+{
+  switch (et)
+    {
+    case FIFO_EVENT_APP_RX:
+      return "FIFO_EVENT_APP_RX";
+    case FIFO_EVENT_APP_TX:
+      return "FIFO_EVENT_APP_TX";
+    case FIFO_EVENT_TIMEOUT:
+      return "FIFO_EVENT_TIMEOUT";
+    case FIFO_EVENT_DISCONNECT:
+      return "FIFO_EVENT_DISCONNECT";
+    case FIFO_EVENT_BUILTIN_RX:
+      return "FIFO_EVENT_BUILTIN_RX";
+    case FIFO_EVENT_RPC:
+      return "FIFO_EVENT_RPC";
+    default:
+      return "UNKNOWN FIFO EVENT";
+    }
+}
+
 #define foreach_session_input_error                                    	\
 _(NO_SESSION, "No session drops")                                       \
 _(NO_LISTENER, "No listener for dst port drops")                        \
diff --git a/src/vnet/session/session_api.c b/src/vnet/session/session_api.c
index 6bee3e2..60d9b4d 100755
--- a/src/vnet/session/session_api.c
+++ b/src/vnet/session/session_api.c
@@ -155,7 +155,7 @@
 send_session_connected_callback (u32 app_index, u32 api_context,
 				 stream_session_t * s, u8 is_fail)
 {
-  vl_api_connect_uri_reply_t *mp;
+  vl_api_connect_session_reply_t *mp;
   unix_shared_memory_queue_t *q;
   application_t *app;
   unix_shared_memory_queue_t *vpp_queue;
@@ -167,7 +167,7 @@
     return -1;
 
   mp = vl_msg_api_alloc (sizeof (*mp));
-  mp->_vl_msg_id = clib_host_to_net_u16 (VL_API_CONNECT_URI_REPLY);
+  mp->_vl_msg_id = clib_host_to_net_u16 (VL_API_CONNECT_SESSION_REPLY);
   mp->context = api_context;
   if (!is_fail)
     {
@@ -415,7 +415,7 @@
 static void
 vl_api_connect_uri_t_handler (vl_api_connect_uri_t * mp)
 {
-  vl_api_connect_uri_reply_t *rmp;
+  vl_api_connect_session_reply_t *rmp;
   vnet_connect_args_t _a, *a = &_a;
   application_t *app;
   int rv;
@@ -447,7 +447,7 @@
 
 done:
   /* *INDENT-OFF* */
-  REPLY_MACRO (VL_API_CONNECT_URI_REPLY);
+  REPLY_MACRO (VL_API_CONNECT_SESSION_REPLY);
   /* *INDENT-ON* */
 }
 
@@ -593,11 +593,11 @@
   app = application_lookup (mp->client_index);
   if (app)
     {
+      ip46_address_t *ip46 = (ip46_address_t *) mp->ip;
+
       memset (a, 0, sizeof (*a));
-      clib_memcpy (&a->tep.ip, mp->ip, (mp->is_ip4 ?
-					sizeof (ip4_address_t) :
-					sizeof (ip6_address_t)));
       a->tep.is_ip4 = mp->is_ip4;
+      a->tep.ip = *ip46;
       a->tep.port = mp->port;
       a->tep.vrf = mp->vrf;
       a->app_index = app->index;
@@ -637,7 +637,7 @@
 static void
 vl_api_connect_sock_t_handler (vl_api_connect_sock_t * mp)
 {
-  vl_api_connect_sock_reply_t *rmp;
+  vl_api_connect_session_reply_t *rmp;
   vnet_connect_args_t _a, *a = &_a;
   application_t *app;
   int rv;
@@ -652,16 +652,14 @@
   if (app)
     {
       unix_shared_memory_queue_t *client_q;
-      u8 *ip = mp->is_ip4 ? (u8 *) & a->tep.ip.ip4 : (u8 *) & a->tep.ip;
+      ip46_address_t *ip46 = (ip46_address_t *) mp->ip;
 
       client_q = vl_api_client_index_to_input_queue (mp->client_index);
       mp->client_queue_address = pointer_to_uword (client_q);
       a->tep.is_ip4 = mp->is_ip4;
+      a->tep.ip = *ip46;
       a->tep.port = mp->port;
-
-      clib_memcpy (ip, mp->ip,
-		   (mp->is_ip4 ? sizeof (ip4_address_t) :
-		    sizeof (ip6_address_t)));
+      a->tep.vrf = mp->vrf;
       a->api_context = mp->context;
       a->app_index = app->index;
       a->proto = mp->proto;
@@ -679,7 +677,7 @@
   /* Got some error, relay it */
 
 done:
-  REPLY_MACRO (VL_API_CONNECT_SOCK_REPLY);
+  REPLY_MACRO (VL_API_CONNECT_SESSION_REPLY);
 }
 
 static clib_error_t *