FD.io VPP  v19.04.2-12-g66b1689
Vector Packet Processing
tcp.c File Reference

TCP host stack utilities. More...

+ Include dependency graph for tcp.c:

Go to the source code of this file.

Data Structures

struct  tcp_add_del_adj_args_t
 

Functions

static void tcp_add_del_adj_cb (tcp_add_del_adj_args_t *args)
 
static void tcp_add_del_adjacency (tcp_connection_t *tc, u8 is_add)
 
static u32 tcp_connection_bind (u32 session_index, transport_endpoint_t *lcl)
 
static u32 tcp_session_bind (u32 session_index, transport_endpoint_t *tep)
 
static void tcp_connection_unbind (u32 listener_index)
 
static u32 tcp_session_unbind (u32 listener_index)
 
static transport_connection_ttcp_session_get_listener (u32 listener_index)
 
static void tcp_half_open_connection_del (tcp_connection_t *tc)
 Cleanup half-open connection. More...
 
int tcp_half_open_connection_cleanup (tcp_connection_t *tc)
 Try to cleanup half-open connection. More...
 
static tcp_connection_ttcp_half_open_connection_new (void)
 
void tcp_connection_cleanup (tcp_connection_t *tc)
 Cleans up connection state. More...
 
void tcp_connection_del (tcp_connection_t *tc)
 Connection removal. More...
 
tcp_connection_ttcp_connection_alloc (u8 thread_index)
 
void tcp_connection_free (tcp_connection_t *tc)
 
void tcp_connection_reset (tcp_connection_t *tc)
 Notify session that connection has been reset. More...
 
void tcp_connection_close (tcp_connection_t *tc)
 Begin connection closing procedure. More...
 
static void tcp_session_close (u32 conn_index, u32 thread_index)
 
static void tcp_session_cleanup (u32 conn_index, u32 thread_index)
 
void tcp_connection_timers_init (tcp_connection_t *tc)
 Initialize all connection timers as invalid. More...
 
void tcp_connection_timers_reset (tcp_connection_t *tc)
 Stop all connection timers. More...
 
static void tcp_cc_init (tcp_connection_t *tc)
 
void tcp_cc_algo_register (tcp_cc_algorithm_type_e type, const tcp_cc_algorithm_t *vft)
 
tcp_cc_algorithm_ttcp_cc_algo_get (tcp_cc_algorithm_type_e type)
 
static u32 tcp_generate_random_iss (tcp_connection_t *tc)
 Generate random iss as per rfc6528. More...
 
void tcp_init_snd_vars (tcp_connection_t *tc)
 Initialize connection send variables. More...
 
void tcp_enable_pacing (tcp_connection_t *tc)
 
void tcp_connection_init_vars (tcp_connection_t *tc)
 Initialize tcp connection variables. More...
 
static int tcp_alloc_custom_local_endpoint (tcp_main_t *tm, ip46_address_t *lcl_addr, u16 *lcl_port, u8 is_ip4)
 
static int tcp_session_open (transport_endpoint_cfg_t *rmt)
 
u8format_tcp_state (u8 *s, va_list *args)
 
static u8format_tcp_connection_flags (u8 *s, va_list *args)
 
static u8format_tcp_timers (u8 *s, va_list *args)
 
static u8format_tcp_congestion_status (u8 *s, va_list *args)
 
static i32 tcp_rcv_wnd_available (tcp_connection_t *tc)
 
static u8format_tcp_congestion (u8 *s, va_list *args)
 
static u8format_tcp_vars (u8 *s, va_list *args)
 
static u8format_tcp_connection_id (u8 *s, va_list *args)
 
u8format_tcp_connection (u8 *s, va_list *args)
 
static u8format_tcp_session (u8 *s, va_list *args)
 
static u8format_tcp_listener_session (u8 *s, va_list *args)
 
static u8format_tcp_half_open_session (u8 *s, va_list *args)
 
u8format_tcp_sacks (u8 *s, va_list *args)
 
u8format_tcp_rcv_sacks (u8 *s, va_list *args)
 
static u8format_tcp_sack_hole (u8 *s, va_list *args)
 
u8format_tcp_scoreboard (u8 *s, va_list *args)
 
static transport_connection_ttcp_session_get_transport (u32 conn_index, u32 thread_index)
 
static transport_connection_ttcp_half_open_session_get_transport (u32 conn_index)
 
static u16 tcp_session_send_mss (transport_connection_t *trans_conn)
 Compute maximum segment size for session layer. More...
 
static u32 tcp_round_snd_space (tcp_connection_t *tc, u32 snd_space)
 
static u32 tcp_snd_space_inline (tcp_connection_t *tc)
 Compute tx window session is allowed to fill. More...
 
u32 tcp_snd_space (tcp_connection_t *tc)
 
static u32 tcp_session_send_space (transport_connection_t *trans_conn)
 
static u32 tcp_session_tx_fifo_offset (transport_connection_t *trans_conn)
 
static void tcp_update_time (f64 now, u8 thread_index)
 
static void tcp_session_flush_data (transport_connection_t *tconn)
 
void tcp_connection_tx_pacer_update (tcp_connection_t *tc)
 
void tcp_connection_tx_pacer_reset (tcp_connection_t *tc, u32 window, u32 start_bucket)
 
static void tcp_timer_keep_handler (u32 conn_index)
 
static void tcp_timer_establish_handler (u32 conn_index)
 
static void tcp_timer_establish_ao_handler (u32 conn_index)
 
static void tcp_timer_waitclose_handler (u32 conn_index)
 
static void tcp_expired_timers_dispatch (u32 *expired_timers)
 
static void tcp_initialize_timer_wheels (tcp_main_t *tm)
 
static void tcp_initialize_iss_seed (tcp_main_t *tm)
 
static clib_error_ttcp_main_enable (vlib_main_t *vm)
 
clib_error_tvnet_tcp_enable_disable (vlib_main_t *vm, u8 is_en)
 
void tcp_punt_unknown (vlib_main_t *vm, u8 is_ip4, u8 is_add)
 
static clib_error_ttcp_init (vlib_main_t *vm)
 
uword unformat_tcp_cc_algo (unformat_input_t *input, va_list *va)
 
uword unformat_tcp_cc_algo_cfg (unformat_input_t *input, va_list *va)
 
static clib_error_ttcp_config_fn (vlib_main_t *vm, unformat_input_t *input)
 
int tcp_configure_v4_source_address_range (vlib_main_t *vm, ip4_address_t *start, ip4_address_t *end, u32 table_id)
 Configure an ipv4 source address range. More...
 
int tcp_configure_v6_source_address_range (vlib_main_t *vm, ip6_address_t *start, ip6_address_t *end, u32 table_id)
 Configure an ipv6 source address range. More...
 
static clib_error_ttcp_src_address (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd_arg)
 
static u8tcp_scoreboard_dump_trace (u8 *s, sack_scoreboard_t *sb)
 
static clib_error_ttcp_show_scoreboard_trace_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd_arg)
 
u8tcp_scoreboard_replay (u8 *s, tcp_connection_t *tc, u8 verbose)
 
static clib_error_ttcp_scoreboard_trace_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd_arg)
 
static clib_error_tshow_tcp_punt_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd_arg)
 

Variables

tcp_main_t tcp_main
 
const char * tcp_dbg_evt_str []
 
const char * tcp_fsm_states []
 
const char * tcp_connection_flags_str []
 
const char * tcp_conn_timers []
 
static const transport_proto_vft_t tcp_proto
 
static timer_expiration_handlertimer_expiration_handlers [TCP_N_TIMERS]
 
static vlib_cli_command_t tcp_src_address_command
 (constructor) VLIB_CLI_COMMAND (tcp_src_address_command) More...
 
static vlib_cli_command_t tcp_show_scoreboard_trace_command
 (constructor) VLIB_CLI_COMMAND (tcp_show_scoreboard_trace_command) More...
 
static vlib_cli_command_t tcp_replay_scoreboard_command
 (constructor) VLIB_CLI_COMMAND (tcp_replay_scoreboard_command) More...
 
static vlib_cli_command_t show_tcp_punt_command
 (constructor) VLIB_CLI_COMMAND (show_tcp_punt_command) More...
 

Detailed Description

TCP host stack utilities.

Definition in file tcp.c.

Function Documentation

static u8* format_tcp_congestion ( u8 s,
va_list *  args 
)
static

Definition at line 824 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8* format_tcp_congestion_status ( u8 s,
va_list *  args 
)
static

Definition at line 805 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_tcp_connection ( u8 s,
va_list *  args 
)

Definition at line 906 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8* format_tcp_connection_flags ( u8 s,
va_list *  args 
)
static

Definition at line 758 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8* format_tcp_connection_id ( u8 s,
va_list *  args 
)
static

Definition at line 882 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8* format_tcp_half_open_session ( u8 s,
va_list *  args 
)
static

Definition at line 953 of file tcp.c.

+ Here is the call graph for this function:

static u8* format_tcp_listener_session ( u8 s,
va_list *  args 
)
static

Definition at line 941 of file tcp.c.

+ Here is the call graph for this function:

u8* format_tcp_rcv_sacks ( u8 s,
va_list *  args 
)

Definition at line 985 of file tcp.c.

+ Here is the call graph for this function:

static u8* format_tcp_sack_hole ( u8 s,
va_list *  args 
)
static

Definition at line 1009 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_tcp_sacks ( u8 s,
va_list *  args 
)

Definition at line 961 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_tcp_scoreboard ( u8 s,
va_list *  args 
)

Definition at line 1021 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8* format_tcp_session ( u8 s,
va_list *  args 
)
static

Definition at line 925 of file tcp.c.

+ Here is the call graph for this function:

u8* format_tcp_state ( u8 s,
va_list *  args 
)

Definition at line 740 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8* format_tcp_timers ( u8 s,
va_list *  args 
)
static

Definition at line 783 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8* format_tcp_vars ( u8 s,
va_list *  args 
)
static

Definition at line 842 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* show_tcp_punt_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd_arg 
)
static

Definition at line 2089 of file tcp.c.

+ Here is the call graph for this function:

static void tcp_add_del_adj_cb ( tcp_add_del_adj_args_t args)
static

Definition at line 41 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void tcp_add_del_adjacency ( tcp_connection_t tc,
u8  is_add 
)
static

Definition at line 59 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int tcp_alloc_custom_local_endpoint ( tcp_main_t tm,
ip46_address_t *  lcl_addr,
u16 lcl_port,
u8  is_ip4 
)
static

Definition at line 651 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

tcp_cc_algorithm_t* tcp_cc_algo_get ( tcp_cc_algorithm_type_e  type)

Definition at line 567 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_cc_algo_register ( tcp_cc_algorithm_type_e  type,
const tcp_cc_algorithm_t vft 
)

Definition at line 556 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void tcp_cc_init ( tcp_connection_t tc)
static

Definition at line 549 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* tcp_config_fn ( vlib_main_t vm,
unformat_input_t input 
)
static

Definition at line 1602 of file tcp.c.

+ Here is the call graph for this function:

int tcp_configure_v4_source_address_range ( vlib_main_t vm,
ip4_address_t start,
ip4_address_t end,
u32  table_id 
)

Configure an ipv4 source address range.

Parameters
vmvlib_main_t pointer
startfirst ipv4 address in the source address range
endlast ipv4 address in the source address range
table_idVRF / table ID, 0 for the default FIB
Returns
0 if all OK, else an error indication from api_errno.h

Definition at line 1649 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int tcp_configure_v6_source_address_range ( vlib_main_t vm,
ip6_address_t start,
ip6_address_t end,
u32  table_id 
)

Configure an ipv6 source address range.

Parameters
vmvlib_main_t pointer
startfirst ipv6 address in the source address range
endlast ipv6 address in the source address range
table_idVRF / table ID, 0 for the default FIB
Returns
0 if all OK, else an error indication from api_errno.h

Definition at line 1741 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

tcp_connection_t* tcp_connection_alloc ( u8  thread_index)

Definition at line 253 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 tcp_connection_bind ( u32  session_index,
transport_endpoint_t lcl 
)
static

Definition at line 73 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_connection_cleanup ( tcp_connection_t tc)

Cleans up connection state.

No notifications.

Definition at line 199 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_connection_close ( tcp_connection_t tc)

Begin connection closing procedure.

If at the end the connection is not in CLOSED state, it is not removed. Instead, we rely on on TCP to advance through state machine to either 1) LAST_ACK (passive close) whereby when the last ACK is received tcp_connection_del is called. This notifies session of the delete and calls cleanup. 2) TIME_WAIT (active close) whereby after 2MSL the 2MSL timer triggers and cleanup is called.

N.B. Half-close connections are not supported

Definition at line 340 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_connection_del ( tcp_connection_t tc)

Connection removal.

This should be called only once connection enters CLOSED state. Note that it notifies the session of the removal event, so if the goal is to just remove the connection, call tcp_connection_cleanup instead.

Definition at line 246 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_connection_free ( tcp_connection_t tc)

Definition at line 266 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_connection_init_vars ( tcp_connection_t tc)

Initialize tcp connection variables.

Should be called after having received a msg from the peer, i.e., a SYN or a SYNACK, such that connection options have already been exchanged.

Definition at line 631 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_connection_reset ( tcp_connection_t tc)

Notify session that connection has been reset.

Switch state to closed and wait for session to call cleanup.

Definition at line 284 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_connection_timers_init ( tcp_connection_t tc)

Initialize all connection timers as invalid.

Definition at line 425 of file tcp.c.

+ Here is the caller graph for this function:

void tcp_connection_timers_reset ( tcp_connection_t tc)

Stop all connection timers.

Definition at line 442 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_connection_tx_pacer_reset ( tcp_connection_t tc,
u32  window,
u32  start_bucket 
)

Definition at line 1229 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_connection_tx_pacer_update ( tcp_connection_t tc)

Definition at line 1213 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void tcp_connection_unbind ( u32  listener_index)
static

Definition at line 113 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_enable_pacing ( tcp_connection_t tc)

Definition at line 616 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void tcp_expired_timers_dispatch ( u32 expired_timers)
static

Definition at line 1372 of file tcp.c.

+ Here is the caller graph for this function:

static u32 tcp_generate_random_iss ( tcp_connection_t tc)
static

Generate random iss as per rfc6528.

Definition at line 577 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int tcp_half_open_connection_cleanup ( tcp_connection_t tc)

Try to cleanup half-open connection.

If called from a thread that doesn't own tc, the call won't have any effect.

Parameters
tc- connection to be cleaned up
Returns
non-zero if cleanup failed.

Definition at line 170 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void tcp_half_open_connection_del ( tcp_connection_t tc)
static

Cleanup half-open connection.

Definition at line 150 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static tcp_connection_t* tcp_half_open_connection_new ( void  )
static

Definition at line 182 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static transport_connection_t* tcp_half_open_session_get_transport ( u32  conn_index)
static

Definition at line 1060 of file tcp.c.

+ Here is the call graph for this function:

static clib_error_t* tcp_init ( vlib_main_t vm)
static

Definition at line 1526 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_init_snd_vars ( tcp_connection_t tc)

Initialize connection send variables.

Definition at line 598 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void tcp_initialize_iss_seed ( tcp_main_t tm)
static

Definition at line 1405 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void tcp_initialize_timer_wheels ( tcp_main_t tm)
static

Definition at line 1391 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* tcp_main_enable ( vlib_main_t vm)
static

Definition at line 1415 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void tcp_punt_unknown ( vlib_main_t vm,
u8  is_ip4,
u8  is_add 
)

Definition at line 1516 of file tcp.c.

+ Here is the caller graph for this function:

static i32 tcp_rcv_wnd_available ( tcp_connection_t tc)
static

Definition at line 818 of file tcp.c.

+ Here is the caller graph for this function:

static u32 tcp_round_snd_space ( tcp_connection_t tc,
u32  snd_space 
)
inlinestatic

Definition at line 1087 of file tcp.c.

+ Here is the caller graph for this function:

static u8* tcp_scoreboard_dump_trace ( u8 s,
sack_scoreboard_t sb 
)
static

Definition at line 1902 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* tcp_scoreboard_replay ( u8 s,
tcp_connection_t tc,
u8  verbose 
)

Definition at line 1965 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* tcp_scoreboard_trace_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd_arg 
)
static

Definition at line 2046 of file tcp.c.

+ Here is the call graph for this function:

static u32 tcp_session_bind ( u32  session_index,
transport_endpoint_t tep 
)
static

Definition at line 107 of file tcp.c.

+ Here is the call graph for this function:

static void tcp_session_cleanup ( u32  conn_index,
u32  thread_index 
)
static

Definition at line 413 of file tcp.c.

+ Here is the call graph for this function:

static void tcp_session_close ( u32  conn_index,
u32  thread_index 
)
static

Definition at line 405 of file tcp.c.

+ Here is the call graph for this function:

static void tcp_session_flush_data ( transport_connection_t tconn)
static

Definition at line 1178 of file tcp.c.

+ Here is the call graph for this function:

static transport_connection_t* tcp_session_get_listener ( u32  listener_index)
static

Definition at line 137 of file tcp.c.

+ Here is the call graph for this function:

static transport_connection_t* tcp_session_get_transport ( u32  conn_index,
u32  thread_index 
)
static

Definition at line 1053 of file tcp.c.

+ Here is the call graph for this function:

static int tcp_session_open ( transport_endpoint_cfg_t rmt)
static

Definition at line 681 of file tcp.c.

+ Here is the call graph for this function:

static u16 tcp_session_send_mss ( transport_connection_t trans_conn)
static

Compute maximum segment size for session layer.

Since the result needs to be the actual data length, it first computes the tcp options to be used in the next burst and subtracts their length from the connection's snd_mss.

Definition at line 1074 of file tcp.c.

+ Here is the call graph for this function:

static u32 tcp_session_send_space ( transport_connection_t trans_conn)
static

Definition at line 1147 of file tcp.c.

+ Here is the call graph for this function:

static u32 tcp_session_tx_fifo_offset ( transport_connection_t trans_conn)
static

Definition at line 1155 of file tcp.c.

static u32 tcp_session_unbind ( u32  listener_index)
static

Definition at line 130 of file tcp.c.

+ Here is the call graph for this function:

static clib_error_t* tcp_show_scoreboard_trace_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd_arg 
)
static

Definition at line 1927 of file tcp.c.

+ Here is the call graph for this function:

u32 tcp_snd_space ( tcp_connection_t tc)

Definition at line 1141 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 tcp_snd_space_inline ( tcp_connection_t tc)
inlinestatic

Compute tx window session is allowed to fill.

Takes into account available send space, snd_mss and the congestion state of the connection. If possible, the value returned is a multiple of snd_mss.

Parameters
tctcp connection
Returns
number of bytes session is allowed to write

Definition at line 1114 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* tcp_src_address ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd_arg 
)
static

Definition at line 1814 of file tcp.c.

+ Here is the call graph for this function:

static void tcp_timer_establish_ao_handler ( u32  conn_index)
static

Definition at line 1271 of file tcp.c.

+ Here is the call graph for this function:

static void tcp_timer_establish_handler ( u32  conn_index)
static

Definition at line 1252 of file tcp.c.

+ Here is the call graph for this function:

static void tcp_timer_keep_handler ( u32  conn_index)
static

Definition at line 1240 of file tcp.c.

+ Here is the call graph for this function:

static void tcp_timer_waitclose_handler ( u32  conn_index)
static

Definition at line 1289 of file tcp.c.

+ Here is the call graph for this function:

static void tcp_update_time ( f64  now,
u8  thread_index 
)
static

Definition at line 1166 of file tcp.c.

+ Here is the call graph for this function:

uword unformat_tcp_cc_algo ( unformat_input_t input,
va_list *  va 
)

Definition at line 1559 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uword unformat_tcp_cc_algo_cfg ( unformat_input_t input,
va_list *  va 
)

Definition at line 1579 of file tcp.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* vnet_tcp_enable_disable ( vlib_main_t vm,
u8  is_en 
)

Definition at line 1498 of file tcp.c.

+ Here is the call graph for this function:

Variable Documentation

vlib_cli_command_t show_tcp_punt_command
static
Initial value:
=
{
.path = "show tcp punt",
.short_help = "show tcp punt",
.function = show_tcp_punt_fn,
}
static clib_error_t * show_tcp_punt_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd_arg)
Definition: tcp.c:2089

(constructor) VLIB_CLI_COMMAND (show_tcp_punt_command)

Definition at line 2103 of file tcp.c.

const char* tcp_conn_timers[]
Initial value:
= {
#define _(sym, str)
}
#define foreach_tcp_timer
TCP timers.
Definition: tcp.h:70

Definition at line 776 of file tcp.c.

const char* tcp_connection_flags_str[]
Initial value:
= {
#define _(sym, str)
}
#define foreach_tcp_connection_flag
TCP connection flags.
Definition: tcp.h:117

Definition at line 751 of file tcp.c.

const char* tcp_dbg_evt_str[]
Initial value:
= {
#define _(sym, str)
}

Definition at line 727 of file tcp.c.

const char* tcp_fsm_states[]
Initial value:
= {
#define _(sym, str)
}
#define foreach_tcp_fsm_state
TCP FSM state definitions as per RFC793.
Definition: tcp.h:43

Definition at line 733 of file tcp.c.

tcp_main_t tcp_main

Definition at line 29 of file tcp.c.

const transport_proto_vft_t tcp_proto
static
Initial value:
= {
.start_listen = tcp_session_bind,
.stop_listen = tcp_session_unbind,
.push_header = tcp_session_push_header,
.get_connection = tcp_session_get_transport,
.get_listener = tcp_session_get_listener,
.connect = tcp_session_open,
.cleanup = tcp_session_cleanup,
.send_mss = tcp_session_send_mss,
.send_space = tcp_session_send_space,
.update_time = tcp_update_time,
.tx_fifo_offset = tcp_session_tx_fifo_offset,
.flush_data = tcp_session_flush_data,
.format_connection = format_tcp_session,
.format_listener = format_tcp_listener_session,
.format_half_open = format_tcp_half_open_session,
.tx_type = TRANSPORT_TX_PEEK,
.service_type = TRANSPORT_SERVICE_VC,
}
static void tcp_session_close(u32 conn_index, u32 thread_index)
Definition: tcp.c:405
static u8 * format_tcp_listener_session(u8 *s, va_list *args)
Definition: tcp.c:941
static u32 tcp_session_send_space(transport_connection_t *trans_conn)
Definition: tcp.c:1147
static transport_connection_t * tcp_half_open_session_get_transport(u32 conn_index)
Definition: tcp.c:1060
static u32 tcp_session_tx_fifo_offset(transport_connection_t *trans_conn)
Definition: tcp.c:1155
u32 tcp_session_push_header(transport_connection_t *tconn, vlib_buffer_t *b)
Definition: tcp_output.c:1129
static u16 tcp_session_send_mss(transport_connection_t *trans_conn)
Compute maximum segment size for session layer.
Definition: tcp.c:1074
static u32 tcp_session_unbind(u32 listener_index)
Definition: tcp.c:130
static transport_connection_t * tcp_session_get_transport(u32 conn_index, u32 thread_index)
Definition: tcp.c:1053
static transport_connection_t * tcp_session_get_listener(u32 listener_index)
Definition: tcp.c:137
static void tcp_session_cleanup(u32 conn_index, u32 thread_index)
Definition: tcp.c:413
clib_error_t * vnet_tcp_enable_disable(vlib_main_t *vm, u8 is_en)
Definition: tcp.c:1498
virtual circuit service
static void tcp_session_flush_data(transport_connection_t *tconn)
Definition: tcp.c:1178
static int tcp_session_open(transport_endpoint_cfg_t *rmt)
Definition: tcp.c:681
reliable transport protos
static u32 tcp_session_bind(u32 session_index, transport_endpoint_t *tep)
Definition: tcp.c:107
static u8 * format_tcp_session(u8 *s, va_list *args)
Definition: tcp.c:925
static u8 * format_tcp_half_open_session(u8 *s, va_list *args)
Definition: tcp.c:953
static void tcp_update_time(f64 now, u8 thread_index)
Definition: tcp.c:1166

Definition at line 1188 of file tcp.c.

vlib_cli_command_t tcp_replay_scoreboard_command
static
Initial value:
=
{
.path = "tcp replay scoreboard",
.short_help = "tcp replay scoreboard <connection>",
}
static clib_error_t * tcp_scoreboard_trace_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd_arg)
Definition: tcp.c:2046

(constructor) VLIB_CLI_COMMAND (tcp_replay_scoreboard_command)

Definition at line 2080 of file tcp.c.

vlib_cli_command_t tcp_show_scoreboard_trace_command
static
Initial value:
=
{
.path = "show tcp scoreboard trace",
.short_help = "show tcp scoreboard trace <connection>",
}
static clib_error_t * tcp_show_scoreboard_trace_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd_arg)
Definition: tcp.c:1927

(constructor) VLIB_CLI_COMMAND (tcp_show_scoreboard_trace_command)

Definition at line 1956 of file tcp.c.

vlib_cli_command_t tcp_src_address_command
static
Initial value:
=
{
.path = "tcp src-address",
.short_help = "tcp src-address <ip-addr> [- <ip-addr>] add src address range",
.function = tcp_src_address,
}
static clib_error_t * tcp_src_address(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd_arg)
Definition: tcp.c:1814

(constructor) VLIB_CLI_COMMAND (tcp_src_address_command)

Definition at line 1893 of file tcp.c.

timer_expiration_handler* timer_expiration_handlers[TCP_N_TIMERS]
static
Initial value:
=
{
}
static void tcp_timer_establish_handler(u32 conn_index)
Definition: tcp.c:1252
timer_expiration_handler tcp_timer_retransmit_handler
timer_expiration_handler tcp_timer_retransmit_syn_handler
timer_expiration_handler tcp_timer_persist_handler
static void tcp_timer_waitclose_handler(u32 conn_index)
Definition: tcp.c:1289
static void tcp_timer_keep_handler(u32 conn_index)
Definition: tcp.c:1240
static void tcp_timer_establish_ao_handler(u32 conn_index)
Definition: tcp.c:1271
timer_expiration_handler tcp_timer_delack_handler

Definition at line 1358 of file tcp.c.