litespeed-quic/src/liblsquic/lsquic_full_conn.h

61 lines
2.1 KiB
C

/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */
#ifndef LSQUIC_FULL_CONN_H
#define LSQUIC_FULL_CONN_H
struct lsquic_conn;
struct lsquic_engine_public;
struct lsquic_conn *
lsquic_gquic_full_conn_client_new (struct lsquic_engine_public *,
unsigned versions,
unsigned flags /* Only FC_SERVER and FC_HTTP */,
const char *hostname, unsigned short max_packet_size,
int is_ipv4,
const unsigned char *sess_resume, size_t sess_resume_len);
struct lsquic_conn *
lsquic_ietf_full_conn_client_new (struct lsquic_engine_public *,
unsigned versions,
unsigned flags /* Only FC_SERVER and FC_HTTP */,
const char *hostname, unsigned short base_plpmtu, int is_ipv4,
const unsigned char *sess_resume, size_t,
const unsigned char *token, size_t, void* peer_ctx);
typedef struct lsquic_conn *
(*server_conn_ctor_f) (struct lsquic_engine_public *,
unsigned flags /* Only FC_SERVER and FC_HTTP */,
struct lsquic_conn *mini_conn);
struct lsquic_conn *
lsquic_gquic_full_conn_server_new (struct lsquic_engine_public *,
unsigned flags /* Only FC_SERVER and FC_HTTP */,
struct lsquic_conn *mini_conn);
struct lsquic_conn *
lsquic_ietf_full_conn_server_new (struct lsquic_engine_public *,
unsigned flags /* Only FC_SERVER and FC_HTTP */,
struct lsquic_conn *mini_conn);
struct dcid_elem
{
/* This is never both in the hash and on the retirement list */
union {
struct lsquic_hash_elem hash_el;
TAILQ_ENTRY(dcid_elem) next_to_ret;
} de_u;
#define de_hash_el de_u.hash_el
#define de_next_to_ret de_u.next_to_ret
lsquic_cid_t de_cid;
unsigned de_seqno;
enum {
DE_SRST = 1 << 0, /* de_srst is set */
DE_ASSIGNED = 1 << 1, /* de_cid has been assigned to a path */
} de_flags;
unsigned char de_srst[IQUIC_SRESET_TOKEN_SZ];
};
int
lsquic_gquic_full_conn_srej (struct lsquic_conn *);
#endif