+ 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 !(s->flags & VCL_SESSION_F_CONNECTED);
+ return 0;
+}
+
+static inline u8
+vcl_session_is_open (vcl_session_t * s)
+{
+ return ((s->session_state & STATE_OPEN)
+ || (s->session_state == STATE_LISTEN
+ && s->session_type == VPPCOM_PROTO_UDP));
+}
+
+static inline u8
+vcl_session_is_closing (vcl_session_t * s)
+{
+ return (s->session_state == STATE_VPP_CLOSING
+ || s->session_state == STATE_DISCONNECT);
+}
+
+static inline u8
+vcl_session_is_closed (vcl_session_t * s)
+{
+ return (!s || (s->session_state == STATE_CLOSED));
+}
+
+static inline int
+vcl_session_closing_error (vcl_session_t * s)
+{
+ /* Return 0 on closing sockets */
+ return s->session_state == STATE_DISCONNECT ? VPPCOM_ECONNRESET : 0;
+}
+
+static inline int
+vcl_session_closed_error (vcl_session_t * s)
+{
+ return s->session_state == STATE_DISCONNECT
+ ? VPPCOM_ECONNRESET : VPPCOM_ENOTCONN;
+}
+
+static inline void
+vcl_ip_copy_from_ep (ip46_address_t * ip, vppcom_endpt_t * ep)
+{
+ if (ep->is_ip4)
+ clib_memcpy_fast (&ip->ip4, ep->ip, sizeof (ip4_address_t));
+ else
+ clib_memcpy_fast (&ip->ip6, ep->ip, sizeof (ip6_address_t));
+}
+
+static inline void
+vcl_ip_copy_to_ep (ip46_address_t * ip, vppcom_endpt_t * ep, u8 is_ip4)
+{
+ ep->is_ip4 = is_ip4;
+ if (is_ip4)
+ clib_memcpy_fast (ep->ip, &ip->ip4, sizeof (ip4_address_t));
+ else
+ clib_memcpy_fast (ep->ip, &ip->ip6, sizeof (ip6_address_t));
+}
+
+static inline int
+vcl_proto_is_dgram (uint8_t proto)
+{
+ return proto == VPPCOM_PROTO_UDP;