![]() |
FD.io VPP
v17.07.01-9-gde08cd6
Vector Packet Processing
|
Include dependency graph for tcp_output.c:Go to the source code of this file.
Data Structures | |
| struct | tcp_tx_trace_t |
Macros | |
| #define | foreach_tcp4_output_next _ (DROP, "error-drop") \ |
| #define | foreach_tcp6_output_next _ (DROP, "error-drop") \ |
| #define | tcp_error(n, s) s, |
| #define | tcp_get_free_buffer_index(tm, bidx) |
| #define | tcp_return_buffer(tm) |
| #define | foreach_tcp4_reset_next |
| #define | foreach_tcp6_reset_next |
Typedefs | |
| typedef enum _tcp_output_nect | tcp_output_next_t |
| typedef enum _tcp_reset_next | tcp_reset_next_t |
Variables | |
| vlib_node_registration_t | tcp4_output_node |
| (constructor) VLIB_REGISTER_NODE (tcp4_output_node) More... | |
| vlib_node_registration_t | tcp6_output_node |
| (constructor) VLIB_REGISTER_NODE (tcp6_output_node) More... | |
| static char * | tcp_error_strings [] |
| u16 | dummy_mtu = 1460 |
| vlib_node_registration_t | tcp4_reset_node |
| (constructor) VLIB_REGISTER_NODE (tcp4_reset_node) More... | |
| vlib_node_registration_t | tcp6_reset_node |
| (constructor) VLIB_REGISTER_NODE (tcp6_reset_node) More... | |
| #define foreach_tcp4_output_next _ (DROP, "error-drop") \ |
Definition at line 28 of file tcp_output.c.
| #define foreach_tcp4_reset_next |
Definition at line 1659 of file tcp_output.c.
| #define foreach_tcp6_output_next _ (DROP, "error-drop") \ |
Definition at line 31 of file tcp_output.c.
| #define foreach_tcp6_reset_next |
Definition at line 1663 of file tcp_output.c.
| #define tcp_error | ( | n, | |
| s | |||
| ) | s, |
| #define tcp_get_free_buffer_index | ( | tm, | |
| bidx | |||
| ) |
Definition at line 427 of file tcp_output.c.
| #define tcp_return_buffer | ( | tm | ) |
Definition at line 448 of file tcp_output.c.
| typedef enum _tcp_output_nect tcp_output_next_t |
| typedef enum _tcp_reset_next tcp_reset_next_t |
|
inlinestatic |
Definition at line 1426 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1668 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
|
static |
|
static |
|
static |
|
inlinestatic |
Definition at line 579 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 843 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_fast_retransmit | ( | tcp_connection_t * | tc | ) |
Do fast retransmit.
Definition at line 1408 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_fast_retransmit_no_sack | ( | tcp_connection_t * | tc | ) |
Fast retransmit without SACK info.
Definition at line 1365 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_fast_retransmit_sack | ( | tcp_connection_t * | tc | ) |
Do fast retransmit with SACKs.
Definition at line 1291 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_init_mss | ( | tcp_connection_t * | tc | ) |
Definition at line 403 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| u32 tcp_initial_window_to_advertise | ( | tcp_connection_t * | tc | ) |
Compute initial window and scale factor.
As per RFC1323, window field in SYN and SYN-ACK segments is never scaled.
Definition at line 88 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
TCP's IW as recommended by RFC6928.
Definition at line 78 of file tcp_output.c.
Here is the caller graph for this function:| void tcp_make_ack | ( | tcp_connection_t * | tc, |
| vlib_buffer_t * | b | ||
| ) |
Convert buffer to ACK.
Definition at line 503 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_make_ack_i | ( | tcp_connection_t * | tc, |
| vlib_buffer_t * | b, | ||
| tcp_state_t | state, | ||
| u8 | flags | ||
| ) |
Prepare ACK.
Definition at line 478 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 323 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_make_fin | ( | tcp_connection_t * | tc, |
| vlib_buffer_t * | b | ||
| ) |
Convert buffer to FIN-ACK.
Definition at line 518 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 354 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int tcp_make_reset_in_place | ( | vlib_main_t * | vm, |
| vlib_buffer_t * | b0, | ||
| tcp_state_t | state, | ||
| u8 | thread_index, | ||
| u8 | is_ip4 | ||
| ) |
Definition at line 603 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
|
inlinestatic |
Definition at line 259 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_make_synack | ( | tcp_connection_t * | tc, |
| vlib_buffer_t * | b | ||
| ) |
Convert buffer to SYN-ACK.
Definition at line 538 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 288 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| u32 tcp_options_write | ( | u8 * | data, |
| tcp_options_t * | opts | ||
| ) |
Write TCP options to segment.
Definition at line 176 of file tcp_output.c.
Here is the caller graph for this function:| u32 tcp_prepare_retransmit_segment | ( | tcp_connection_t * | tc, |
| vlib_buffer_t * | b, | ||
| u32 | offset, | ||
| u32 | max_bytes | ||
| ) |
Build a retransmit segment.
Definition at line 989 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Push TCP header and update connection variables.
Definition at line 910 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| u32 tcp_push_header | ( | transport_connection_t * | tconn, |
| vlib_buffer_t * | b | ||
| ) |
Definition at line 1637 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_push_ip_hdr | ( | tcp_main_t * | tm, |
| tcp_connection_t * | tc, | ||
| vlib_buffer_t * | b | ||
| ) |
Definition at line 757 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_retransmit_first_unacked | ( | tcp_connection_t * | tc | ) |
Retransmit first unacked segment.
Definition at line 1258 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 457 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Reset congestion control, switch cwnd to loss window and try again.
Definition at line 1039 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_send_ack | ( | tcp_connection_t * | tc | ) |
Definition at line 954 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_send_fin | ( | tcp_connection_t * | tc | ) |
Send FIN.
Definition at line 866 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_send_reset | ( | vlib_buffer_t * | pkt, |
| u8 | is_ip4 | ||
| ) |
Send reset without reusing existing buffer.
Definition at line 684 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_send_syn | ( | tcp_connection_t * | tc | ) |
Send SYN.
Builds a SYN packet for a half-open connection and sends it to ipx_lookup. The packet is not forwarded through tcpx_output to avoid doing lookups in the half_open pool.
Definition at line 789 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 1418 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_timer_delack_handler | ( | u32 | index | ) |
| void tcp_timer_persist_handler | ( | u32 | index | ) |
Got 0 snd_wnd from peer, try to do something about it.
Definition at line 1195 of file tcp_output.c.
Here is the call graph for this function:| void tcp_timer_retransmit_handler | ( | u32 | index | ) |
Definition at line 1057 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_timer_retransmit_syn_handler | ( | u32 | index | ) |
| void tcp_update_rcv_mss | ( | tcp_connection_t * | tc | ) |
Update max segment size we're able to process.
The value is constrained by our interface's MTU and IP options. It is also what we advertise to our peer.
Definition at line 379 of file tcp_output.c.
Here is the caller graph for this function:| void tcp_update_rcv_wnd | ( | tcp_connection_t * | tc | ) |
Definition at line 127 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_update_snd_mss | ( | tcp_connection_t * | tc | ) |
Update snd_mss to reflect the effective segment size that we can send by taking into account all TCP options, including SACKs.
Definition at line 390 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| u32 tcp_window_to_advertise | ( | tcp_connection_t * | tc, |
| tcp_state_t | state | ||
| ) |
Compute and return window to advertise, scaled as per RFC1323.
Definition at line 107 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| VLIB_NODE_FUNCTION_MULTIARCH | ( | tcp4_output_node | , |
| tcp4_output | |||
| ) |
| VLIB_NODE_FUNCTION_MULTIARCH | ( | tcp6_output_node | , |
| tcp6_output | |||
| ) |
| VLIB_NODE_FUNCTION_MULTIARCH | ( | tcp4_reset_node | , |
| tcp4_send_reset | |||
| ) |
| VLIB_NODE_FUNCTION_MULTIARCH | ( | tcp6_reset_node | , |
| tcp6_send_reset | |||
| ) |
| u16 dummy_mtu = 1460 |
Definition at line 46 of file tcp_output.c.
| vlib_node_registration_t tcp4_output_node |
(constructor) VLIB_REGISTER_NODE (tcp4_output_node)
Definition at line 19 of file tcp_output.c.
| vlib_node_registration_t tcp4_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp4_reset_node)
Definition at line 1751 of file tcp_output.c.
| vlib_node_registration_t tcp6_output_node |
(constructor) VLIB_REGISTER_NODE (tcp6_output_node)
Definition at line 20 of file tcp_output.c.
| vlib_node_registration_t tcp6_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp6_reset_node)
Definition at line 1770 of file tcp_output.c.
|
static |
Definition at line 34 of file tcp_output.c.