22 int verbose = va_arg (*args,
int);
23 session_fifo_event_t _e, *e = &_e;
27 if (verbose > 2 && ss->server_rx_fifo->has_event)
30 s =
format (s,
" session node event: %s\n",
31 found ?
"found" :
"not found");
34 if (verbose > 2 && ss->server_tx_fifo->has_event)
37 s =
format (s,
" session node event: %s\n",
38 found ?
"found" :
"not found");
55 int verbose = va_arg (*args,
int);
61 str =
format (0,
"%-10u%-10u%-10lld",
70 s =
format (s,
"%U", tp_vft->format_connection, ss->connection_index,
71 ss->thread_index, verbose);
79 s =
format (s,
"%-40U%v", tp_vft->format_listener, ss->connection_index,
84 s =
format (s,
"%-40U%v", tp_vft->format_half_open,
85 ss->connection_index, str);
89 clib_warning (
"Session in state: %d!", ss->session_state);
99 u8 *proto = va_arg (*args,
u8 *);
100 ip46_address_t *lcl = va_arg (*args, ip46_address_t *);
101 ip46_address_t *rmt = va_arg (*args, ip46_address_t *);
102 u16 *lcl_port = va_arg (*args,
u16 *);
103 u16 *rmt_port = va_arg (*args,
u16 *);
104 u8 *is_ip4 = va_arg (*args,
u8 *);
107 memset (lcl, 0,
sizeof (*lcl));
108 memset (rmt, 0,
sizeof (*rmt));
140 ip46_address_t lcl, rmt;
141 u32 lcl_port = 0, rmt_port = 0;
142 u8 is_ip4 = 0, s_type = ~0;
145 &lcl_port, &rmt_port, &is_ip4))
151 clib_host_to_net_u16 (lcl_port),
152 clib_host_to_net_u16 (rmt_port), s_type);
155 clib_host_to_net_u16 (lcl_port),
156 clib_host_to_net_u16 (rmt_port), s_type);
169 u32 suggested_proto = va_arg (*args,
u32);
172 ip46_address_t lcl, rmt;
173 u32 lcl_port = 0, rmt_port = 0;
174 u8 is_ip4 = 0, s_type = ~0;
177 &lcl_port, &rmt_port, &is_ip4))
180 proto = (proto == (
u8) ~ 0) ? suggested_proto : proto;
181 if (proto == (
u8) ~ 0)
186 clib_host_to_net_u16 (lcl_port),
187 clib_host_to_net_u16 (rmt_port),
191 clib_host_to_net_u16 (lcl_port),
192 clib_host_to_net_u16 (rmt_port),
211 u8 *str = 0, one_session = 0;
213 if (!smm->is_enabled)
220 if (
unformat (input,
"verbose %d", &verbose))
222 else if (
unformat (input,
"verbose"))
242 pool = smm->sessions[
i];
253 if (once_per_pool && verbose == 1)
255 str =
format (str,
"%-50s%-15s%-10s%-10s%-10s",
256 "Connection",
"State",
"Rx-f",
"Tx-f",
285 .path =
"show session",
286 .short_help =
"show session [verbose [nnn]]",
295 server->cb_fns.session_disconnect_callback (s);
304 u32 thread_index = 0, clear_all = 0;
305 u32 session_index = ~0;
308 if (!smm->is_enabled)
315 if (
unformat (input,
"thread %d", &thread_index))
317 else if (
unformat (input,
"session %d", &session_index))
326 if (!clear_all && session_index == ~0)
329 if (session_index != ~0)
334 session_index, thread_index);
356 .path =
"clear session",
357 .short_help =
"clear session thread <thread> session <index>",
368 u8 is_rx = 0, *str = 0;
406 .path =
"show session fifo trace",
407 .short_help =
"show session fifo trace <session>",
417 u8 is_rx = 0, *str = 0;
453 .path =
"session replay fifo",
454 .short_help =
"session replay fifo <session>",
469 else if (
unformat (input,
"disable"))
483 .short_help =
"session [enable|disable]",
sll srl srl sll sra u16x4 i
struct _transport_connection transport_connection_t
format_function_t format_svm_fifo
transport_connection_t * stream_session_lookup_transport6(ip6_address_t *lcl, ip6_address_t *rmt, u16 lcl_port, u16 rmt_port, u8 proto)
session_manager_main_t session_manager_main
struct _transport_proto_vft transport_proto_vft_t
static clib_error_t * clear_session_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
static u32 svm_fifo_max_enqueue(svm_fifo_t *f)
#define vec_reset_length(v)
Reset vector length to zero NULL-pointer tolerant.
#define pool_foreach(VAR, POOL, BODY)
Iterate through pool.
static u32 svm_fifo_max_dequeue(svm_fifo_t *f)
#define clib_error_return(e, args...)
static clib_error_t * show_session_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
struct _stream_session_t stream_session_t
u8 * format_stream_session(u8 *s, va_list *args)
Format stream session as per the following format.
u8 session_node_lookup_fifo_event(svm_fifo_t *f, session_fifo_event_t *e)
transport_connection_t * stream_session_lookup_transport4(ip4_address_t *lcl, ip4_address_t *rmt, u16 lcl_port, u16 rmt_port, u8 proto)
uword unformat_transport_connection(unformat_input_t *input, va_list *args)
struct _session_manager_main session_manager_main_t
u8 * svm_fifo_replay(u8 *s, svm_fifo_t *f, u8 no_read, u8 verbose)
clib_error_t * vnet_session_enable_disable(vlib_main_t *vm, u8 is_en)
uword unformat_stream_session_id(unformat_input_t *input, va_list *args)
static int clear_session(stream_session_t *s)
static u32 stream_session_get_index(stream_session_t *s)
uword unformat_stream_session(unformat_input_t *input, va_list *args)
#define vec_free(V)
Free vector's memory (no header).
stream_session_t * stream_session_lookup6(ip6_address_t *lcl, ip6_address_t *rmt, u16 lcl_port, u16 rmt_port, u8 proto)
u8 * format_stream_session_fifos(u8 *s, va_list *args)
#define clib_warning(format, args...)
stream_session_t * stream_session_lookup4(ip4_address_t *lcl, ip4_address_t *rmt, u16 lcl_port, u16 rmt_port, u8 proto)
Looks up a session based on the 5-tuple passed as argument.
struct _application application_t
static stream_session_t * stream_session_get_if_valid(u64 si, u32 thread_index)
#define VLIB_CLI_COMMAND(x,...)
session_type_t session_type_from_proto_and_ip(transport_proto_t proto, u8 is_ip4)
u8 * svm_fifo_dump_trace(u8 *s, svm_fifo_t *f)
transport_proto_vft_t * session_get_transport_vft(u8 session_type)
Get transport virtual function table.
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
application_t * application_get(u32 index)
static clib_error_t * session_replay_fifo_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
static clib_error_t * show_session_fifo_trace_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
#define vec_foreach(var, vec)
Vector iterator.
static clib_error_t * session_enable_disable_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
void vlib_cli_output(vlib_main_t *vm, char *fmt,...)
static uword pool_elts(void *v)
Number of active elements in a pool.