FD.io VPP  v19.08.2-294-g37e99c22d
Vector Packet Processing
sctp_output.c File Reference
+ Include dependency graph for sctp_output.c:

Go to the source code of this file.

Functions

void sctp_flush_frame_to_output (vlib_main_t *vm, u8 thread_index, u8 is_ip4)
 Flush tx frame populated by retransmits and timer pops. More...
 
static void sctp_flush_frame_to_ip_lookup (vlib_main_t *vm, u8 thread_index, u8 is_ip4)
 Flush ip lookup tx frames populated by timer pops. More...
 
void sctp_flush_frames_to_output (u8 thread_index)
 Flush v4 and v6 sctp and ip-lookup tx frames for thread index. More...
 
u32 ip4_sctp_compute_checksum (vlib_main_t *vm, vlib_buffer_t *p0, ip4_header_t *ip0)
 
u32 ip6_sctp_compute_checksum (vlib_main_t *vm, vlib_buffer_t *p0, ip6_header_t *ip0, int *bogus_lengthp)
 
void sctp_push_ip_hdr (sctp_main_t *tm, sctp_sub_connection_t *sctp_sub_conn, vlib_buffer_t *b)
 
static void * sctp_reuse_buffer (vlib_main_t *vm, vlib_buffer_t *b)
 
static void * sctp_init_buffer (vlib_main_t *vm, vlib_buffer_t *b)
 
static int sctp_alloc_tx_buffers (sctp_main_t *tm, u8 thread_index, u32 n_free_buffers)
 
static int sctp_get_free_buffer_index (sctp_main_t *tm, u32 *bidx)
 
static void sctp_enqueue_to_output_i (vlib_main_t *vm, vlib_buffer_t *b, u32 bi, u8 is_ip4, u8 flush)
 
static void sctp_enqueue_to_output_now (vlib_main_t *vm, vlib_buffer_t *b, u32 bi, u8 is_ip4)
 
static void sctp_enqueue_to_ip_lookup_i (vlib_main_t *vm, vlib_buffer_t *b, u32 bi, u8 is_ip4, u32 fib_index, u8 flush)
 
static void sctp_enqueue_to_ip_lookup (vlib_main_t *vm, vlib_buffer_t *b, u32 bi, u8 is_ip4, u32 fib_index)
 
void sctp_prepare_init_chunk (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b)
 Convert buffer to INIT. More...
 
void sctp_compute_mac (sctp_connection_t *sctp_conn, sctp_state_cookie_param_t *state_cookie)
 
void sctp_prepare_cookie_ack_chunk (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b)
 
void sctp_prepare_cookie_echo_chunk (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b, u8 reuse_buffer)
 
void sctp_send_cookie_echo (sctp_connection_t *sctp_conn)
 
void sctp_prepare_operation_error (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b, u8 err_cause)
 Convert buffer to ERROR. More...
 
void sctp_prepare_abort_for_collision (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b, ip4_address_t *ip4_addr, ip6_address_t *ip6_addr)
 Convert buffer to ABORT. More...
 
void sctp_prepare_initack_chunk_for_collision (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b, ip4_address_t *ip4_addr, ip6_address_t *ip6_addr)
 Convert buffer to INIT-ACK. More...
 
void sctp_prepare_initack_chunk (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b, ip4_address_t *ip4_addr, u8 add_ip4, ip6_address_t *ip6_addr, u8 add_ip6)
 Convert buffer to INIT-ACK. More...
 
void sctp_prepare_shutdown_chunk (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b)
 Convert buffer to SHUTDOWN. More...
 
void sctp_send_shutdown (sctp_connection_t *sctp_conn)
 
void sctp_prepare_shutdown_ack_chunk (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b)
 Convert buffer to SHUTDOWN_ACK. More...
 
void sctp_send_shutdown_ack (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b)
 
void sctp_prepare_sack_chunk (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b)
 Convert buffer to SACK. More...
 
void sctp_prepare_heartbeat_ack_chunk (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b)
 Convert buffer to HEARTBEAT_ACK. More...
 
void sctp_prepare_heartbeat_chunk (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b)
 Convert buffer to HEARTBEAT. More...
 
void sctp_send_heartbeat (sctp_connection_t *sctp_conn)
 
void sctp_prepare_shutdown_complete_chunk (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b)
 Convert buffer to SHUTDOWN_COMPLETE. More...
 
void sctp_send_shutdown_complete (sctp_connection_t *sctp_conn, u8 idx, vlib_buffer_t *b0)
 
void sctp_send_init (sctp_connection_t *sctp_conn)
 
static void sctp_push_hdr_i (sctp_connection_t *sctp_conn, vlib_buffer_t *b, sctp_state_t next_state)
 Push SCTP header and update connection variables. More...
 
u32 sctp_push_header (transport_connection_t *trans_conn, vlib_buffer_t *b)
 
u32 sctp_prepare_data_retransmit (sctp_connection_t *sctp_conn, u8 idx, u32 offset, u32 max_deq_bytes, vlib_buffer_t **b)
 
void sctp_data_retransmit (sctp_connection_t *sctp_conn)
 

Function Documentation

◆ ip4_sctp_compute_checksum()

u32 ip4_sctp_compute_checksum ( vlib_main_t vm,
vlib_buffer_t p0,
ip4_header_t ip0 
)

Definition at line 67 of file sctp_output.c.

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

◆ ip6_sctp_compute_checksum()

u32 ip6_sctp_compute_checksum ( vlib_main_t vm,
vlib_buffer_t p0,
ip6_header_t ip0,
int *  bogus_lengthp 
)

Definition at line 124 of file sctp_output.c.

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

◆ sctp_alloc_tx_buffers()

static int sctp_alloc_tx_buffers ( sctp_main_t tm,
u8  thread_index,
u32  n_free_buffers 
)
inlinestatic

Definition at line 254 of file sctp_output.c.

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

◆ sctp_compute_mac()

void sctp_compute_mac ( sctp_connection_t sctp_conn,
sctp_state_cookie_param_t state_cookie 
)

Definition at line 468 of file sctp_output.c.

+ Here is the caller graph for this function:

◆ sctp_data_retransmit()

void sctp_data_retransmit ( sctp_connection_t sctp_conn)

Definition at line 1493 of file sctp_output.c.

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

◆ sctp_enqueue_to_ip_lookup()

static void sctp_enqueue_to_ip_lookup ( vlib_main_t vm,
vlib_buffer_t b,
u32  bi,
u8  is_ip4,
u32  fib_index 
)
inlinestatic

Definition at line 374 of file sctp_output.c.

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

◆ sctp_enqueue_to_ip_lookup_i()

static void sctp_enqueue_to_ip_lookup_i ( vlib_main_t vm,
vlib_buffer_t b,
u32  bi,
u8  is_ip4,
u32  fib_index,
u8  flush 
)
inlinestatic

Definition at line 333 of file sctp_output.c.

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

◆ sctp_enqueue_to_output_i()

static void sctp_enqueue_to_output_i ( vlib_main_t vm,
vlib_buffer_t b,
u32  bi,
u8  is_ip4,
u8  flush 
)
inlinestatic

Definition at line 292 of file sctp_output.c.

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

◆ sctp_enqueue_to_output_now()

static void sctp_enqueue_to_output_now ( vlib_main_t vm,
vlib_buffer_t b,
u32  bi,
u8  is_ip4 
)
inlinestatic

Definition at line 326 of file sctp_output.c.

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

◆ sctp_flush_frame_to_ip_lookup()

static void sctp_flush_frame_to_ip_lookup ( vlib_main_t vm,
u8  thread_index,
u8  is_ip4 
)
inlinestatic

Flush ip lookup tx frames populated by timer pops.

Definition at line 40 of file sctp_output.c.

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

◆ sctp_flush_frame_to_output()

void sctp_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 24 of file sctp_output.c.

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

◆ sctp_flush_frames_to_output()

void sctp_flush_frames_to_output ( u8  thread_index)

Flush v4 and v6 sctp and ip-lookup tx frames for thread index.

Definition at line 57 of file sctp_output.c.

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

◆ sctp_get_free_buffer_index()

static int sctp_get_free_buffer_index ( sctp_main_t tm,
u32 bidx 
)
inlinestatic

Definition at line 276 of file sctp_output.c.

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

◆ sctp_init_buffer()

static void* sctp_init_buffer ( vlib_main_t vm,
vlib_buffer_t b 
)
inlinestatic

Definition at line 241 of file sctp_output.c.

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

◆ sctp_prepare_abort_for_collision()

void sctp_prepare_abort_for_collision ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b,
ip4_address_t ip4_addr,
ip6_address_t ip6_addr 
)

Convert buffer to ABORT.

Definition at line 659 of file sctp_output.c.

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

◆ sctp_prepare_cookie_ack_chunk()

void sctp_prepare_cookie_ack_chunk ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b 
)

Definition at line 497 of file sctp_output.c.

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

◆ sctp_prepare_cookie_echo_chunk()

void sctp_prepare_cookie_echo_chunk ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b,
u8  reuse_buffer 
)

Definition at line 531 of file sctp_output.c.

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

◆ sctp_prepare_data_retransmit()

u32 sctp_prepare_data_retransmit ( sctp_connection_t sctp_conn,
u8  idx,
u32  offset,
u32  max_deq_bytes,
vlib_buffer_t **  b 
)

Definition at line 1441 of file sctp_output.c.

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

◆ sctp_prepare_heartbeat_ack_chunk()

void sctp_prepare_heartbeat_ack_chunk ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b 
)

Convert buffer to HEARTBEAT_ACK.

Definition at line 1132 of file sctp_output.c.

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

◆ sctp_prepare_heartbeat_chunk()

void sctp_prepare_heartbeat_chunk ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b 
)

Convert buffer to HEARTBEAT.

Definition at line 1171 of file sctp_output.c.

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

◆ sctp_prepare_init_chunk()

void sctp_prepare_init_chunk ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b 
)

Convert buffer to INIT.

Definition at line 386 of file sctp_output.c.

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

◆ sctp_prepare_initack_chunk()

void sctp_prepare_initack_chunk ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b,
ip4_address_t ip4_addr,
u8  add_ip4,
ip6_address_t ip6_addr,
u8  add_ip6 
)

Convert buffer to INIT-ACK.

Definition at line 840 of file sctp_output.c.

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

◆ sctp_prepare_initack_chunk_for_collision()

void sctp_prepare_initack_chunk_for_collision ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b,
ip4_address_t ip4_addr,
ip6_address_t ip6_addr 
)

Convert buffer to INIT-ACK.

Definition at line 700 of file sctp_output.c.

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

◆ sctp_prepare_operation_error()

void sctp_prepare_operation_error ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b,
u8  err_cause 
)

Convert buffer to ERROR.

Definition at line 614 of file sctp_output.c.

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

◆ sctp_prepare_sack_chunk()

void sctp_prepare_sack_chunk ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b 
)

Convert buffer to SACK.

Definition at line 1094 of file sctp_output.c.

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

◆ sctp_prepare_shutdown_ack_chunk()

void sctp_prepare_shutdown_ack_chunk ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b 
)

Convert buffer to SHUTDOWN_ACK.

Definition at line 1046 of file sctp_output.c.

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

◆ sctp_prepare_shutdown_chunk()

void sctp_prepare_shutdown_chunk ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b 
)

Convert buffer to SHUTDOWN.

Definition at line 983 of file sctp_output.c.

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

◆ sctp_prepare_shutdown_complete_chunk()

void sctp_prepare_shutdown_complete_chunk ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b 
)

Convert buffer to SHUTDOWN_COMPLETE.

Definition at line 1240 of file sctp_output.c.

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

◆ sctp_push_hdr_i()

static void sctp_push_hdr_i ( sctp_connection_t sctp_conn,
vlib_buffer_t b,
sctp_state_t  next_state 
)
static

Push SCTP header and update connection variables.

Definition at line 1334 of file sctp_output.c.

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

◆ sctp_push_header()

u32 sctp_push_header ( transport_connection_t trans_conn,
vlib_buffer_t b 
)

Definition at line 1419 of file sctp_output.c.

+ Here is the call graph for this function:

◆ sctp_push_ip_hdr()

void sctp_push_ip_hdr ( sctp_main_t tm,
sctp_sub_connection_t sctp_sub_conn,
vlib_buffer_t b 
)

Definition at line 198 of file sctp_output.c.

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

◆ sctp_reuse_buffer()

static void* sctp_reuse_buffer ( vlib_main_t vm,
vlib_buffer_t b 
)
inlinestatic

Definition at line 224 of file sctp_output.c.

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

◆ sctp_send_cookie_echo()

void sctp_send_cookie_echo ( sctp_connection_t sctp_conn)

Definition at line 569 of file sctp_output.c.

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

◆ sctp_send_heartbeat()

void sctp_send_heartbeat ( sctp_connection_t sctp_conn)

Definition at line 1203 of file sctp_output.c.

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

◆ sctp_send_init()

void sctp_send_init ( sctp_connection_t sctp_conn)

Definition at line 1285 of file sctp_output.c.

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

◆ sctp_send_shutdown()

void sctp_send_shutdown ( sctp_connection_t sctp_conn)

Definition at line 1019 of file sctp_output.c.

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

◆ sctp_send_shutdown_ack()

void sctp_send_shutdown_ack ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b 
)

Definition at line 1077 of file sctp_output.c.

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

◆ sctp_send_shutdown_complete()

void sctp_send_shutdown_complete ( sctp_connection_t sctp_conn,
u8  idx,
vlib_buffer_t b0 
)

Definition at line 1268 of file sctp_output.c.

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