FD.io VPP  v18.07-rc0-415-g6c78436
Vector Packet Processing
sctp_input.c File Reference
+ Include dependency graph for sctp_input.c:

Go to the source code of this file.

Data Structures

struct  sctp_rx_trace_t
 

Macros

#define sctp_error(n, s)   s,
 
#define foreach_sctp_state_next
 
#define foreach_sctp4_input_next
 
#define foreach_sctp6_input_next
 
#define sctp_next_output(is_ip4)
 
#define sctp_next_drop(is_ip4)
 

Typedefs

typedef enum _sctp_established_phase_next sctp_established_phase_next_t
 
typedef enum _sctp_rcv_phase_next sctp_rcv_phase_next_t
 
typedef enum _sctp_listen_phase_next sctp_listen_phase_next_t
 
typedef enum _sctp_shutdown_phase_next sctp_shutdown_phase_next_t
 
typedef enum _sctp_state_next sctp_state_next_t
 
typedef enum _sctp_input_next sctp_input_next_t
 

Functions

char * phase_to_string (u8 phase)
 
static u8 sctp_lookup_is_valid (transport_connection_t *trans_conn, sctp_header_t *sctp_hdr)
 
static sctp_connection_tsctp_lookup_connection (u32 fib_index, vlib_buffer_t *b, u8 thread_index, u8 is_ip4)
 Lookup transport connection. More...
 
void sctp_set_rx_trace_data (sctp_rx_trace_t *rx_trace, sctp_connection_t *sctp_conn, sctp_header_t *sctp_hdr, vlib_buffer_t *b0, u8 is_ip4)
 
static u16 sctp_calculate_implied_length (ip4_header_t *ip4_hdr, ip6_header_t *ip6_hdr, int is_ip4)
 
static u8 sctp_is_bundling (u16 sctp_implied_length, sctp_chunks_common_hdr_t *sctp_common_hdr)
 
static u16 sctp_handle_operation_err (sctp_header_t *sctp_hdr, sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b, u16 *next0)
 
static u16 sctp_handle_init (sctp_header_t *sctp_hdr, sctp_chunks_common_hdr_t *sctp_chunk_hdr, sctp_connection_t *sctp_conn, vlib_buffer_t *b0, u16 sctp_implied_length)
 
static u16 sctp_is_valid_init_ack (sctp_header_t *sctp_hdr, sctp_chunks_common_hdr_t *sctp_chunk_hdr, sctp_connection_t *sctp_conn, vlib_buffer_t *b0, u16 sctp_implied_length)
 
static u16 sctp_handle_init_ack (sctp_header_t *sctp_hdr, sctp_chunks_common_hdr_t *sctp_chunk_hdr, sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b0, u16 sctp_implied_length)
 
static int sctp_session_enqueue_data_ooo (sctp_connection_t *sctp_conn, vlib_buffer_t *b, u16 data_len, u8 conn_idx)
 Enqueue data out-of-order for delivery to application. More...
 
static int sctp_session_enqueue_data (sctp_connection_t *sctp_conn, vlib_buffer_t *b, u16 data_len, u8 conn_idx)
 Enqueue data for delivery to application. More...
 
static u8 sctp_is_sack_delayable (sctp_connection_t *sctp_conn, u8 idx, u8 is_gapping)
 
static void sctp_is_connection_gapping (sctp_connection_t *sctp_conn, u32 tsn, u8 *gapping)
 
static u16 sctp_handle_data (sctp_payload_data_chunk_t *sctp_data_chunk, sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b, u16 *next0)
 
static u16 sctp_handle_cookie_echo (sctp_header_t *sctp_hdr, sctp_chunks_common_hdr_t *sctp_chunk_hdr, sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b0, u16 *next0)
 
static u16 sctp_handle_cookie_ack (sctp_header_t *sctp_hdr, sctp_chunks_common_hdr_t *sctp_chunk_hdr, sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b0, u16 *next0)
 
static uword sctp46_rcv_phase_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, int is_ip4)
 
static uword sctp4_rcv_phase (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static uword sctp6_rcv_phase (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
u8format_sctp_rx_trace_short (u8 *s, va_list *args)
 
 VLIB_NODE_FUNCTION_MULTIARCH (sctp4_rcv_phase_node, sctp4_rcv_phase)
 
 VLIB_NODE_FUNCTION_MULTIARCH (sctp6_init_phase_node, sctp6_rcv_phase)
 
static u16 sctp_handle_shutdown (sctp_header_t *sctp_hdr, sctp_chunks_common_hdr_t *sctp_chunk_hdr, sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b0, u16 sctp_implied_length, u16 *next0)
 
static u16 sctp_handle_shutdown_ack (sctp_header_t *sctp_hdr, sctp_chunks_common_hdr_t *sctp_chunk_hdr, sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b0, u16 sctp_implied_length, u16 *next0)
 
static u16 sctp_handle_shutdown_complete (sctp_header_t *sctp_hdr, sctp_chunks_common_hdr_t *sctp_chunk_hdr, sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b0, u16 sctp_implied_length, u16 *next0)
 
static uword sctp46_shutdown_phase_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, int is_ip4)
 
static uword sctp4_shutdown_phase (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static uword sctp6_shutdown_phase (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
 VLIB_NODE_FUNCTION_MULTIARCH (sctp4_shutdown_phase_node, sctp4_shutdown_phase)
 
 VLIB_NODE_FUNCTION_MULTIARCH (sctp6_shutdown_phase_node, sctp6_shutdown_phase)
 
static u16 sctp_handle_sack (sctp_selective_ack_chunk_t *sack_chunk, sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b0, u16 *next0)
 
static u16 sctp_handle_heartbeat (sctp_hb_req_chunk_t *sctp_hb_chunk, sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b0, u16 *next0)
 
static u16 sctp_handle_heartbeat_ack (sctp_hb_ack_chunk_t *sctp_hb_ack_chunk, sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b0, u16 *next0)
 
static void sctp_node_inc_counter (vlib_main_t *vm, u32 sctp4_node, u32 sctp6_node, u8 is_ip4, u8 evt, u8 val)
 
static uword sctp46_listen_process_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, int is_ip4)
 
static uword sctp4_listen_phase (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static uword sctp6_listen_phase (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static uword sctp46_established_phase_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, int is_ip4)
 
static uword sctp4_established_phase (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static uword sctp6_established_phase (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
u8format_sctp_rx_trace (u8 *s, va_list *args)
 
 VLIB_NODE_FUNCTION_MULTIARCH (sctp4_listen_phase_node, sctp4_listen_phase)
 
 VLIB_NODE_FUNCTION_MULTIARCH (sctp6_listen_phase_node, sctp6_listen_phase)
 
 VLIB_NODE_FUNCTION_MULTIARCH (sctp4_established_phase_node, sctp4_established_phase)
 
 VLIB_NODE_FUNCTION_MULTIARCH (sctp6_established_phase_node, sctp6_established_phase)
 
static uword sctp46_input_dispatcher (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, int is_ip4)
 
static uword sctp4_input_dispatcher (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static uword sctp6_input_dispatcher (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
 VLIB_NODE_FUNCTION_MULTIARCH (sctp4_input_node, sctp4_input_dispatcher)
 
 VLIB_NODE_FUNCTION_MULTIARCH (sctp6_input_node, sctp6_input_dispatcher)
 
static void sctp_dispatch_table_init (sctp_main_t *tm)
 
clib_error_tsctp_input_init (vlib_main_t *vm)
 

Variables

static char * sctp_error_strings []
 
vlib_node_registration_t sctp4_rcv_phase_node
 (constructor) VLIB_REGISTER_NODE (sctp4_rcv_phase_node) More...
 
vlib_node_registration_t sctp6_init_phase_node
 (constructor) VLIB_REGISTER_NODE (sctp6_init_phase_node) More...
 
vlib_node_registration_t sctp4_shutdown_phase_node
 (constructor) VLIB_REGISTER_NODE (sctp4_shutdown_phase_node) More...
 
vlib_node_registration_t sctp6_shutdown_phase_node
 (constructor) VLIB_REGISTER_NODE (sctp6_shutdown_phase_node) More...
 
vlib_node_registration_t sctp4_listen_phase_node
 (constructor) VLIB_REGISTER_NODE (sctp4_listen_phase_node) More...
 
vlib_node_registration_t sctp6_listen_phase_node
 (constructor) VLIB_REGISTER_NODE (sctp6_listen_phase_node) More...
 
vlib_node_registration_t sctp4_established_phase_node
 (constructor) VLIB_REGISTER_NODE (sctp4_established_phase_node) More...
 
vlib_node_registration_t sctp6_established_phase_node
 (constructor) VLIB_REGISTER_NODE (sctp6_established_phase_node) More...
 
vlib_node_registration_t sctp4_input_node
 (constructor) VLIB_REGISTER_NODE (sctp4_input_node) More...
 
vlib_node_registration_t sctp6_input_node
 (constructor) VLIB_REGISTER_NODE (sctp6_input_node) More...
 

Macro Definition Documentation

#define foreach_sctp4_input_next
Value:
_ (DROP, "error-drop") \
_ (RCV_PHASE, "sctp4-rcv") \
_ (LISTEN_PHASE, "sctp4-listen") \
_ (ESTABLISHED_PHASE, "sctp4-established") \
_ (SHUTDOWN_PHASE, "sctp4-shutdown") \
_ (PUNT_PHASE, "ip4-punt")
DROP
Definition: error.def:41

Definition at line 108 of file sctp_input.c.

#define foreach_sctp6_input_next
Value:
_ (DROP, "error-drop") \
_ (RCV_PHASE, "sctp6-rcv") \
_ (LISTEN_PHASE, "sctp6-listen") \
_ (ESTABLISHED_PHASE, "sctp6-established") \
_ (SHUTDOWN_PHASE, "sctp6-shutdown") \
_ (PUNT_PHASE, "ip6-punt")
DROP
Definition: error.def:41

Definition at line 117 of file sctp_input.c.

#define foreach_sctp_state_next
Value:
_ (DROP4, "ip4-drop") \
_ (DROP6, "ip6-drop") \
_ (SCTP4_OUTPUT, "sctp4-output") \
_ (SCTP6_OUTPUT, "sctp6-output")

Definition at line 29 of file sctp_input.c.

#define sctp_error (   n,
 
)    s,
#define sctp_next_drop (   is_ip4)
Value:
(is_ip4 ? SCTP_NEXT_DROP4 \
: SCTP_NEXT_DROP6)

Definition at line 237 of file sctp_input.c.

#define sctp_next_output (   is_ip4)
Value:
(is_ip4 ? SCTP_NEXT_SCTP4_OUTPUT \
: SCTP_NEXT_SCTP6_OUTPUT)

Definition at line 234 of file sctp_input.c.

Typedef Documentation

typedef enum _sctp_established_phase_next sctp_established_phase_next_t
typedef enum _sctp_input_next sctp_input_next_t
typedef enum _sctp_listen_phase_next sctp_listen_phase_next_t
typedef enum _sctp_rcv_phase_next sctp_rcv_phase_next_t
typedef enum _sctp_shutdown_phase_next sctp_shutdown_phase_next_t
typedef enum _sctp_state_next sctp_state_next_t

Function Documentation

u8* format_sctp_rx_trace ( u8 s,
va_list *  args 
)

Definition at line 1969 of file sctp_input.c.

+ Here is the call graph for this function:

u8* format_sctp_rx_trace_short ( u8 s,
va_list *  args 
)

Definition at line 1109 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

char* phase_to_string ( u8  phase)

Definition at line 88 of file sctp_input.c.

+ Here is the caller graph for this function:

static uword sctp46_established_phase_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame,
int  is_ip4 
)
inlinestatic

Definition at line 1801 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword sctp46_input_dispatcher ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame,
int  is_ip4 
)
inlinestatic

Definition at line 2080 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword sctp46_listen_process_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame,
int  is_ip4 
)
inlinestatic

Definition at line 1598 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword sctp46_rcv_phase_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame,
int  is_ip4 
)
inlinestatic

Definition at line 925 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword sctp46_shutdown_phase_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame,
int  is_ip4 
)
inlinestatic

Definition at line 1280 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1953 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 2267 of file sctp_input.c.

+ Here is the call graph for this function:

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

Definition at line 1787 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1095 of file sctp_input.c.

+ Here is the call graph for this function:

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

Definition at line 1445 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1961 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 2274 of file sctp_input.c.

+ Here is the call graph for this function:

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

Definition at line 1794 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1102 of file sctp_input.c.

+ Here is the call graph for this function:

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

Definition at line 1452 of file sctp_input.c.

+ Here is the call graph for this function:

static u16 sctp_calculate_implied_length ( ip4_header_t ip4_hdr,
ip6_header_t ip6_hdr,
int  is_ip4 
)
inlinestatic

Definition at line 260 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void sctp_dispatch_table_init ( sctp_main_t tm)
static

Definition at line 2330 of file sctp_input.c.

+ Here is the caller graph for this function:

static u16 sctp_handle_cookie_ack ( sctp_header_t sctp_hdr,
sctp_chunks_common_hdr_t sctp_chunk_hdr,
sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b0,
u16 next0 
)
inlinestatic

Definition at line 895 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_handle_cookie_echo ( sctp_header_t sctp_hdr,
sctp_chunks_common_hdr_t sctp_chunk_hdr,
sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b0,
u16 next0 
)
inlinestatic

Definition at line 849 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_handle_data ( sctp_payload_data_chunk_t sctp_data_chunk,
sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b,
u16 next0 
)
inlinestatic

Definition at line 770 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_handle_heartbeat ( sctp_hb_req_chunk_t sctp_hb_chunk,
sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b0,
u16 next0 
)
inlinestatic

Definition at line 1550 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_handle_heartbeat_ack ( sctp_hb_ack_chunk_t sctp_hb_ack_chunk,
sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b0,
u16 next0 
)
inlinestatic

Definition at line 1568 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_handle_init ( sctp_header_t sctp_hdr,
sctp_chunks_common_hdr_t sctp_chunk_hdr,
sctp_connection_t sctp_conn,
vlib_buffer_t b0,
u16  sctp_implied_length 
)
inlinestatic

Definition at line 316 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_handle_init_ack ( sctp_header_t sctp_hdr,
sctp_chunks_common_hdr_t sctp_chunk_hdr,
sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b0,
u16  sctp_implied_length 
)
inlinestatic

Definition at line 488 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_handle_operation_err ( sctp_header_t sctp_hdr,
sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b,
u16 next0 
)
inlinestatic

Definition at line 286 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_handle_sack ( sctp_selective_ack_chunk_t sack_chunk,
sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b0,
u16 next0 
)
inlinestatic

Definition at line 1511 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_handle_shutdown ( sctp_header_t sctp_hdr,
sctp_chunks_common_hdr_t sctp_chunk_hdr,
sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b0,
u16  sctp_implied_length,
u16 next0 
)
inlinestatic

Definition at line 1171 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_handle_shutdown_ack ( sctp_header_t sctp_hdr,
sctp_chunks_common_hdr_t sctp_chunk_hdr,
sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b0,
u16  sctp_implied_length,
u16 next0 
)
inlinestatic

Definition at line 1211 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_handle_shutdown_complete ( sctp_header_t sctp_hdr,
sctp_chunks_common_hdr_t sctp_chunk_hdr,
sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b0,
u16  sctp_implied_length,
u16 next0 
)
inlinestatic

Definition at line 1247 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* sctp_input_init ( vlib_main_t vm)

Definition at line 2517 of file sctp_input.c.

+ Here is the call graph for this function:

static u8 sctp_is_bundling ( u16  sctp_implied_length,
sctp_chunks_common_hdr_t sctp_common_hdr 
)
inlinestatic

Definition at line 276 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void sctp_is_connection_gapping ( sctp_connection_t sctp_conn,
u32  tsn,
u8 gapping 
)
inlinestatic

Definition at line 754 of file sctp_input.c.

+ Here is the caller graph for this function:

static u8 sctp_is_sack_delayable ( sctp_connection_t sctp_conn,
u8  idx,
u8  is_gapping 
)
inlinestatic

Definition at line 717 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u16 sctp_is_valid_init_ack ( sctp_header_t sctp_hdr,
sctp_chunks_common_hdr_t sctp_chunk_hdr,
sctp_connection_t sctp_conn,
vlib_buffer_t b0,
u16  sctp_implied_length 
)
inlinestatic

Definition at line 464 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static sctp_connection_t* sctp_lookup_connection ( u32  fib_index,
vlib_buffer_t b,
u8  thread_index,
u8  is_ip4 
)
static

Lookup transport connection.

Definition at line 146 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8 sctp_lookup_is_valid ( transport_connection_t trans_conn,
sctp_header_t sctp_hdr 
)
static

Definition at line 126 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void sctp_node_inc_counter ( vlib_main_t vm,
u32  sctp4_node,
u32  sctp6_node,
u8  is_ip4,
u8  evt,
u8  val 
)
inlinestatic

Definition at line 1585 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int sctp_session_enqueue_data ( sctp_connection_t sctp_conn,
vlib_buffer_t b,
u16  data_len,
u8  conn_idx 
)
inlinestatic

Enqueue data for delivery to application.

Definition at line 665 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int sctp_session_enqueue_data_ooo ( sctp_connection_t sctp_conn,
vlib_buffer_t b,
u16  data_len,
u8  conn_idx 
)
inlinestatic

Enqueue data out-of-order for delivery to application.

Definition at line 610 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void sctp_set_rx_trace_data ( sctp_rx_trace_t rx_trace,
sctp_connection_t sctp_conn,
sctp_header_t sctp_hdr,
vlib_buffer_t b0,
u8  is_ip4 
)

Definition at line 241 of file sctp_input.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( sctp4_rcv_phase_node  ,
sctp4_rcv_phase   
)

+ Here is the caller graph for this function:

VLIB_NODE_FUNCTION_MULTIARCH ( sctp6_init_phase_node  ,
sctp6_rcv_phase   
)
VLIB_NODE_FUNCTION_MULTIARCH ( sctp4_shutdown_phase_node  ,
sctp4_shutdown_phase   
)
VLIB_NODE_FUNCTION_MULTIARCH ( sctp6_shutdown_phase_node  ,
sctp6_shutdown_phase   
)
VLIB_NODE_FUNCTION_MULTIARCH ( sctp4_listen_phase_node  ,
sctp4_listen_phase   
)
VLIB_NODE_FUNCTION_MULTIARCH ( sctp6_listen_phase_node  ,
sctp6_listen_phase   
)
VLIB_NODE_FUNCTION_MULTIARCH ( sctp4_established_phase_node  ,
sctp4_established_phase   
)
VLIB_NODE_FUNCTION_MULTIARCH ( sctp6_established_phase_node  ,
sctp6_established_phase   
)
VLIB_NODE_FUNCTION_MULTIARCH ( sctp4_input_node  ,
sctp4_input_dispatcher   
)
VLIB_NODE_FUNCTION_MULTIARCH ( sctp6_input_node  ,
sctp6_input_dispatcher   
)

Variable Documentation

vlib_node_registration_t sctp4_established_phase_node
Initial value:
=
{
.name = "sctp4-established",
.vector_size = sizeof (u32),
.n_errors = SCTP_N_ERROR,
.error_strings = sctp_error_strings,
.next_nodes =
{
#define _(s,n)
},
.format_trace = format_sctp_rx_trace_short,
}
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1109
static uword sctp4_established_phase(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: sctp_input.c:1953
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp4_established_phase_node)

Definition at line 1507 of file sctp_input.c.

vlib_node_registration_t sctp4_input_node
Initial value:
=
{
.name = "sctp4-input",
.vector_size = sizeof (u32),
.n_errors = SCTP_N_ERROR,
.error_strings = sctp_error_strings,
.n_next_nodes = SCTP_INPUT_N_NEXT,
.next_nodes =
{
#define _(s,n)
},
.format_buffer = format_sctp_header,
.format_trace = format_sctp_rx_trace,
}
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
static uword sctp4_input_dispatcher(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: sctp_input.c:2267
#define foreach_sctp4_input_next
Definition: sctp_input.c:108
format_function_t format_sctp_header
Definition: format.h:107
u8 * format_sctp_rx_trace(u8 *s, va_list *args)
Definition: sctp_input.c:1969

(constructor) VLIB_REGISTER_NODE (sctp4_input_node)

Definition at line 2281 of file sctp_input.c.

vlib_node_registration_t sctp4_listen_phase_node
Initial value:
=
{
.function = sctp4_listen_phase,
.name = "sctp4-listen",
.vector_size = sizeof (u32),
.n_errors = SCTP_N_ERROR,
.error_strings = sctp_error_strings,
.n_next_nodes = SCTP_LISTEN_PHASE_N_NEXT,
.next_nodes =
{
#define _(s,n)
},
.format_trace = format_sctp_rx_trace_short,
}
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
static uword sctp4_listen_phase(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: sctp_input.c:1787
u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1109
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp4_listen_phase_node)

Definition at line 1504 of file sctp_input.c.

vlib_node_registration_t sctp4_rcv_phase_node
Initial value:
=
{
.function = sctp4_rcv_phase,
.name = "sctp4-rcv",
.vector_size = sizeof (u32),
.n_errors = SCTP_N_ERROR,
.error_strings = sctp_error_strings,
.n_next_nodes = SCTP_RCV_PHASE_N_NEXT,
.next_nodes =
{
#define _(s,n)
},
.format_trace = format_sctp_rx_trace_short,
}
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1109
static uword sctp4_rcv_phase(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: sctp_input.c:1095
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp4_rcv_phase_node)

Definition at line 1124 of file sctp_input.c.

vlib_node_registration_t sctp4_shutdown_phase_node
Initial value:
=
{
.function = sctp4_shutdown_phase,
.name = "sctp4-shutdown",
.vector_size = sizeof (u32),
.n_errors = SCTP_N_ERROR,
.error_strings = sctp_error_strings,
.n_next_nodes = SCTP_SHUTDOWN_PHASE_N_NEXT,
.next_nodes =
{
#define _(s,n)
},
.format_trace = format_sctp_rx_trace_short,
}
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1109
static uword sctp4_shutdown_phase(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: sctp_input.c:1445
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp4_shutdown_phase_node)

Definition at line 1167 of file sctp_input.c.

vlib_node_registration_t sctp6_established_phase_node
Initial value:
=
{
.name = "sctp6-established",
.vector_size = sizeof (u32),
.n_errors = SCTP_N_ERROR,
.error_strings = sctp_error_strings,
.n_next_nodes = SCTP_LISTEN_PHASE_N_NEXT,
.next_nodes =
{
#define _(s,n)
},
.format_trace = format_sctp_rx_trace_short,
}
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
static uword sctp6_established_phase(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: sctp_input.c:1961
u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1109
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp6_established_phase_node)

Definition at line 1508 of file sctp_input.c.

vlib_node_registration_t sctp6_init_phase_node
Initial value:
=
{
.function = sctp6_rcv_phase,
.name = "sctp6-rcv",
.vector_size = sizeof (u32),
.n_errors = SCTP_N_ERROR,
.error_strings = sctp_error_strings,
.n_next_nodes = SCTP_RCV_PHASE_N_NEXT,
.next_nodes =
{
#define _(s,n)
},
.format_trace = format_sctp_rx_trace_short,
}
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1109
static uword sctp6_rcv_phase(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: sctp_input.c:1102
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp6_init_phase_node)

Definition at line 1146 of file sctp_input.c.

vlib_node_registration_t sctp6_input_node
Initial value:
=
{
.name = "sctp6-input",
.vector_size = sizeof (u32),
.n_errors = SCTP_N_ERROR,
.error_strings = sctp_error_strings,
.n_next_nodes = SCTP_INPUT_N_NEXT,
.next_nodes =
{
#define _(s,n)
},
.format_buffer = format_sctp_header,
.format_trace = format_sctp_rx_trace,
}
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
format_function_t format_sctp_header
Definition: format.h:107
u8 * format_sctp_rx_trace(u8 *s, va_list *args)
Definition: sctp_input.c:1969
#define foreach_sctp6_input_next
Definition: sctp_input.c:117
static uword sctp6_input_dispatcher(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: sctp_input.c:2274

(constructor) VLIB_REGISTER_NODE (sctp6_input_node)

Definition at line 2304 of file sctp_input.c.

vlib_node_registration_t sctp6_listen_phase_node
Initial value:
=
{
.function = sctp6_listen_phase,
.name = "sctp6-listen",
.vector_size = sizeof (u32),
.n_errors = SCTP_N_ERROR,
.error_strings = sctp_error_strings,
.n_next_nodes = SCTP_LISTEN_PHASE_N_NEXT,
.next_nodes =
{
#define _(s,n)
},
.format_trace = format_sctp_rx_trace_short,
}
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1109
#define foreach_sctp_state_next
Definition: sctp_input.c:29
static uword sctp6_listen_phase(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: sctp_input.c:1794

(constructor) VLIB_REGISTER_NODE (sctp6_listen_phase_node)

Definition at line 1505 of file sctp_input.c.

vlib_node_registration_t sctp6_shutdown_phase_node
Initial value:
=
{
.function = sctp6_shutdown_phase,
.name = "sctp6-shutdown",
.vector_size = sizeof (u32),
.n_errors = SCTP_N_ERROR,
.error_strings = sctp_error_strings,
.n_next_nodes = SCTP_SHUTDOWN_PHASE_N_NEXT,
.next_nodes =
{
#define _(s,n)
},
.format_trace = format_sctp_rx_trace_short,
}
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1109
#define foreach_sctp_state_next
Definition: sctp_input.c:29
static uword sctp6_shutdown_phase(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
Definition: sctp_input.c:1452

(constructor) VLIB_REGISTER_NODE (sctp6_shutdown_phase_node)

Definition at line 1168 of file sctp_input.c.

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

Definition at line 22 of file sctp_input.c.