Add get_endpoint in transport vft
[vpp.git] / src / vnet / session / session.h
index 26506ca..375b47a 100644 (file)
@@ -47,7 +47,6 @@ typedef struct session_tx_context_
   session_t *s;
   transport_proto_vft_t *transport_vft;
   transport_connection_t *tc;
-  vlib_buffer_t *b;
   u32 max_dequeue;
   u32 snd_space;
   u32 left_to_snd;
@@ -336,8 +335,11 @@ int session_send_io_evt_to_thread_custom (void *data, u32 thread_index,
                                          session_evt_type_t evt_type);
 void session_send_rpc_evt_to_thread (u32 thread_index, void *fp,
                                     void *rpc_args);
+void session_send_rpc_evt_to_thread_force (u32 thread_index, void *fp,
+                                          void *rpc_args);
 transport_connection_t *session_get_transport (session_t * s);
-
+void session_get_endpoint (session_t * s, ip46_address_t * ip, u16 * port,
+                          u8 * is_ip4, u8 is_lcl);
 
 u8 *format_session (u8 * s, va_list * args);
 uword unformat_session (unformat_input_t * input, va_list * args);
@@ -377,14 +379,21 @@ always_inline u32
 transport_max_rx_enqueue (transport_connection_t * tc)
 {
   session_t *s = session_get (tc->s_index, tc->thread_index);
-  return svm_fifo_max_enqueue (s->rx_fifo);
+  return svm_fifo_max_enqueue_prod (s->rx_fifo);
 }
 
 always_inline u32
 transport_max_tx_dequeue (transport_connection_t * tc)
 {
   session_t *s = session_get (tc->s_index, tc->thread_index);
-  return svm_fifo_max_dequeue (s->tx_fifo);
+  return svm_fifo_max_dequeue_cons (s->tx_fifo);
+}
+
+always_inline u32
+transport_max_rx_dequeue (transport_connection_t * tc)
+{
+  session_t *s = session_get (tc->s_index, tc->thread_index);
+  return svm_fifo_max_dequeue (s->rx_fifo);
 }
 
 always_inline u32
@@ -436,7 +445,8 @@ transport_add_tx_event (transport_connection_t * tc)
 always_inline u64
 listen_session_get_handle (session_t * s)
 {
-  ASSERT (s->session_state == SESSION_STATE_LISTENING);
+  ASSERT (s->session_state == SESSION_STATE_LISTENING ||
+         session_get_transport_proto (s) == TRANSPORT_PROTO_QUIC);
   return session_handle (s);
 }