FD.io VPP  v17.07.01-10-g3be13f0
Vector Packet Processing
tcp_output.c File Reference
+ 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
 

Functions

u8format_tcp_tx_trace (u8 *s, va_list *args)
 
static u8 tcp_window_compute_scale (u32 available_space)
 
static u32 tcp_initial_wnd_unscaled (tcp_connection_t *tc)
 TCP's IW as recommended by RFC6928. More...
 
u32 tcp_initial_window_to_advertise (tcp_connection_t *tc)
 Compute initial window and scale factor. More...
 
u32 tcp_window_to_advertise (tcp_connection_t *tc, tcp_state_t state)
 Compute and return window to advertise, scaled as per RFC1323. More...
 
void tcp_update_rcv_wnd (tcp_connection_t *tc)
 
u32 tcp_options_write (u8 *data, tcp_options_t *opts)
 Write TCP options to segment. More...
 
static int tcp_make_syn_options (tcp_options_t *opts, u8 wnd_scale)
 
static int tcp_make_synack_options (tcp_connection_t *tc, tcp_options_t *opts)
 
static int tcp_make_established_options (tcp_connection_t *tc, tcp_options_t *opts)
 
static int tcp_make_options (tcp_connection_t *tc, tcp_options_t *opts, tcp_state_t state)
 
void tcp_update_rcv_mss (tcp_connection_t *tc)
 Update max segment size we're able to process. More...
 
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. More...
 
void tcp_init_mss (tcp_connection_t *tc)
 
static void tcp_reuse_buffer (vlib_main_t *vm, vlib_buffer_t *b)
 
void tcp_make_ack_i (tcp_connection_t *tc, vlib_buffer_t *b, tcp_state_t state, u8 flags)
 Prepare ACK. More...
 
void tcp_make_ack (tcp_connection_t *tc, vlib_buffer_t *b)
 Convert buffer to ACK. More...
 
void tcp_make_fin (tcp_connection_t *tc, vlib_buffer_t *b)
 Convert buffer to FIN-ACK. More...
 
void tcp_make_synack (tcp_connection_t *tc, vlib_buffer_t *b)
 Convert buffer to SYN-ACK. More...
 
static void tcp_enqueue_to_ip_lookup (vlib_main_t *vm, vlib_buffer_t *b, u32 bi, u8 is_ip4)
 
int tcp_make_reset_in_place (vlib_main_t *vm, vlib_buffer_t *b0, tcp_state_t state, u8 thread_index, u8 is_ip4)
 
void tcp_send_reset (vlib_buffer_t *pkt, u8 is_ip4)
 Send reset without reusing existing buffer. More...
 
void tcp_push_ip_hdr (tcp_main_t *tm, tcp_connection_t *tc, vlib_buffer_t *b)
 
void tcp_send_syn (tcp_connection_t *tc)
 Send SYN. More...
 
static void tcp_enqueue_to_output (vlib_main_t *vm, vlib_buffer_t *b, u32 bi, u8 is_ip4)
 
void tcp_send_fin (tcp_connection_t *tc)
 Send FIN. More...
 
static u8 tcp_make_state_flags (tcp_state_t next_state)
 
static void tcp_push_hdr_i (tcp_connection_t *tc, vlib_buffer_t *b, tcp_state_t next_state, u8 compute_opts)
 Push TCP header and update connection variables. More...
 
void tcp_send_ack (tcp_connection_t *tc)
 
void tcp_timer_delack_handler (u32 index)
 
u32 tcp_prepare_retransmit_segment (tcp_connection_t *tc, vlib_buffer_t *b, u32 offset, u32 max_bytes)
 Build a retransmit segment. More...
 
static void tcp_rtx_timeout_cc (tcp_connection_t *tc)
 Reset congestion control, switch cwnd to loss window and try again. More...
 
static void tcp_timer_retransmit_handler_i (u32 index, u8 is_syn)
 
void tcp_timer_retransmit_handler (u32 index)
 
void tcp_timer_retransmit_syn_handler (u32 index)
 
void tcp_timer_persist_handler (u32 index)
 Got 0 snd_wnd from peer, try to do something about it. More...
 
void tcp_retransmit_first_unacked (tcp_connection_t *tc)
 Retransmit first unacked segment. More...
 
void tcp_fast_retransmit_sack (tcp_connection_t *tc)
 Do fast retransmit with SACKs. More...
 
void tcp_fast_retransmit_no_sack (tcp_connection_t *tc)
 Fast retransmit without SACK info. More...
 
void tcp_fast_retransmit (tcp_connection_t *tc)
 Do fast retransmit. More...
 
static u32 tcp_session_has_ooo_data (tcp_connection_t *tc)
 
static uword tcp46_output_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, int is_ip4)
 
static uword tcp4_output (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static uword tcp6_output (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
 VLIB_NODE_FUNCTION_MULTIARCH (tcp4_output_node, tcp4_output)
 
 VLIB_NODE_FUNCTION_MULTIARCH (tcp6_output_node, tcp6_output)
 
u32 tcp_push_header (transport_connection_t *tconn, vlib_buffer_t *b)
 
static uword tcp46_send_reset_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, u8 is_ip4)
 
static uword tcp4_send_reset (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static uword tcp6_send_reset (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
 VLIB_NODE_FUNCTION_MULTIARCH (tcp4_reset_node, tcp4_send_reset)
 
 VLIB_NODE_FUNCTION_MULTIARCH (tcp6_reset_node, tcp6_send_reset)
 

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...
 

Macro Definition Documentation

#define foreach_tcp4_output_next   _ (DROP, "error-drop") \

Definition at line 28 of file tcp_output.c.

#define foreach_tcp4_reset_next
Value:
_(DROP, "error-drop") \
_(IP_LOOKUP, "ip4-lookup")
DROP
Definition: error.def:41

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
Value:
_(DROP, "error-drop") \
_(IP_LOOKUP, "ip6-lookup")
DROP
Definition: error.def:41

Definition at line 1663 of file tcp_output.c.

#define tcp_error (   n,
 
)    s,
#define tcp_get_free_buffer_index (   tm,
  bidx 
)
Value:
do { \
u32 *my_tx_buffers, n_free_buffers; \
u32 thread_index = vlib_get_thread_index(); \
my_tx_buffers = tm->tx_buffers[thread_index]; \
if (PREDICT_FALSE(vec_len (my_tx_buffers) == 0)) \
{ \
n_free_buffers = 32; /* TODO config or macro */ \
vec_validate (my_tx_buffers, n_free_buffers - 1); \
_vec_len(my_tx_buffers) = vlib_buffer_alloc_from_free_list ( \
tm->vlib_main, my_tx_buffers, n_free_buffers, \
tm->tx_buffers[thread_index] = my_tx_buffers; \
} \
/* buffer shortage */ \
if (PREDICT_FALSE (vec_len (my_tx_buffers) == 0)) \
return; \
*bidx = my_tx_buffers[_vec_len (my_tx_buffers)-1]; \
_vec_len (my_tx_buffers) -= 1; \
} while (0)
#define vec_validate(V, I)
Make sure vector is long enough for given index (no header, unspecified alignment) ...
Definition: vec.h:436
#define VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX
Definition: buffer.h:402
#define PREDICT_FALSE(x)
Definition: clib.h:97
static_always_inline uword vlib_get_thread_index(void)
Definition: threads.h:185
static u32 vlib_buffer_alloc_from_free_list(vlib_main_t *vm, u32 *buffers, u32 n_buffers, u32 free_list_index)
Allocate buffers from specific freelist into supplied array.
Definition: buffer_funcs.h:269
unsigned int u32
Definition: types.h:88
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)

Definition at line 427 of file tcp_output.c.

#define tcp_return_buffer (   tm)
Value:
do { \
u32 *my_tx_buffers; \
u32 thread_index = vlib_get_thread_index(); \
my_tx_buffers = tm->tx_buffers[thread_index]; \
_vec_len (my_tx_buffers) +=1; \
} while (0)
static_always_inline uword vlib_get_thread_index(void)
Definition: threads.h:185
unsigned int u32
Definition: types.h:88

Definition at line 448 of file tcp_output.c.

Typedef Documentation

typedef enum _tcp_output_nect tcp_output_next_t
typedef enum _tcp_reset_next tcp_reset_next_t

Function Documentation

u8* format_tcp_tx_trace ( u8 s,
va_list *  args 
)

Definition at line 49 of file tcp_output.c.

+ Here is the call graph for this function:

static uword tcp46_output_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame,
int  is_ip4 
)
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 uword tcp46_send_reset_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame,
u8  is_ip4 
)
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 uword tcp4_output ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Definition at line 1580 of file tcp_output.c.

+ Here is the call graph for this function:

static uword tcp4_send_reset ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Definition at line 1737 of file tcp_output.c.

+ Here is the call graph for this function:

static uword tcp6_output ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Definition at line 1587 of file tcp_output.c.

+ Here is the call graph for this function:

static uword tcp6_send_reset ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)
static

Definition at line 1744 of file tcp_output.c.

+ Here is the call graph for this function:

static void tcp_enqueue_to_ip_lookup ( vlib_main_t vm,
vlib_buffer_t b,
u32  bi,
u8  is_ip4 
)
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:

static void tcp_enqueue_to_output ( vlib_main_t vm,
vlib_buffer_t b,
u32  bi,
u8  is_ip4 
)
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:

static u32 tcp_initial_wnd_unscaled ( tcp_connection_t tc)
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:

static int tcp_make_established_options ( tcp_connection_t tc,
tcp_options_t opts 
)
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:

static int tcp_make_options ( tcp_connection_t tc,
tcp_options_t opts,
tcp_state_t  state 
)
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:

static u8 tcp_make_state_flags ( tcp_state_t  next_state)
inlinestatic

Definition at line 887 of file tcp_output.c.

+ Here is the caller graph for this function:

static int tcp_make_syn_options ( tcp_options_t opts,
u8  wnd_scale 
)
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:

static int tcp_make_synack_options ( tcp_connection_t tc,
tcp_options_t opts 
)
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.

Returns
the number of bytes in the segment or 0 if there's nothing to retransmit

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 void tcp_push_hdr_i ( tcp_connection_t tc,
vlib_buffer_t b,
tcp_state_t  next_state,
u8  compute_opts 
)
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:

static void tcp_reuse_buffer ( vlib_main_t vm,
vlib_buffer_t b 
)
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 void tcp_rtx_timeout_cc ( tcp_connection_t tc)
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:

static u32 tcp_session_has_ooo_data ( tcp_connection_t tc)
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)

Definition at line 973 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 1195 of file tcp_output.c.

+ Here is the call graph for this function:

void tcp_timer_retransmit_handler ( u32  index)

Definition at line 1179 of file tcp_output.c.

+ Here is the call graph for this function:

static void tcp_timer_retransmit_handler_i ( u32  index,
u8  is_syn 
)
static

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)

Definition at line 1185 of file tcp_output.c.

+ Here is the call graph for this function:

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:

static u8 tcp_window_compute_scale ( u32  available_space)
static

Definition at line 65 of file tcp_output.c.

+ 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   
)

Variable Documentation

u16 dummy_mtu = 1460

Definition at line 46 of file tcp_output.c.

vlib_node_registration_t tcp4_output_node
Initial value:
=
{
.function = tcp4_output,.name = "tcp4-output",
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
.error_strings = tcp_error_strings,
.n_next_nodes = TCP_OUTPUT_N_NEXT,
.next_nodes = {
#define _(s,n)
},
.format_buffer = format_tcp_header,
.format_trace = format_tcp_tx_trace,
}
u8 * format_tcp_tx_trace(u8 *s, va_list *args)
Definition: tcp_output.c:49
#define foreach_tcp4_output_next
Definition: tcp_output.c:28
format_function_t format_tcp_header
Definition: format.h:102
unsigned int u32
Definition: types.h:88
static char * tcp_error_strings[]
Definition: tcp_output.c:34
static uword tcp4_output(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: tcp_output.c:1580

(constructor) VLIB_REGISTER_NODE (tcp4_output_node)

Definition at line 19 of file tcp_output.c.

vlib_node_registration_t tcp4_reset_node
Initial value:
= {
.function = tcp4_send_reset,
.name = "tcp4-reset",
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
.error_strings = tcp_error_strings,
.n_next_nodes = TCP_RESET_N_NEXT,
.next_nodes = {
#define _(s,n)
},
.format_trace = format_tcp_tx_trace,
}
static uword tcp4_send_reset(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: tcp_output.c:1737
#define foreach_tcp4_reset_next
Definition: tcp_output.c:1659
u8 * format_tcp_tx_trace(u8 *s, va_list *args)
Definition: tcp_output.c:49
unsigned int u32
Definition: types.h:88
static char * tcp_error_strings[]
Definition: tcp_output.c:34

(constructor) VLIB_REGISTER_NODE (tcp4_reset_node)

Definition at line 1751 of file tcp_output.c.

vlib_node_registration_t tcp6_output_node
Initial value:
=
{
.function = tcp6_output,
.name = "tcp6-output",
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
.error_strings = tcp_error_strings,
.n_next_nodes = TCP_OUTPUT_N_NEXT,
.next_nodes = {
#define _(s,n)
},
.format_buffer = format_tcp_header,
.format_trace = format_tcp_tx_trace,
}
u8 * format_tcp_tx_trace(u8 *s, va_list *args)
Definition: tcp_output.c:49
#define foreach_tcp6_output_next
Definition: tcp_output.c:31
format_function_t format_tcp_header
Definition: format.h:102
unsigned int u32
Definition: types.h:88
static uword tcp6_output(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: tcp_output.c:1587
static char * tcp_error_strings[]
Definition: tcp_output.c:34

(constructor) VLIB_REGISTER_NODE (tcp6_output_node)

Definition at line 20 of file tcp_output.c.

vlib_node_registration_t tcp6_reset_node
Initial value:
= {
.function = tcp6_send_reset,
.name = "tcp6-reset",
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
.error_strings = tcp_error_strings,
.n_next_nodes = TCP_RESET_N_NEXT,
.next_nodes = {
#define _(s,n)
},
.format_trace = format_tcp_tx_trace,
}
u8 * format_tcp_tx_trace(u8 *s, va_list *args)
Definition: tcp_output.c:49
unsigned int u32
Definition: types.h:88
static uword tcp6_send_reset(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: tcp_output.c:1744
#define foreach_tcp6_reset_next
Definition: tcp_output.c:1663
static char * tcp_error_strings[]
Definition: tcp_output.c:34

(constructor) VLIB_REGISTER_NODE (tcp6_reset_node)

Definition at line 1770 of file tcp_output.c.

char* tcp_error_strings[]
static
Initial value:
= {
#define tcp_error(n,s)
}

Definition at line 34 of file tcp_output.c.