libwebsockets
Lightweight C library for HTML5 websockets
Toggle main menu visibility
Loading...
Searching...
No Matches
lws-quic.h
Go to the documentation of this file.
1
/*
2
* libwebsockets - small server side websockets and web server implementation
3
*
4
* Copyright (C) 2010 - 2026 Andy Green <andy@warmcat.com>
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to
8
* deal in the Software without restriction, including without limitation the
9
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
* sell copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in
14
* all copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
* IN THE SOFTWARE.
23
*/
24
32
33
enum
lws_tls_quic_secret_type
{
34
LWS_TLS_QUIC_SECRET_CLIENT_EARLY
,
35
LWS_TLS_QUIC_SECRET_CLIENT_HANDSHAKE
,
36
LWS_TLS_QUIC_SECRET_SERVER_HANDSHAKE
,
37
LWS_TLS_QUIC_SECRET_CLIENT_APPLICATION
,
38
LWS_TLS_QUIC_SECRET_SERVER_APPLICATION
,
39
};
40
41
enum
lws_0rtt_status
{
42
LWS_0RTT_STATUS_NONE
,
43
LWS_0RTT_STATUS_ATTEMPTED
,
44
LWS_0RTT_STATUS_ACCEPTED
,
45
LWS_0RTT_STATUS_REJECTED
,
46
};
47
59
typedef
int (*
lws_tls_quic_secret_cb
)(
struct
lws *wsi,
60
enum
lws_tls_quic_secret_type
type,
61
const
uint8_t
*secret,
size_t
secret_len);
62
71
LWS_VISIBLE
LWS_EXTERN
int
72
lws_tls_quic_init
(
struct
lws *wsi,
lws_tls_quic_secret_cb
cb);
73
86
LWS_VISIBLE
LWS_EXTERN
int
87
lws_tls_quic_advance_handshake
(
struct
lws *wsi,
int
level,
88
const
uint8_t
*in,
size_t
in_len,
89
uint8_t
*out,
size_t
*out_len);
90
98
LWS_VISIBLE
LWS_EXTERN
int
99
lws_tls_quic_set_transport_parameters
(
struct
lws *wsi,
const
uint8_t
*tp,
size_t
tp_len);
100
108
LWS_VISIBLE
LWS_EXTERN
int
109
lws_tls_quic_get_transport_parameters
(
struct
lws *wsi,
const
uint8_t
**tp,
size_t
*tp_len);
110
118
LWS_VISIBLE
LWS_EXTERN
enum
lws_0rtt_status
119
lws_tls_0rtt_status
(
struct
lws *wsi);
120
128
LWS_VISIBLE
LWS_EXTERN
int
129
lws_rx_is_early_data
(
struct
lws *wsi);
130
134
LWS_VISIBLE
LWS_EXTERN
int
135
lws_tls_quic_api_test
(
void
);
136
143
LWS_VISIBLE
LWS_EXTERN
int
144
lws_tls_quic_migrate_wsi
(
struct
lws *old_wsi,
struct
lws *new_wsi);
145
154
LWS_VISIBLE
LWS_EXTERN
int
155
lws_quic_initiate_key_update
(
struct
lws *wsi);
156
157
struct
lws_cc_ops
{
158
void (*
init
)(
struct
lws *nwsi);
159
void (*
on_sent
)(
struct
lws *nwsi,
size_t
bytes);
160
void (*
on_ack
)(
struct
lws *nwsi,
size_t
bytes_acked,
lws_usec_t
rtt);
161
void (*
on_loss
)(
struct
lws *nwsi,
size_t
bytes_lost);
162
int (*
can_send
)(
struct
lws *nwsi,
size_t
bytes);
163
lws_usec_t
(*
get_pacing_delay
)(
struct
lws *nwsi,
size_t
bytes_to_send);
164
};
165
166
LWS_VISIBLE
LWS_EXTERN_FOR_DATA
const
struct
lws_cc_ops
lws_cc_ops_newreno
;
167
LWS_VISIBLE
LWS_EXTERN_FOR_DATA
const
struct
lws_cc_ops
lws_cc_ops_cubic
;
168
lws_0rtt_status
lws_0rtt_status
Definition
lws-quic.h:41
lws_tls_quic_get_transport_parameters
LWS_VISIBLE LWS_EXTERN int lws_tls_quic_get_transport_parameters(struct lws *wsi, const uint8_t **tp, size_t *tp_len)
lws_tls_quic_api_test
LWS_VISIBLE LWS_EXTERN int lws_tls_quic_api_test(void)
lws_tls_0rtt_status
LWS_VISIBLE LWS_EXTERN enum lws_0rtt_status lws_tls_0rtt_status(struct lws *wsi)
lws_tls_quic_set_transport_parameters
LWS_VISIBLE LWS_EXTERN int lws_tls_quic_set_transport_parameters(struct lws *wsi, const uint8_t *tp, size_t tp_len)
lws_tls_quic_secret_type
lws_tls_quic_secret_type
Definition
lws-quic.h:33
lws_tls_quic_migrate_wsi
LWS_VISIBLE LWS_EXTERN int lws_tls_quic_migrate_wsi(struct lws *old_wsi, struct lws *new_wsi)
lws_rx_is_early_data
LWS_VISIBLE LWS_EXTERN int lws_rx_is_early_data(struct lws *wsi)
lws_quic_initiate_key_update
LWS_VISIBLE LWS_EXTERN int lws_quic_initiate_key_update(struct lws *wsi)
lws_cc_ops_cubic
LWS_VISIBLE LWS_EXTERN_FOR_DATA const struct lws_cc_ops lws_cc_ops_cubic
Definition
lws-quic.h:167
lws_tls_quic_secret_cb
int(* lws_tls_quic_secret_cb)(struct lws *wsi, enum lws_tls_quic_secret_type type, const uint8_t *secret, size_t secret_len)
Definition
lws-quic.h:59
lws_cc_ops_newreno
LWS_VISIBLE LWS_EXTERN_FOR_DATA const struct lws_cc_ops lws_cc_ops_newreno
Definition
lws-quic.h:166
lws_tls_quic_advance_handshake
LWS_VISIBLE LWS_EXTERN int lws_tls_quic_advance_handshake(struct lws *wsi, int level, const uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len)
lws_tls_quic_init
LWS_VISIBLE LWS_EXTERN int lws_tls_quic_init(struct lws *wsi, lws_tls_quic_secret_cb cb)
LWS_0RTT_STATUS_REJECTED
@ LWS_0RTT_STATUS_REJECTED
Definition
lws-quic.h:45
LWS_0RTT_STATUS_NONE
@ LWS_0RTT_STATUS_NONE
Definition
lws-quic.h:42
LWS_0RTT_STATUS_ACCEPTED
@ LWS_0RTT_STATUS_ACCEPTED
Definition
lws-quic.h:44
LWS_0RTT_STATUS_ATTEMPTED
@ LWS_0RTT_STATUS_ATTEMPTED
Definition
lws-quic.h:43
LWS_TLS_QUIC_SECRET_CLIENT_HANDSHAKE
@ LWS_TLS_QUIC_SECRET_CLIENT_HANDSHAKE
Definition
lws-quic.h:35
LWS_TLS_QUIC_SECRET_CLIENT_APPLICATION
@ LWS_TLS_QUIC_SECRET_CLIENT_APPLICATION
Definition
lws-quic.h:37
LWS_TLS_QUIC_SECRET_SERVER_HANDSHAKE
@ LWS_TLS_QUIC_SECRET_SERVER_HANDSHAKE
Definition
lws-quic.h:36
LWS_TLS_QUIC_SECRET_CLIENT_EARLY
@ LWS_TLS_QUIC_SECRET_CLIENT_EARLY
Definition
lws-quic.h:34
LWS_TLS_QUIC_SECRET_SERVER_APPLICATION
@ LWS_TLS_QUIC_SECRET_SERVER_APPLICATION
Definition
lws-quic.h:38
LWS_EXTERN_FOR_DATA
#define LWS_EXTERN_FOR_DATA
Definition
libwebsockets.h:317
LWS_EXTERN
#define LWS_EXTERN
Definition
libwebsockets.h:296
lws_usec_t
int64_t lws_usec_t
Definition
libwebsockets.h:710
uint8_t
unsigned char uint8_t
Definition
libwebsockets.h:706
LWS_VISIBLE
#define LWS_VISIBLE
Definition
libwebsockets.h:291
lws_cc_ops
Definition
lws-quic.h:157
lws_cc_ops::can_send
int(* can_send)(struct lws *nwsi, size_t bytes)
Definition
lws-quic.h:162
lws_cc_ops::init
void(* init)(struct lws *nwsi)
Definition
lws-quic.h:158
lws_cc_ops::get_pacing_delay
lws_usec_t(* get_pacing_delay)(struct lws *nwsi, size_t bytes_to_send)
Definition
lws-quic.h:163
lws_cc_ops::on_loss
void(* on_loss)(struct lws *nwsi, size_t bytes_lost)
Definition
lws-quic.h:161
lws_cc_ops::on_ack
void(* on_ack)(struct lws *nwsi, size_t bytes_acked, lws_usec_t rtt)
Definition
lws-quic.h:160
lws_cc_ops::on_sent
void(* on_sent)(struct lws *nwsi, size_t bytes)
Definition
lws-quic.h:159
include
libwebsockets
lws-quic.h
Generated on
for libwebsockets by
1.18.0