X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fsession.h;h=babb002e07e5a8437c0724a4c5cc7aa09d9dd2c1;hb=refs%2Fchanges%2F28%2F17028%2F3;hp=cf1b3e99f4defd5d4d321166c990da36e5292c51;hpb=30e79c2e388a98160a3660f4f03103890c9b1b7c;p=vpp.git diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h index cf1b3e99f4d..babb002e07e 100644 --- a/src/vnet/session/session.h +++ b/src/vnet/session/session.h @@ -176,20 +176,6 @@ typedef struct session_tx_context_ session_dgram_hdr_t hdr; } session_tx_context_t; -/* Forward definition */ -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_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_event_t * e); - typedef struct session_manager_worker_ { CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); @@ -237,7 +223,18 @@ typedef struct session_manager_worker_ } session_manager_worker_t; -struct _session_manager_main +typedef int (session_fifo_rx_fn) (vlib_main_t * vm, + vlib_node_runtime_t * node, + session_manager_worker_t * wrk, + session_event_t * e, 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_event_t * e); + +typedef struct session_manager_main_ { /** Worker contexts */ session_manager_worker_t *wrk; @@ -297,7 +294,7 @@ struct _session_manager_main f64 *last_event_poll_by_thread; #endif -}; +} session_manager_main_t; extern session_manager_main_t session_manager_main; extern vlib_node_registration_t session_queue_node; @@ -448,7 +445,12 @@ session_type_from_proto_and_ip (transport_proto_t proto, u8 is_ip4) always_inline u64 session_segment_handle (stream_session_t * s) { - svm_fifo_t *f = s->server_rx_fifo; + svm_fifo_t *f; + + if (s->session_state == SESSION_STATE_LISTENING) + return SESSION_INVALID_HANDLE; + + f = s->server_rx_fifo; return segment_manager_make_segment_handle (f->segment_manager, f->segment_index); }