|
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 void | tcp_cc_init (tcp_connection_t *tc) |
|
static void | tcp_cc_cleanup (tcp_connection_t *tc) |
|
void | tcp_cc_algo_register (tcp_cc_algorithm_type_e type, const tcp_cc_algorithm_t *vft) |
| Register exiting cc algo type. More...
|
|
tcp_cc_algorithm_t * | tcp_cc_algo_get (tcp_cc_algorithm_type_e type) |
|
tcp_cc_algorithm_type_e | tcp_cc_algo_new_type (const tcp_cc_algorithm_t *vft) |
| Register new cc algo type. More...
|
|
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_t * | tcp_session_get_listener (u32 listener_index) |
|
static void | tcp_half_open_connection_free (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_t * | tcp_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_t * | tcp_connection_alloc (u8 thread_index) |
|
tcp_connection_t * | tcp_connection_alloc_w_base (u8 thread_index, tcp_connection_t *base) |
|
void | tcp_connection_free (tcp_connection_t *tc) |
|
void | tcp_program_cleanup (tcp_worker_ctx_t *wrk, tcp_connection_t *tc) |
|
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) |
|
static void | tcp_session_cleanup_ho (u32 conn_index) |
|
static void | tcp_session_reset (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 u32 | tcp_generate_random_iss (tcp_connection_t *tc) |
| Generate random iss as per rfc6528. More...
|
|
static void | tcp_init_rcv_mss (tcp_connection_t *tc) |
| Initialize max segment size we're able to process. More...
|
|
static void | tcp_init_mss (tcp_connection_t *tc) |
|
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) |
|
static u8 * | format_tcp_session (u8 *s, va_list *args) |
|
static u8 * | format_tcp_listener_session (u8 *s, va_list *args) |
|
static u8 * | format_tcp_half_open_session (u8 *s, va_list *args) |
|
static transport_connection_t * | tcp_session_get_transport (u32 conn_index, u32 thread_index) |
|
static transport_connection_t * | tcp_half_open_session_get_transport (u32 conn_index) |
|
static u16 | tcp_session_cal_goal_size (tcp_connection_t *tc) |
|
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 int | tcp_session_send_params (transport_connection_t *trans_conn, transport_send_params_t *sp) |
|
static void | tcp_timer_waitclose_handler (tcp_connection_t *tc) |
|
static void | tcp_dispatch_pending_timers (tcp_worker_ctx_t *wrk) |
|
static void | tcp_handle_cleanups (tcp_worker_ctx_t *wrk, clib_time_type_t now) |
|
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) |
|
void | tcp_reschedule (tcp_connection_t *tc) |
|
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_t * | tcp_main_enable (vlib_main_t *vm) |
|
clib_error_t * | vnet_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 void | tcp_configuration_init (void) |
| Initialize default values for tcp parameters. More...
|
|
static clib_error_t * | tcp_init (vlib_main_t *vm) |
|
TCP host stack utilities.
Definition in file tcp.c.
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 360 of file tcp.c.
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 704 of file tcp.c.