FD.io VPP  v19.08.1-401-g8e4ed521a
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...
 
static 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)
 
VLIB_NODE_FN() sctp4_rcv_phase_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
VLIB_NODE_FN() sctp6_init_phase_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static u8format_sctp_rx_trace_short (u8 *s, va_list *args)
 
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)
 
VLIB_NODE_FN() sctp4_shutdown_phase_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
VLIB_NODE_FN() sctp6_shutdown_phase_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
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)
 
VLIB_NODE_FN() sctp4_listen_phase_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
VLIB_NODE_FN() sctp6_listen_phase_node (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)
 
VLIB_NODE_FN() sctp4_established_phase_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
VLIB_NODE_FN() sctp6_established_phase_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
static u8format_sctp_rx_trace (u8 *s, va_list *args)
 
static uword sctp46_input_dispatcher (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, int is_ip4)
 
VLIB_NODE_FN() sctp4_input_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
VLIB_NODE_FN() sctp6_input_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame)
 
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

◆ foreach_sctp4_input_next

#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 110 of file sctp_input.c.

◆ foreach_sctp6_input_next

#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 119 of file sctp_input.c.

◆ foreach_sctp_state_next

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

◆ sctp_error

#define sctp_error (   n,
 
)    s,

◆ sctp_next_drop

#define sctp_next_drop (   is_ip4)
Value:
(is_ip4 ? SCTP_NEXT_DROP4 \
: SCTP_NEXT_DROP6)

Definition at line 239 of file sctp_input.c.

◆ sctp_next_output

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

Definition at line 236 of file sctp_input.c.

Typedef Documentation

◆ sctp_established_phase_next_t

typedef enum _sctp_established_phase_next sctp_established_phase_next_t

◆ sctp_input_next_t

typedef enum _sctp_input_next sctp_input_next_t

◆ sctp_listen_phase_next_t

typedef enum _sctp_listen_phase_next sctp_listen_phase_next_t

◆ sctp_rcv_phase_next_t

typedef enum _sctp_rcv_phase_next sctp_rcv_phase_next_t

◆ sctp_shutdown_phase_next_t

typedef enum _sctp_shutdown_phase_next sctp_shutdown_phase_next_t

◆ sctp_state_next_t

typedef enum _sctp_state_next sctp_state_next_t

Function Documentation

◆ format_sctp_rx_trace()

static u8* format_sctp_rx_trace ( u8 s,
va_list *  args 
)
static

Definition at line 1984 of file sctp_input.c.

+ Here is the call graph for this function:

◆ format_sctp_rx_trace_short()

static u8* format_sctp_rx_trace_short ( u8 s,
va_list *  args 
)
static

Definition at line 1136 of file sctp_input.c.

+ Here is the call graph for this function:

◆ phase_to_string()

char* phase_to_string ( u8  phase)

Definition at line 89 of file sctp_input.c.

+ Here is the caller graph for this function:

◆ sctp46_established_phase_inline()

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 1815 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp46_input_dispatcher()

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 2081 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp46_listen_process_inline()

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 1607 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp46_rcv_phase_inline()

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 952 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp46_shutdown_phase_inline()

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 1301 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp4_established_phase_node()

VLIB_NODE_FN() sctp4_established_phase_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)

Definition at line 1967 of file sctp_input.c.

+ Here is the call graph for this function:

◆ sctp4_input_node()

VLIB_NODE_FN() sctp4_input_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)

Definition at line 2268 of file sctp_input.c.

+ Here is the call graph for this function:

◆ sctp4_listen_phase_node()

VLIB_NODE_FN() sctp4_listen_phase_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)

Definition at line 1800 of file sctp_input.c.

+ Here is the call graph for this function:

◆ sctp4_rcv_phase_node()

VLIB_NODE_FN() sctp4_rcv_phase_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)

Definition at line 1121 of file sctp_input.c.

+ Here is the call graph for this function:

◆ sctp4_shutdown_phase_node()

VLIB_NODE_FN() sctp4_shutdown_phase_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)

Definition at line 1465 of file sctp_input.c.

+ Here is the call graph for this function:

◆ sctp6_established_phase_node()

VLIB_NODE_FN() sctp6_established_phase_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)

Definition at line 1975 of file sctp_input.c.

+ Here is the call graph for this function:

◆ sctp6_init_phase_node()

VLIB_NODE_FN() sctp6_init_phase_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)

Definition at line 1128 of file sctp_input.c.

+ Here is the call graph for this function:

◆ sctp6_input_node()

VLIB_NODE_FN() sctp6_input_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)

Definition at line 2274 of file sctp_input.c.

+ Here is the call graph for this function:

◆ sctp6_listen_phase_node()

VLIB_NODE_FN() sctp6_listen_phase_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)

Definition at line 1807 of file sctp_input.c.

+ Here is the call graph for this function:

◆ sctp6_shutdown_phase_node()

VLIB_NODE_FN() sctp6_shutdown_phase_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t from_frame 
)

Definition at line 1472 of file sctp_input.c.

+ Here is the call graph for this function:

◆ sctp_calculate_implied_length()

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

Definition at line 262 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_dispatch_table_init()

static void sctp_dispatch_table_init ( sctp_main_t tm)
static

Definition at line 2322 of file sctp_input.c.

+ Here is the caller graph for this function:

◆ sctp_handle_cookie_ack()

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 921 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_handle_cookie_echo()

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 873 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_handle_data()

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 773 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_handle_heartbeat()

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 1558 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_handle_heartbeat_ack()

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 1577 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_handle_init()

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 318 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_handle_init_ack()

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 490 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_handle_operation_err()

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 288 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_handle_sack()

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 1518 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_handle_shutdown()

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 1189 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_handle_shutdown_ack()

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 1230 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_handle_shutdown_complete()

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 1267 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_input_init()

clib_error_t* sctp_input_init ( vlib_main_t vm)

Definition at line 2509 of file sctp_input.c.

+ Here is the call graph for this function:

◆ sctp_is_bundling()

static u8 sctp_is_bundling ( u16  sctp_implied_length,
sctp_chunks_common_hdr_t sctp_common_hdr 
)
inlinestatic

Definition at line 278 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_is_connection_gapping()

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

Definition at line 757 of file sctp_input.c.

+ Here is the caller graph for this function:

◆ sctp_is_sack_delayable()

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

Definition at line 720 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_is_valid_init_ack()

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 466 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_lookup_connection()

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 148 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_lookup_is_valid()

static u8 sctp_lookup_is_valid ( transport_connection_t trans_conn,
sctp_header_t sctp_hdr 
)
static

Definition at line 128 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_node_inc_counter()

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 1594 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_session_enqueue_data()

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 668 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_session_enqueue_data_ooo()

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 613 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sctp_set_rx_trace_data()

static 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

Definition at line 243 of file sctp_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ sctp4_established_phase_node

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 u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1136
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp4_established_phase_node)

Definition at line 2038 of file sctp_input.c.

◆ sctp4_input_node

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
static u8 * format_sctp_rx_trace(u8 *s, va_list *args)
Definition: sctp_input.c:1984
unsigned int u32
Definition: types.h:88
#define foreach_sctp4_input_next
Definition: sctp_input.c:110
u8 * format_sctp_header(u8 *s, va_list *args)
Definition: sctp_format.c:20

(constructor) VLIB_REGISTER_NODE (sctp4_input_node)

Definition at line 2281 of file sctp_input.c.

◆ sctp4_listen_phase_node

vlib_node_registration_t sctp4_listen_phase_node
Initial value:
=
{
.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 u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1136
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp4_listen_phase_node)

Definition at line 2000 of file sctp_input.c.

◆ sctp4_rcv_phase_node

vlib_node_registration_t sctp4_rcv_phase_node
Initial value:
=
{
.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 u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1136
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp4_rcv_phase_node)

Definition at line 1151 of file sctp_input.c.

◆ sctp4_shutdown_phase_node

vlib_node_registration_t sctp4_shutdown_phase_node
Initial value:
=
{
.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 u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1136
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp4_shutdown_phase_node)

Definition at line 1480 of file sctp_input.c.

◆ sctp6_established_phase_node

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 u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1136
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp6_established_phase_node)

Definition at line 2057 of file sctp_input.c.

◆ sctp6_init_phase_node

vlib_node_registration_t sctp6_init_phase_node
Initial value:
=
{
.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 u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1136
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp6_init_phase_node)

Definition at line 1170 of file sctp_input.c.

◆ sctp6_input_node

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
static u8 * format_sctp_rx_trace(u8 *s, va_list *args)
Definition: sctp_input.c:1984
unsigned int u32
Definition: types.h:88
u8 * format_sctp_header(u8 *s, va_list *args)
Definition: sctp_format.c:20
#define foreach_sctp6_input_next
Definition: sctp_input.c:119

(constructor) VLIB_REGISTER_NODE (sctp6_input_node)

Definition at line 2301 of file sctp_input.c.

◆ sctp6_listen_phase_node

vlib_node_registration_t sctp6_listen_phase_node
Initial value:
=
{
.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 u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1136
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp6_listen_phase_node)

Definition at line 2019 of file sctp_input.c.

◆ sctp6_shutdown_phase_node

vlib_node_registration_t sctp6_shutdown_phase_node
Initial value:
=
{
.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 u8 * format_sctp_rx_trace_short(u8 *s, va_list *args)
Definition: sctp_input.c:1136
static char * sctp_error_strings[]
Definition: sctp_input.c:22
unsigned int u32
Definition: types.h:88
#define foreach_sctp_state_next
Definition: sctp_input.c:29

(constructor) VLIB_REGISTER_NODE (sctp6_shutdown_phase_node)

Definition at line 1499 of file sctp_input.c.

◆ sctp_error_strings

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

Definition at line 22 of file sctp_input.c.