X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fsession.h;h=184fa997736aca37803f902f8d57795d371a1ca0;hb=6011699556bc48eac884920d818a2a50339b9f01;hp=879b3823e5d1329fd40cfbdfd2709ed81af16b44;hpb=3c2fed5145d9e40a9ecd178c2866c813eddc6203;p=vpp.git diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h index 879b3823e5d..184fa997736 100644 --- a/src/vnet/session/session.h +++ b/src/vnet/session/session.h @@ -33,11 +33,21 @@ typedef enum { FIFO_EVENT_APP_RX, + SESSION_IO_EVT_CT_RX, FIFO_EVENT_APP_TX, - FIFO_EVENT_TIMEOUT, + SESSION_IO_EVT_CT_TX, FIFO_EVENT_DISCONNECT, FIFO_EVENT_BUILTIN_RX, FIFO_EVENT_RPC, + SESSION_CTRL_EVT_BOUND, + SESSION_CTRL_EVT_ACCEPTED, + SESSION_CTRL_EVT_ACCEPTED_REPLY, + SESSION_CTRL_EVT_CONNECTED, + SESSION_CTRL_EVT_CONNECTED_REPLY, + SESSION_CTRL_EVT_DISCONNECTED, + SESSION_CTRL_EVT_DISCONNECTED_REPLY, + SESSION_CTRL_EVT_RESET, + SESSION_CTRL_EVT_RESET_REPLY } session_evt_type_t; static inline const char * @@ -49,8 +59,6 @@ fifo_event_type_str (session_evt_type_t et) 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: @@ -112,7 +120,7 @@ typedef struct u8 data[0]; }; }; -} __clib_packed session_fifo_event_t; +} __clib_packed session_event_t; /* *INDENT-ON* */ #define SESSION_MSG_NULL { } @@ -168,14 +176,14 @@ typedef struct _session_manager_main session_manager_main_t; typedef int (session_fifo_rx_fn) (vlib_main_t * vm, vlib_node_runtime_t * node, - session_fifo_event_t * e0, stream_session_t * s0, + session_event_t * e0, stream_session_t * s0, int *n_tx_pkts); extern session_fifo_rx_fn session_tx_fifo_peek_and_snd; extern session_fifo_rx_fn session_tx_fifo_dequeue_and_snd; extern session_fifo_rx_fn session_tx_fifo_dequeue_internal; -u8 session_node_lookup_fifo_event (svm_fifo_t * f, session_fifo_event_t * e); +u8 session_node_lookup_fifo_event (svm_fifo_t * f, session_event_t * e); struct _session_manager_main { @@ -195,13 +203,13 @@ struct _session_manager_main u32 **tx_buffers; /** Per worker-thread vector of partially read events */ - session_fifo_event_t **free_event_vector; + session_event_t **free_event_vector; /** per-worker active event vectors */ - session_fifo_event_t **pending_event_vector; + session_event_t **pending_event_vector; /** per-worker postponed disconnects */ - session_fifo_event_t **pending_disconnects; + session_event_t **pending_disconnects; /** per-worker session context */ session_tx_context_t *ctx; @@ -564,6 +572,15 @@ void session_register_transport (transport_proto_t transport_proto, const transport_proto_vft_t * vft, u8 is_ip4, u32 output_node); +always_inline void +transport_add_tx_event (transport_connection_t * tc) +{ + stream_session_t *s = session_get (tc->s_index, tc->thread_index); + if (svm_fifo_has_event (s->server_tx_fifo)) + return; + session_send_io_evt_to_thread (s->server_tx_fifo, FIFO_EVENT_APP_TX); +} + clib_error_t *vnet_session_enable_disable (vlib_main_t * vm, u8 is_en); always_inline svm_msg_q_t *