vcl: handle close after reset
[vpp.git] / src / vcl / vcl_private.h
index db4bcd3..f1c15ba 100644 (file)
@@ -64,13 +64,13 @@ typedef enum
 
 typedef enum
 {
-  STATE_START = 0,
+  STATE_CLOSED = 0,
   STATE_CONNECT = 0x01,
   STATE_LISTEN = 0x02,
   STATE_ACCEPT = 0x04,
   STATE_VPP_CLOSING = 0x08,
   STATE_DISCONNECT = 0x10,
-  STATE_FAILED = 0x20,
+  STATE_DETACHED = 0x20,
   STATE_UPDATED = 0x40,
   STATE_LISTEN_NO_MQ = 0x80,
 } vcl_session_state_t;
@@ -375,6 +375,7 @@ vcl_session_alloc (vcl_worker_t * wrk)
 static inline void
 vcl_session_free (vcl_worker_t * wrk, vcl_session_t * s)
 {
+  VDBG (0, "session %u [0x%llx] removed", s->session_index, s->vpp_handle);
   pool_put (wrk->sessions, s);
 }
 
@@ -517,6 +518,14 @@ vcl_session_is_ct (vcl_session_t * s)
   return (s->ct_tx_fifo != 0);
 }
 
+static inline u8
+vcl_session_is_cl (vcl_session_t * s)
+{
+  if (s->session_type == VPPCOM_PROTO_UDP)
+    return 1;
+  return 0;
+}
+
 static inline u8
 vcl_session_is_open (vcl_session_t * s)
 {
@@ -535,7 +544,8 @@ vcl_session_is_closing (vcl_session_t * s)
 static inline int
 vcl_session_closing_error (vcl_session_t * s)
 {
-  return s->session_state == STATE_DISCONNECT ? VPPCOM_ECONNRESET : 0;
+  return s->session_state == STATE_DISCONNECT
+    ? VPPCOM_ECONNRESET : VPPCOM_ECONNABORTED;
 }
 
 static inline int