2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
33#if defined(STANDALONE)
34struct lws_context_standalone;
35#define lws_context lws_context_standalone
38#define LWSSSS_VERSION 1
42
43
44
45
46
47
48
49
50
51
52
56
57
58
59
60
61
62
63
64
65
68
69
70
71
72
73
74
75
76
77
78
81
82
83
84
85
86
87
88
91
92
93
94
95
96
99
100
101
102
103
104
105
106
111
112
113
114
115
116
119
120
124
125
126
127
128
129
130
131
132
135
136
137
138
139
142
143
144
145
146
149
150
151
152
153
154
155
156
157
158
161
162
163
164
165
166
167
168
171
172
173
174
175
176
179
180
181
182
183
184
185
186
189
190
191
192
193
194
215 } lws_ss_conn_states_t;
218
219
220
221
222
223
224
225
226
227
228
229
234
235
236
237
238
242
243
244
245
249
250
251
252
253
257
258
259
260
264
265
266
267
271
272
273
274
275
276
280
281
282
283
287
288
289
290
291
295
296
297
298
299
300
301
302
303
304
308
309
310
316struct lws_sss_proxy_conn;
319struct lws_sspc_handle;
322
323
324
325
326
327
328
329
330
331
332
333
341} lws_txp_path_client_t;
349} lws_txp_path_proxy_t;
352
353
359 struct lws_sspc_handle *h);
368
388} lws_transport_client_ops_t;
391
392
399 lws_txp_path_proxy_t *txp_ppath,
const void *aux,
400 const char *bind,
int port);
402
407 #if defined(LWS_WITH_SYS_FAULT_INJECTION)
414 struct lws_ss_handle *h);
420#if defined(LWS_WITH_SYS_FAULT_INJECTION)
427
428
432#if defined(LWS_WITH_SYS_FAULT_INJECTION)
445} lws_transport_proxy_ops_t;
463#define LWS_MUCH_RANGE 256
480#define LWS_TRANSPORT_MUXCH_MAGIC LWS_FOURCC('T', 'm', 'C', 'h')
495} lws_transport_mux_ch_t;
502#define LWSTMINFO_SERVER (1
<< 0
)
513} lws_transport_info_t;
515#define LWS_TRANSPORT_MUX_MAGIC LWS_FOURCC('I', 's', 'T', 'M')
522 struct lws_context *
cx;
547} lws_transport_mux_t;
561lws_transport_path_client_dump(lws_txp_path_client_t *path,
const char *ctx);
563lws_transport_path_proxy_dump(lws_txp_path_proxy_t *path,
const char *ctx);
565#define lws_transport_path_client_dump(_a, _b)
566#define lws_transport_path_proxy_dump(_a, _b)
570
571
574 int (*
payload)(lws_transport_mux_ch_t *tmc,
const uint8_t *buf,
576 int (*
ch_opens)(lws_transport_mux_ch_t *tmc,
int determination);
580} lws_txp_mux_parse_cbs_t;
584 size_t len,
const lws_txp_mux_parse_cbs_t *cbs);
588 const lws_txp_mux_parse_cbs_t *cbs);
596#if defined(STANDALONE)
uint64_t us_unixtime_peer
@ LPCSCLI_WAITING_CREATE_RESULT
@ LPCSCLI_SENDING_INITIAL_TX
@ LPCSPROX_REPORTING_FAIL
@ LPCSPROX_WAIT_INITIAL_TX
@ LPCSCLI_LOCAL_CONNECTED
lws_sorted_usec_list_t sul
int lws_transport_mux_pending(lws_transport_mux_t *tm, uint8_t *buf, size_t *len, const lws_txp_mux_parse_cbs_t *cbs)
lws_transport_priv_t priv_onw
const struct lws_transport_client_ops * ops_onw
#define LWS_TRANSPORT_MUX_MAGIC
lws_transport_priv_t priv
@ LWSTMC_AWAITING_CLOSE_CHANNEL_ACK
@ LWSTMC_PENDING_CREATE_CHANNEL
@ LWSTMC_PENDING_CLOSE_CHANNEL_ACK
@ LWSTMC_PENDING_CLOSE_CHANNEL
@ LWSTMC_PENDING_CREATE_CHANNEL_NACK
@ LWSTMC_AWAITING_CREATE_CHANNEL_ACK
@ LWSTMC_PENDING_CREATE_CHANNEL_ACK
@ LWSSS_SER_RXPRE_CREATE_RESULT
@ LWSSS_SER_RXPRE_TLSNEG_ENCLAVE_SIGN
@ LWSSS_SER_TXPRE_TXCR_UPDATE
@ LWSSS_SER_TXPRE_DESTROYING
@ LWSSS_SER_RXPRE_RX_PAYLOAD
@ LWSSS_SER_TXPRE_STREAMTYPE
@ LWSSS_SER_RXPRE_METADATA
@ LWSSS_SER_TXPRE_LINK_VALIDITY_PROBE
@ LWSSS_SER_TXPRE_METADATA
@ LWSSS_SER_TXPRE_TLSNEG_ENCLAVE_SIGNED
@ LWSSS_SER_TXPRE_TX_PAYLOAD
@ LWSSS_SER_TXPRE_ONWARD_CONNECT
@ LWSSS_SER_TXPRE_PAYLOAD_LENGTH_HINT
@ LWSSS_SER_RXPRE_CONNSTATE
@ LWSSS_SER_RXPRE_TXCR_UPDATE
@ LWSSS_SER_TXPRE_TIMEOUT_UPDATE
lws_dll2_t list_pending_tx
uint32_t ping_interval_us
lws_dll2_owner_t pending_tx
lws_txp_path_proxy_t txp_ppath
#define LWS_TRANSPORT_MUXCH_MAGIC
lws_transport_priv_t priv_onw
uint64_t us_unixtime_peer_loc
int lws_transport_mux_rx_parse(lws_transport_mux_t *tm, const uint8_t *buf, size_t len, const lws_txp_mux_parse_cbs_t *cbs)
void lws_transport_mux_request_tx(lws_transport_mux_t *tm)
lws_transport_info_t info
lws_transport_priv_t priv_in
struct lws_transport_info * onward_txp_info
struct lws_transport_mux * mux
const struct lws_transport_proxy_ops * ops_in
const struct lws_transport_client_ops * ops_in
void lws_transport_mux_destroy(lws_transport_mux_t **tm)
lws_transport_priv_t priv_in
enum lwstmc_parser mp_state
lws_transport_mux_t * lws_transport_mux_create(struct lws_context *cx, lws_transport_info_t *info, void *txp_handle)
lws_txp_path_client_t txp_cpath
struct lws_transport_mux * mux
void * lws_transport_priv_t
const struct lws_transport_proxy_ops * ops_onw
const lws_transport_proxy_ops_t lws_transport_mux_proxy_ops
const lws_transport_proxy_ops_t lws_txp_inside_proxy
const lws_transport_client_ops_t lws_txp_inside_sspc
const lws_transport_client_ops_t lws_transport_mux_client_ops
lws_sorted_usec_list_t sul_ping
@ LWSSSS_LLM_CHANNEL_CLOSE
@ LWSSSS_LLM_RESET_TRANSPORT
@ LWSSSS_LLM_CHANNEL_NACK
@ LWSSSS_LLM_CHANNEL_CLOSE_ACK
void(* req_write)(lws_transport_priv_t priv)
int(* event_retry_connect)(lws_txp_path_client_t *path, struct lws_sspc_handle *h)
void(* event_client_up)(lws_transport_priv_t priv)
void(* lost_coherence)(lws_transport_priv_t priv)
void(* event_stream_up)(lws_transport_priv_t priv)
void(* _close)(lws_transport_priv_t priv)
int(* _write)(lws_transport_priv_t priv, uint8_t *buf, size_t len)
void(* event_client_up)(lws_transport_priv_t priv)
void(* proxy_req_write)(lws_transport_priv_t priv)
int(* proxy_check_write_more)(lws_transport_priv_t priv)
int(* proxy_write)(lws_transport_priv_t priv, uint8_t *buf, size_t *len)
int(* destroy_proxy_server)(struct lws_context *context)
int(* txp_can_write)(lws_transport_mux_ch_t *tmc)
int(* ch_opens)(lws_transport_mux_ch_t *tmc, int determination)
int(* ch_closes)(lws_transport_mux_ch_t *tmc)
int(* payload)(lws_transport_mux_ch_t *tmc, const uint8_t *buf, size_t len)
void(* txp_req_write)(lws_transport_mux_t *tm)