![]() |
FD.io VPP
v18.07-rc0-415-g6c78436
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 |
| #define | foreach_tcp6_output_next |
| #define | tcp_error(n, s) s, |
| #define | foreach_tcp4_reset_next |
| #define | foreach_tcp6_reset_next |
Typedefs | |
| typedef enum _tcp_output_next | 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 |
Definition at line 32 of file tcp_output.c.
| #define foreach_tcp4_reset_next |
Definition at line 2054 of file tcp_output.c.
| #define foreach_tcp6_output_next |
Definition at line 38 of file tcp_output.c.
| #define foreach_tcp6_reset_next |
Definition at line 2058 of file tcp_output.c.
| #define tcp_error | ( | n, | |
| s | |||
| ) | s, |
| typedef enum _tcp_output_next tcp_output_next_t |
| typedef enum _tcp_reset_next tcp_reset_next_t |
|
inlinestatic |
Definition at line 1915 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 1820 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 2063 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 |
|
static |
Definition at line 448 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 677 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 633 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 670 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 720 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 686 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 726 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 1772 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 1735 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 1652 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Flush ip lookup tx frames populated by timer pops.
Definition at line 1026 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_flush_frame_to_output | ( | vlib_main_t * | vm, |
| u8 | thread_index, | ||
| u8 | is_ip4 | ||
| ) |
Flush tx frame populated by retransmits and timer pops.
Definition at line 1009 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_flush_frames_to_output | ( | u8 | thread_index | ) |
Flush v4 and v6 tcp and ip-lookup tx frames for thread index.
Definition at line 1044 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 465 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 503 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 423 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 119 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
TCP's initial window.
Definition at line 100 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 545 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Prepare ACK.
Definition at line 520 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 354 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 560 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 385 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 733 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
| void tcp_make_syn | ( | tcp_connection_t * | tc, |
| vlib_buffer_t * | b | ||
| ) |
Convert buffer to SYN.
Definition at line 578 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 290 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 603 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 319 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Write TCP options to segment.
Definition at line 207 of file tcp_output.c.
Here is the caller graph for this function:
|
static |
Definition at line 1788 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 1871 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 1843 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Build a retransmit segment.
Definition at line 1221 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Push TCP header and update connection variables.
Definition at line 1118 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 | ( | tcp_connection_t * | tc, |
| vlib_buffer_t * | b | ||
| ) |
Definition at line 1157 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 942 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 1629 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 487 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 1361 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 1179 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 1057 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 | ( | tcp_connection_t * | tc | ) |
Build and set reset packet for connection.
Definition at line 896 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_w_pkt | ( | tcp_connection_t * | tc, |
| vlib_buffer_t * | pkt, | ||
| u8 | is_ip4 | ||
| ) |
Send reset without reusing existing buffer.
It extracts connection info out of original packet
Definition at line 817 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 973 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 1781 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 | ) |
Delayed ack timer handler.
Sends delayed ACK when timer expires
Definition at line 1204 of file tcp_output.c.
Here is the call graph for this function:| void tcp_timer_persist_handler | ( | u32 | index | ) |
Got 0 snd_wnd from peer, try to do something about it.
Definition at line 1553 of file tcp_output.c.
Here is the call graph for this function:| void tcp_timer_retransmit_handler | ( | u32 | index | ) |
Definition at line 1382 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 90 of file tcp_output.c.
Here is the caller graph for this function:
|
static |
Definition at line 135 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 410 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Compute and return window to advertise, scaled as per RFC1323.
Definition at line 184 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 56 of file tcp_output.c.
| vlib_node_registration_t tcp4_output_node |
(constructor) VLIB_REGISTER_NODE (tcp4_output_node)
Definition at line 20 of file tcp_output.c.
| vlib_node_registration_t tcp4_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp4_reset_node)
Definition at line 2146 of file tcp_output.c.
| vlib_node_registration_t tcp6_output_node |
(constructor) VLIB_REGISTER_NODE (tcp6_output_node)
Definition at line 21 of file tcp_output.c.
| vlib_node_registration_t tcp6_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp6_reset_node)
Definition at line 2165 of file tcp_output.c.
|
static |
Definition at line 44 of file tcp_output.c.