FD.io VPP  v19.08.1-401-g8e4ed521a
Vector Packet Processing
quic.c File Reference
+ Include dependency graph for quic.c:

Go to the source code of this file.

Data Structures

struct  st_quic_event_log_t
 
struct  quicly_ctx_data_
 
struct  quic_rx_packet_ctx_
 

Macros

#define quic_error(n, s)   s,
 

Typedefs

typedef struct quicly_ctx_data_ quicly_ctx_data_t
 
typedef struct quic_rx_packet_ctx_ quic_rx_packet_ctx_t
 

Functions

static void quic_update_timer (quic_ctx_t *ctx)
 
static int quic_on_client_connected (quic_ctx_t *ctx)
 
static u32 quic_ctx_alloc (u32 thread_index)
 
static void quic_ctx_free (quic_ctx_t *ctx)
 
static quic_ctx_tquic_ctx_get (u32 ctx_index, u32 thread_index)
 
static quic_ctx_tquic_ctx_get_if_valid (u32 ctx_index, u32 thread_index)
 
static quic_ctx_tquic_get_conn_ctx (quicly_conn_t *conn)
 
static void quic_store_conn_ctx (quicly_conn_t *conn, quic_ctx_t *ctx)
 
static int quic_ctx_is_stream (quic_ctx_t *ctx)
 
static int quic_ctx_is_listener (quic_ctx_t *ctx)
 
static session_tget_stream_session_from_stream (quicly_stream_t *stream)
 
static void quic_make_connection_key (clib_bihash_kv_16_8_t *kv, const quicly_cid_plaintext_t *id)
 
static int quic_sendable_packet_count (session_t *udp_session)
 
static quicly_context_t * quic_get_quicly_ctx_from_ctx (quic_ctx_t *ctx)
 
static quicly_context_t * quic_get_quicly_ctx_from_udp (u64 udp_session_handle)
 
static void quic_ack_rx_data (session_t *stream_session)
 
static void quic_disconnect_transport (quic_ctx_t *ctx)
 
static void quic_connection_delete (quic_ctx_t *ctx)
 
void quic_increment_counter (u8 evt, u8 val)
 
void quic_event_log (quicly_event_logger_t *_self, quicly_event_type_t type, const quicly_event_attribute_t *attributes, size_t num_attributes)
 
quicly_event_logger_t * quic_new_event_logger ()
 
void quic_free_event_logger (quicly_event_logger_t *_self)
 
static void quic_connection_closed (quic_ctx_t *ctx)
 Called when quicly return an error This function interacts tightly with quic_proto_on_close. More...
 
static int quic_send_datagram (session_t *udp_session, quicly_datagram_t *packet)
 
static int quic_send_packets (quic_ctx_t *ctx)
 
static void quic_on_stream_destroy (quicly_stream_t *stream, int err)
 
static int quic_on_stop_sending (quicly_stream_t *stream, int err)
 
static int quic_on_receive_reset (quicly_stream_t *stream, int err)
 
static int quic_on_receive (quicly_stream_t *stream, size_t off, const void *src, size_t len)
 
void quic_fifo_egress_shift (quicly_stream_t *stream, size_t delta)
 
int quic_fifo_egress_emit (quicly_stream_t *stream, size_t off, void *dst, size_t *len, int *wrote_all)
 
static void quic_accept_stream (void *s)
 
static int quic_on_stream_open (quicly_stream_open_t *self, quicly_stream_t *stream)
 
static void quic_on_closed_by_peer (quicly_closed_by_peer_t *self, quicly_conn_t *conn, int code, uint64_t frame_type, const char *reason, size_t reason_len)
 
static int64_t quic_get_thread_time (u8 thread_index)
 
static int64_t quic_get_time (quicly_now_t *self)
 
static u32 quic_set_time_now (u32 thread_index)
 
static void quic_update_time (f64 now, u8 thread_index)
 
static void quic_timer_expired (u32 conn_index)
 
static void quic_expired_timers_dispatch (u32 *expired_timers)
 
static int quic_encrypt_ticket_cb (ptls_encrypt_ticket_t *_self, ptls_t *tls, int is_encrypt, ptls_buffer_t *dst, ptls_iovec_t src)
 
static void quic_store_quicly_ctx (application_t *app, u8 is_client)
 
static int quic_connect_new_stream (session_t *quic_session, u32 opaque)
 
static int quic_connect_new_connection (session_endpoint_cfg_t *sep)
 
static int quic_connect (transport_endpoint_cfg_t *tep)
 
static void quic_proto_on_close (u32 ctx_index, u32 thread_index)
 
static u32 quic_start_listen (u32 quic_listen_session_index, transport_endpoint_t *tep)
 
static u32 quic_stop_listen (u32 lctx_index)
 
static transport_connection_tquic_connection_get (u32 ctx_index, u32 thread_index)
 
static transport_connection_tquic_listener_get (u32 listener_index)
 
static u8format_quic_ctx (u8 *s, va_list *args)
 
static u8format_quic_connection (u8 *s, va_list *args)
 
static u8format_quic_half_open (u8 *s, va_list *args)
 
static u8format_quic_listener (u8 *s, va_list *args)
 
static void quic_build_sockaddr (struct sockaddr *sa, socklen_t *salen, ip46_address_t *addr, u16 port, u8 is_ip4)
 
static void quic_receive_connection (void *arg)
 
static void quic_transfer_connection (u32 ctx_index, u32 dest_thread)
 
static int quic_session_connected_callback (u32 quic_app_index, u32 ctx_index, session_t *udp_session, u8 is_fail)
 
static void quic_session_disconnect_callback (session_t *s)
 
static void quic_session_reset_callback (session_t *s)
 
static void quic_session_migrate_callback (session_t *s, session_handle_t new_sh)
 
int quic_session_accepted_callback (session_t *udp_session)
 
static int quic_add_segment_callback (u32 client_index, u64 seg_handle)
 
static int quic_del_segment_callback (u32 client_index, u64 seg_handle)
 
static int quic_custom_app_rx_callback (transport_connection_t *tc)
 
static int quic_custom_tx_callback (void *s, u32 max_burst_size)
 
static int quic_find_packet_ctx (u32 *ctx_thread, u32 *ctx_index, struct sockaddr *sa, socklen_t salen, quicly_decoded_packet_t *packet, u32 caller_thread_index)
 
static int quic_create_quic_session (quic_ctx_t *ctx)
 
static int quic_create_connection (u32 ctx_index, struct sockaddr *sa, socklen_t salen, quicly_decoded_packet_t packet)
 
static int quic_reset_connection (u64 udp_session_handle, struct sockaddr *sa, socklen_t salen, quicly_decoded_packet_t packet)
 
static void check_quic_client_connected (struct quic_rx_packet_ctx_ *quic_rx_ctx)
 
static int quic_process_one_rx_packet (u64 udp_session_handle, quicly_context_t *quicly_ctx, svm_fifo_t *f, u32 *fifo_offset, u32 *max_packet, u32 packet_n, quic_rx_packet_ctx_t *packet_ctx)
 
static int quic_app_rx_callback (session_t *udp_session)
 
static void quic_common_get_transport_endpoint (quic_ctx_t *ctx, transport_endpoint_t *tep, u8 is_lcl)
 
static void quic_get_transport_listener_endpoint (u32 listener_index, transport_endpoint_t *tep, u8 is_lcl)
 
static void quic_get_transport_endpoint (u32 ctx_index, u32 thread_index, transport_endpoint_t *tep, u8 is_lcl)
 
static void quic_register_cipher_suite (quic_crypto_engine_t type, ptls_cipher_suite_t **ciphers)
 
static void quic_update_fifo_size ()
 
static clib_error_tquic_init (vlib_main_t *vm)
 
static clib_error_tquic_plugin_crypto_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tquic_plugin_set_fifo_size_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static u8quic_format_ctx_stat (u8 *s, va_list *args)
 
static clib_error_tquic_plugin_showstats_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
 VLIB_PLUGIN_REGISTER ()
 
static clib_error_tquic_config_fn (vlib_main_t *vm, unformat_input_t *input)
 
static uword quic_node_fn (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 

Variables

static char * quic_error_strings []
 
static quic_main_t quic_main
 
static const quicly_stream_callbacks_t quic_stream_callbacks
 
static quicly_stream_open_t on_stream_open = { &quic_on_stream_open }
 
static quicly_closed_by_peer_t on_closed_by_peer
 
static quicly_now_t quicly_vpp_now_cb = { quic_get_time }
 
static session_cb_vft_t quic_app_cb_vft
 
static const transport_proto_vft_t quic_proto
 
u64 quic_fifosize = 0
 
static vlib_cli_command_t quic_plugin_crypto_command
 (constructor) VLIB_CLI_COMMAND (quic_plugin_crypto_command) More...
 
static vlib_cli_command_t quic_plugin_set_fifo_size_command
 (constructor) VLIB_CLI_COMMAND (quic_plugin_set_fifo_size_command) More...
 
static vlib_cli_command_t quic_plugin_stats_command
 (constructor) VLIB_CLI_COMMAND (quic_plugin_stats_command) More...
 
vlib_node_registration_t quic_input_node
 (constructor) VLIB_REGISTER_NODE (quic_input_node) More...
 

Macro Definition Documentation

◆ quic_error

#define quic_error (   n,
 
)    s,

Typedef Documentation

◆ quic_rx_packet_ctx_t

◆ quicly_ctx_data_t

Function Documentation

◆ check_quic_client_connected()

static void check_quic_client_connected ( struct quic_rx_packet_ctx_ quic_rx_ctx)
static

Definition at line 1938 of file quic.c.

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

◆ format_quic_connection()

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

Definition at line 1353 of file quic.c.

+ Here is the call graph for this function:

◆ format_quic_ctx()

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

Definition at line 1322 of file quic.c.

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

◆ format_quic_half_open()

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

Definition at line 1364 of file quic.c.

+ Here is the call graph for this function:

◆ format_quic_listener()

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

Definition at line 1376 of file quic.c.

+ Here is the call graph for this function:

◆ get_stream_session_from_stream()

static session_t* get_stream_session_from_stream ( quicly_stream_t *  stream)
static

Definition at line 110 of file quic.c.

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

◆ quic_accept_stream()

static void quic_accept_stream ( void *  s)
static

Definition at line 637 of file quic.c.

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

◆ quic_ack_rx_data()

static void quic_ack_rx_data ( session_t stream_session)
static

Definition at line 160 of file quic.c.

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

◆ quic_add_segment_callback()

static int quic_add_segment_callback ( u32  client_index,
u64  seg_handle 
)
static

Definition at line 1694 of file quic.c.

◆ quic_app_rx_callback()

static int quic_app_rx_callback ( session_t udp_session)
static

Definition at line 2079 of file quic.c.

+ Here is the call graph for this function:

◆ quic_build_sockaddr()

static void quic_build_sockaddr ( struct sockaddr *  sa,
socklen_t *  salen,
ip46_address_t *  addr,
u16  port,
u8  is_ip4 
)
inlinestatic

Definition at line 1394 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_common_get_transport_endpoint()

static void quic_common_get_transport_endpoint ( quic_ctx_t ctx,
transport_endpoint_t tep,
u8  is_lcl 
)
inlinestatic

Definition at line 2138 of file quic.c.

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

◆ quic_config_fn()

static clib_error_t* quic_config_fn ( vlib_main_t vm,
unformat_input_t input 
)
static

Definition at line 2421 of file quic.c.

+ Here is the call graph for this function:

◆ quic_connect()

static int quic_connect ( transport_endpoint_cfg_t tep)
static

Definition at line 1166 of file quic.c.

+ Here is the call graph for this function:

◆ quic_connect_new_connection()

static int quic_connect_new_connection ( session_endpoint_cfg_t sep)
static

Definition at line 1119 of file quic.c.

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

◆ quic_connect_new_stream()

static int quic_connect_new_stream ( session_t quic_session,
u32  opaque 
)
static

Definition at line 1016 of file quic.c.

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

◆ quic_connection_closed()

static void quic_connection_closed ( quic_ctx_t ctx)
static

Called when quicly return an error This function interacts tightly with quic_proto_on_close.

Definition at line 282 of file quic.c.

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

◆ quic_connection_delete()

static void quic_connection_delete ( quic_ctx_t ctx)
static

Definition at line 199 of file quic.c.

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

◆ quic_connection_get()

static transport_connection_t* quic_connection_get ( u32  ctx_index,
u32  thread_index 
)
static

Definition at line 1305 of file quic.c.

+ Here is the call graph for this function:

◆ quic_create_connection()

static int quic_create_connection ( u32  ctx_index,
struct sockaddr *  sa,
socklen_t  salen,
quicly_decoded_packet_t  packet 
)
static

Definition at line 1856 of file quic.c.

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

◆ quic_create_quic_session()

static int quic_create_quic_session ( quic_ctx_t ctx)
static

Definition at line 1817 of file quic.c.

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

◆ quic_ctx_alloc()

static u32 quic_ctx_alloc ( u32  thread_index)
static

Definition at line 44 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_ctx_free()

static void quic_ctx_free ( quic_ctx_t ctx)
static

Definition at line 59 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_ctx_get()

static quic_ctx_t* quic_ctx_get ( u32  ctx_index,
u32  thread_index 
)
static

Definition at line 69 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_ctx_get_if_valid()

static quic_ctx_t* quic_ctx_get_if_valid ( u32  ctx_index,
u32  thread_index 
)
static

Definition at line 75 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_ctx_is_listener()

static int quic_ctx_is_listener ( quic_ctx_t ctx)
inlinestatic

Definition at line 104 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_ctx_is_stream()

static int quic_ctx_is_stream ( quic_ctx_t ctx)
inlinestatic

Definition at line 98 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_custom_app_rx_callback()

static int quic_custom_app_rx_callback ( transport_connection_t tc)
static

Definition at line 1712 of file quic.c.

+ Here is the call graph for this function:

◆ quic_custom_tx_callback()

static int quic_custom_tx_callback ( void *  s,
u32  max_burst_size 
)
static

Definition at line 1728 of file quic.c.

+ Here is the call graph for this function:

◆ quic_del_segment_callback()

static int quic_del_segment_callback ( u32  client_index,
u64  seg_handle 
)
static

Definition at line 1703 of file quic.c.

◆ quic_disconnect_transport()

static void quic_disconnect_transport ( quic_ctx_t ctx)
static

Definition at line 185 of file quic.c.

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

◆ quic_encrypt_ticket_cb()

static int quic_encrypt_ticket_cb ( ptls_encrypt_ticket_t *  _self,
ptls_t *  tls,
int  is_encrypt,
ptls_buffer_t *  dst,
ptls_iovec_t  src 
)
static

Definition at line 883 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_event_log()

void quic_event_log ( quicly_event_logger_t *  _self,
quicly_event_type_t  type,
const quicly_event_attribute_t *  attributes,
size_t  num_attributes 
)

Definition at line 246 of file quic.c.

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

◆ quic_expired_timers_dispatch()

static void quic_expired_timers_dispatch ( u32 expired_timers)
static

Definition at line 866 of file quic.c.

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

◆ quic_fifo_egress_emit()

int quic_fifo_egress_emit ( quicly_stream_t *  stream,
size_t  off,
void *  dst,
size_t *  len,
int *  wrote_all 
)

Definition at line 582 of file quic.c.

+ Here is the call graph for this function:

◆ quic_fifo_egress_shift()

void quic_fifo_egress_shift ( quicly_stream_t *  stream,
size_t  delta 
)

Definition at line 567 of file quic.c.

+ Here is the call graph for this function:

◆ quic_find_packet_ctx()

static int quic_find_packet_ctx ( u32 ctx_thread,
u32 ctx_index,
struct sockaddr *  sa,
socklen_t  salen,
quicly_decoded_packet_t *  packet,
u32  caller_thread_index 
)
inlinestatic

Definition at line 1774 of file quic.c.

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

◆ quic_format_ctx_stat()

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

Definition at line 2353 of file quic.c.

+ Here is the call graph for this function:

◆ quic_free_event_logger()

void quic_free_event_logger ( quicly_event_logger_t *  _self)

Definition at line 271 of file quic.c.

+ Here is the call graph for this function:

◆ quic_get_conn_ctx()

static quic_ctx_t* quic_get_conn_ctx ( quicly_conn_t *  conn)
static

Definition at line 83 of file quic.c.

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

◆ quic_get_quicly_ctx_from_ctx()

static quicly_context_t* quic_get_quicly_ctx_from_ctx ( quic_ctx_t ctx)
static

Definition at line 138 of file quic.c.

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

◆ quic_get_quicly_ctx_from_udp()

static quicly_context_t* quic_get_quicly_ctx_from_udp ( u64  udp_session_handle)
static

Definition at line 150 of file quic.c.

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

◆ quic_get_thread_time()

static int64_t quic_get_thread_time ( u8  thread_index)
static

Definition at line 762 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_get_time()

static int64_t quic_get_time ( quicly_now_t *  self)
static

Definition at line 768 of file quic.c.

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

◆ quic_get_transport_endpoint()

static void quic_get_transport_endpoint ( u32  ctx_index,
u32  thread_index,
transport_endpoint_t tep,
u8  is_lcl 
)
static

Definition at line 2167 of file quic.c.

+ Here is the call graph for this function:

◆ quic_get_transport_listener_endpoint()

static void quic_get_transport_listener_endpoint ( u32  listener_index,
transport_endpoint_t tep,
u8  is_lcl 
)
static

Definition at line 2150 of file quic.c.

+ Here is the call graph for this function:

◆ quic_increment_counter()

void quic_increment_counter ( u8  evt,
u8  val 
)

Definition at line 234 of file quic.c.

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

◆ quic_init()

static clib_error_t* quic_init ( vlib_main_t vm)
static

Definition at line 2241 of file quic.c.

+ Here is the call graph for this function:

◆ quic_listener_get()

static transport_connection_t* quic_listener_get ( u32  listener_index)
static

Definition at line 1313 of file quic.c.

+ Here is the call graph for this function:

◆ quic_make_connection_key()

static void quic_make_connection_key ( clib_bihash_kv_16_8_t kv,
const quicly_cid_plaintext_t *  id 
)
inlinestatic

Definition at line 121 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_new_event_logger()

quicly_event_logger_t* quic_new_event_logger ( )

Definition at line 258 of file quic.c.

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

◆ quic_node_fn()

static uword quic_node_fn ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
static

Definition at line 2447 of file quic.c.

◆ quic_on_client_connected()

static int quic_on_client_connected ( quic_ctx_t ctx)
static

Definition at line 1416 of file quic.c.

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

◆ quic_on_closed_by_peer()

static void quic_on_closed_by_peer ( quicly_closed_by_peer_t *  self,
quicly_conn_t *  conn,
int  code,
uint64_t  frame_type,
const char *  reason,
size_t  reason_len 
)
static

Definition at line 729 of file quic.c.

+ Here is the call graph for this function:

◆ quic_on_receive()

static int quic_on_receive ( quicly_stream_t *  stream,
size_t  off,
const void *  src,
size_t  len 
)
static

Definition at line 520 of file quic.c.

+ Here is the call graph for this function:

◆ quic_on_receive_reset()

static int quic_on_receive_reset ( quicly_stream_t *  stream,
int  err 
)
static

Definition at line 504 of file quic.c.

+ Here is the call graph for this function:

◆ quic_on_stop_sending()

static int quic_on_stop_sending ( quicly_stream_t *  stream,
int  err 
)
static

Definition at line 488 of file quic.c.

+ Here is the call graph for this function:

◆ quic_on_stream_destroy()

static void quic_on_stream_destroy ( quicly_stream_t *  stream,
int  err 
)
static

Definition at line 470 of file quic.c.

+ Here is the call graph for this function:

◆ quic_on_stream_open()

static int quic_on_stream_open ( quicly_stream_open_t *  self,
quicly_stream_t *  stream 
)
static

Definition at line 716 of file quic.c.

+ Here is the call graph for this function:

◆ quic_plugin_crypto_command_fn()

static clib_error_t* quic_plugin_crypto_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 2311 of file quic.c.

+ Here is the call graph for this function:

◆ quic_plugin_set_fifo_size_command_fn()

static clib_error_t* quic_plugin_set_fifo_size_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 2331 of file quic.c.

+ Here is the call graph for this function:

◆ quic_plugin_showstats_command_fn()

static clib_error_t* quic_plugin_showstats_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 2372 of file quic.c.

+ Here is the call graph for this function:

◆ quic_process_one_rx_packet()

static int quic_process_one_rx_packet ( u64  udp_session_handle,
quicly_context_t *  quicly_ctx,
svm_fifo_t f,
u32 fifo_offset,
u32 max_packet,
u32  packet_n,
quic_rx_packet_ctx_t packet_ctx 
)
static

Definition at line 1959 of file quic.c.

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

◆ quic_proto_on_close()

static void quic_proto_on_close ( u32  ctx_index,
u32  thread_index 
)
static

Definition at line 1181 of file quic.c.

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

◆ quic_receive_connection()

static void quic_receive_connection ( void *  arg)
static

Definition at line 1470 of file quic.c.

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

◆ quic_register_cipher_suite()

static void quic_register_cipher_suite ( quic_crypto_engine_t  type,
ptls_cipher_suite_t **  ciphers 
)
static

Definition at line 2214 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_reset_connection()

static int quic_reset_connection ( u64  udp_session_handle,
struct sockaddr *  sa,
socklen_t  salen,
quicly_decoded_packet_t  packet 
)
static

Definition at line 1900 of file quic.c.

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

◆ quic_send_datagram()

static int quic_send_datagram ( session_t udp_session,
quicly_datagram_t *  packet 
)
static

Definition at line 324 of file quic.c.

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

◆ quic_send_packets()

static int quic_send_packets ( quic_ctx_t ctx)
static

Definition at line 385 of file quic.c.

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

◆ quic_sendable_packet_count()

static int quic_sendable_packet_count ( session_t udp_session)
static

Definition at line 129 of file quic.c.

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

◆ quic_session_accepted_callback()

int quic_session_accepted_callback ( session_t udp_session)

Definition at line 1653 of file quic.c.

+ Here is the call graph for this function:

◆ quic_session_connected_callback()

static int quic_session_connected_callback ( u32  quic_app_index,
u32  ctx_index,
session_t udp_session,
u8  is_fail 
)
static

Definition at line 1538 of file quic.c.

+ Here is the call graph for this function:

◆ quic_session_disconnect_callback()

static void quic_session_disconnect_callback ( session_t s)
static

Definition at line 1611 of file quic.c.

◆ quic_session_migrate_callback()

static void quic_session_migrate_callback ( session_t s,
session_handle_t  new_sh 
)
static

Definition at line 1623 of file quic.c.

+ Here is the call graph for this function:

◆ quic_session_reset_callback()

static void quic_session_reset_callback ( session_t s)
static

Definition at line 1617 of file quic.c.

◆ quic_set_time_now()

static u32 quic_set_time_now ( u32  thread_index)
static

Definition at line 777 of file quic.c.

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

◆ quic_start_listen()

static u32 quic_start_listen ( u32  quic_listen_session_index,
transport_endpoint_t tep 
)
static

Definition at line 1225 of file quic.c.

+ Here is the call graph for this function:

◆ quic_stop_listen()

static u32 quic_stop_listen ( u32  lctx_index)
static

Definition at line 1284 of file quic.c.

+ Here is the call graph for this function:

◆ quic_store_conn_ctx()

static void quic_store_conn_ctx ( quicly_conn_t *  conn,
quic_ctx_t ctx 
)
static

Definition at line 91 of file quic.c.

+ Here is the caller graph for this function:

◆ quic_store_quicly_ctx()

static void quic_store_quicly_ctx ( application_t app,
u8  is_client 
)
static

Definition at line 935 of file quic.c.

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

◆ quic_timer_expired()

static void quic_timer_expired ( u32  conn_index)
static

Definition at line 797 of file quic.c.

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

◆ quic_transfer_connection()

static void quic_transfer_connection ( u32  ctx_index,
u32  dest_thread 
)
static

Definition at line 1510 of file quic.c.

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

◆ quic_update_fifo_size()

static void quic_update_fifo_size ( )
static

Definition at line 2223 of file quic.c.

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

◆ quic_update_time()

static void quic_update_time ( f64  now,
u8  thread_index 
)
static

Definition at line 787 of file quic.c.

+ Here is the call graph for this function:

◆ quic_update_timer()

static void quic_update_timer ( quic_ctx_t ctx)
static

Definition at line 808 of file quic.c.

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

◆ VLIB_PLUGIN_REGISTER()

VLIB_PLUGIN_REGISTER ( )

Variable Documentation

◆ on_closed_by_peer

quicly_closed_by_peer_t on_closed_by_peer
static
Initial value:
=
static void quic_on_closed_by_peer(quicly_closed_by_peer_t *self, quicly_conn_t *conn, int code, uint64_t frame_type, const char *reason, size_t reason_len)
Definition: quic.c:729

Definition at line 745 of file quic.c.

◆ on_stream_open

quicly_stream_open_t on_stream_open = { &quic_on_stream_open }
static

Definition at line 744 of file quic.c.

◆ quic_app_cb_vft

session_cb_vft_t quic_app_cb_vft
static
Initial value:
= {
.session_accept_callback = quic_session_accepted_callback,
.session_disconnect_callback = quic_session_disconnect_callback,
.session_connected_callback = quic_session_connected_callback,
.session_reset_callback = quic_session_reset_callback,
.session_migrate_callback = quic_session_migrate_callback,
.add_segment_callback = quic_add_segment_callback,
.del_segment_callback = quic_del_segment_callback,
.builtin_app_rx_callback = quic_app_rx_callback,
}
static void quic_session_migrate_callback(session_t *s, session_handle_t new_sh)
Definition: quic.c:1623
static int quic_app_rx_callback(session_t *udp_session)
Definition: quic.c:2079
static int quic_add_segment_callback(u32 client_index, u64 seg_handle)
Definition: quic.c:1694
static void quic_session_disconnect_callback(session_t *s)
Definition: quic.c:1611
static int quic_del_segment_callback(u32 client_index, u64 seg_handle)
Definition: quic.c:1703
static int quic_session_connected_callback(u32 quic_app_index, u32 ctx_index, session_t *udp_session, u8 is_fail)
Definition: quic.c:1538
int quic_session_accepted_callback(session_t *udp_session)
Definition: quic.c:1653
static void quic_session_reset_callback(session_t *s)
Definition: quic.c:1617

Definition at line 2180 of file quic.c.

◆ quic_error_strings

char* quic_error_strings[]
static
Initial value:
= {
#define quic_error(n,s)
quic_error (NONE, "no error")
quic_error (TX_PACKETS, "quic TX packets")
quic_error (RX_PACKETS, "quic RX packets")
quic_error (PACKET_DROP, "quic packet drops")
}
#define quic_error(n, s)

Definition at line 33 of file quic.c.

◆ quic_fifosize

u64 quic_fifosize = 0

Definition at line 2329 of file quic.c.

◆ quic_input_node

vlib_node_registration_t quic_input_node
Initial value:
=
{
.function = quic_node_fn,
.name = "quic-input",
.vector_size = sizeof (u32),
.error_strings = quic_error_strings,
}
static uword quic_node_fn(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: quic.c:2447
unsigned int u32
Definition: types.h:88
vl_api_fib_path_type_t type
Definition: fib_types.api:123
static char * quic_error_strings[]
Definition: quic.c:33
#define ARRAY_LEN(x)
Definition: clib.h:62

(constructor) VLIB_REGISTER_NODE (quic_input_node)

Definition at line 2454 of file quic.c.

◆ quic_main

quic_main_t quic_main
static

Definition at line 39 of file quic.c.

◆ quic_plugin_crypto_command

vlib_cli_command_t quic_plugin_crypto_command
static
Initial value:
=
{
.path = "quic set crypto api",
.short_help = "quic set crypto api [picotls, vpp]",
}
static clib_error_t * quic_plugin_crypto_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: quic.c:2311

(constructor) VLIB_CLI_COMMAND (quic_plugin_crypto_command)

Definition at line 2394 of file quic.c.

◆ quic_plugin_set_fifo_size_command

vlib_cli_command_t quic_plugin_set_fifo_size_command
static
Initial value:
=
{
.path = "quic set fifo-size",
.short_help = "quic set fifo-size N[Kb|Mb|GB] (default 64K)",
}
static clib_error_t * quic_plugin_set_fifo_size_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: quic.c:2331

(constructor) VLIB_CLI_COMMAND (quic_plugin_set_fifo_size_command)

Definition at line 2400 of file quic.c.

◆ quic_plugin_stats_command

vlib_cli_command_t quic_plugin_stats_command
static
Initial value:
=
{
.path = "show quic stats",
.short_help = "show quic stats",
}
static clib_error_t * quic_plugin_showstats_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: quic.c:2372

(constructor) VLIB_CLI_COMMAND (quic_plugin_stats_command)

Definition at line 2406 of file quic.c.

◆ quic_proto

const transport_proto_vft_t quic_proto
static
Initial value:
= {
.connect = quic_connect,
.start_listen = quic_start_listen,
.stop_listen = quic_stop_listen,
.get_connection = quic_connection_get,
.get_listener = quic_listener_get,
.update_time = quic_update_time,
.format_connection = format_quic_connection,
.format_half_open = format_quic_half_open,
.format_listener = format_quic_listener,
.get_transport_endpoint = quic_get_transport_endpoint,
.get_transport_listener_endpoint = quic_get_transport_listener_endpoint,
.transport_options = {
.service_type = TRANSPORT_SERVICE_APP,
},
}
static u32 quic_stop_listen(u32 lctx_index)
Definition: quic.c:1284
static int quic_custom_app_rx_callback(transport_connection_t *tc)
Definition: quic.c:1712
static int quic_connect(transport_endpoint_cfg_t *tep)
Definition: quic.c:1166
static void quic_proto_on_close(u32 ctx_index, u32 thread_index)
Definition: quic.c:1181
static transport_connection_t * quic_connection_get(u32 ctx_index, u32 thread_index)
Definition: quic.c:1305
static u32 quic_start_listen(u32 quic_listen_session_index, transport_endpoint_t *tep)
Definition: quic.c:1225
static u8 * format_quic_connection(u8 *s, va_list *args)
Definition: quic.c:1353
app transport service
static void quic_get_transport_listener_endpoint(u32 listener_index, transport_endpoint_t *tep, u8 is_lcl)
Definition: quic.c:2150
static void quic_update_time(f64 now, u8 thread_index)
Definition: quic.c:787
static int quic_custom_tx_callback(void *s, u32 max_burst_size)
Definition: quic.c:1728
static transport_connection_t * quic_listener_get(u32 listener_index)
Definition: quic.c:1313
apps acting as transports
static u8 * format_quic_listener(u8 *s, va_list *args)
Definition: quic.c:1376
static void quic_get_transport_endpoint(u32 ctx_index, u32 thread_index, transport_endpoint_t *tep, u8 is_lcl)
Definition: quic.c:2167
static u8 * format_quic_half_open(u8 *s, va_list *args)
Definition: quic.c:1364

Definition at line 2191 of file quic.c.

◆ quic_stream_callbacks

const quicly_stream_callbacks_t quic_stream_callbacks
static
Initial value:
= {
.on_destroy = quic_on_stream_destroy,
.on_send_shift = quic_fifo_egress_shift,
.on_send_emit = quic_fifo_egress_emit,
.on_send_stop = quic_on_stop_sending,
.on_receive = quic_on_receive,
.on_receive_reset = quic_on_receive_reset
}
static int quic_on_receive(quicly_stream_t *stream, size_t off, const void *src, size_t len)
Definition: quic.c:520
int quic_fifo_egress_emit(quicly_stream_t *stream, size_t off, void *dst, size_t *len, int *wrote_all)
Definition: quic.c:582
static int quic_on_receive_reset(quicly_stream_t *stream, int err)
Definition: quic.c:504
void quic_fifo_egress_shift(quicly_stream_t *stream, size_t delta)
Definition: quic.c:567
static int quic_on_stop_sending(quicly_stream_t *stream, int err)
Definition: quic.c:488
static void quic_on_stream_destroy(quicly_stream_t *stream, int err)
Definition: quic.c:470

Definition at line 627 of file quic.c.

◆ quicly_vpp_now_cb

quicly_now_t quicly_vpp_now_cb = { quic_get_time }
static

Definition at line 774 of file quic.c.