flow: add vnet/flow formal API
[vpp.git] / src / vnet / session / session_types.h
index ca5dcc1..8cea29a 100644 (file)
@@ -309,9 +309,21 @@ session_parse_handle (session_handle_t handle, u32 * index,
 }
 
 static inline session_handle_t
-session_make_handle (u32 session_index, u32 thread_index)
+session_make_handle (u32 session_index, u32 data)
 {
-  return (((u64) thread_index << 32) | (u64) session_index);
+  return (((u64) data << 32) | (u64) session_index);
+}
+
+always_inline u32
+session_handle_index (session_handle_t ho_handle)
+{
+  return (ho_handle & 0xffffffff);
+}
+
+always_inline u32
+session_handle_data (session_handle_t ho_handle)
+{
+  return (ho_handle >> 32);
 }
 
 typedef enum
@@ -346,6 +358,7 @@ typedef enum
   SESSION_CTRL_EVT_APP_DEL_SEGMENT,
   SESSION_CTRL_EVT_MIGRATED,
   SESSION_CTRL_EVT_CLEANUP,
+  SESSION_CTRL_EVT_APP_WRK_RPC,
 } session_evt_type_t;
 
 #define foreach_session_ctrl_evt                               \
@@ -371,6 +384,7 @@ typedef enum
   _(APP_DEL_SEGMENT, app_del_segment)                          \
   _(MIGRATED, migrated)                                                \
   _(CLEANUP, cleanup)                                          \
+  _(APP_WRK_RPC, app_wrk_rpc)                                  \
 
 /* Deprecated and will be removed. Use types above */
 #define FIFO_EVENT_APP_RX SESSION_IO_EVT_RX
@@ -440,15 +454,21 @@ STATIC_ASSERT (sizeof (session_dgram_hdr_t) == (SESSION_CONN_ID_LEN + 8),
   _(REFUSED, "refused")                                                        \
   _(TIMEDOUT, "timedout")                                              \
   _(ALLOC, "obj/memory allocation error")                              \
+  _(OWNER, "object not owned by application")                          \
   _(NOROUTE, "no route")                                               \
   _(NOINTF, "no resolving interface")                                  \
   _(NOIP, "no ip for lcl interface")                                   \
   _(NOPORT, "no lcl port")                                             \
   _(NOSUPPORT, "not supported")                                                \
+  _(NOLISTEN, "not listening")                                         \
+  _(NOSESSION, "session does not exist")                               \
+  _(NOAPP, "app not attached")                                         \
   _(PORTINUSE, "lcl port in use")                                      \
   _(IPINUSE, "ip in use")                                              \
   _(ALREADY_LISTENING, "ip port pair already listened on")             \
   _(INVALID_RMT_IP, "invalid remote ip")                               \
+  _(INVALID_APPWRK, "invalid app worker")                              \
+  _(INVALID_NS, "invalid namespace")                                   \
   _(SEG_NO_SPACE, "Couldn't allocate a fifo pair")                     \
   _(SEG_NO_SPACE2, "Created segment, couldn't allocate a fifo pair")   \
   _(SEG_CREATE, "Couldn't create a new segment")                       \