188 #define LWS_SS_MTU 1540
190 struct lws_ss_handle;
191 typedef uint32_t lws_ss_tx_ordinal_t;
201 LWSSSCS_CREATING = 1,
202 LWSSSCS_DISCONNECTED,
210 LWSSSCS_ALL_RETRIES_FAILED,
211 LWSSSCS_QOS_ACK_REMOTE,
212 LWSSSCS_QOS_NACK_REMOTE,
213 LWSSSCS_QOS_ACK_LOCAL,
214 LWSSSCS_QOS_NACK_LOCAL,
218 LWSSSCS_SERVER_UPGRADE,
225 LWSSSCS_USER_BASE = 1000
229 LWSSS_FLAG_SOM = (1 << 0),
231 LWSSS_FLAG_EOM = (1 << 1),
233 LWSSS_FLAG_POLL = (1 << 2),
235 LWSSS_FLAG_RELATED_START = (1 << 3),
238 LWSSS_FLAG_RELATED_END = (1 << 4),
241 LWSSS_FLAG_RIDESHARE = (1 << 5),
244 LWSSS_FLAG_PERF_JSON = (1 << 6),
260 LWSSS_SER_RXPRE_RX_PAYLOAD = 0x55,
261 LWSSS_SER_RXPRE_CREATE_RESULT,
262 LWSSS_SER_RXPRE_CONNSTATE,
263 LWSSS_SER_RXPRE_TXCR_UPDATE,
264 LWSSS_SER_RXPRE_METADATA,
265 LWSSS_SER_RXPRE_TLSNEG_ENCLAVE_SIGN,
266 LWSSS_SER_RXPRE_PERF,
270 LWSSS_SER_TXPRE_STREAMTYPE = 0xaa,
271 LWSSS_SER_TXPRE_ONWARD_CONNECT,
272 LWSSS_SER_TXPRE_DESTROYING,
273 LWSSS_SER_TXPRE_TX_PAYLOAD,
274 LWSSS_SER_TXPRE_METADATA,
275 LWSSS_SER_TXPRE_TXCR_UPDATE,
276 LWSSS_SER_TXPRE_TIMEOUT_UPDATE,
277 LWSSS_SER_TXPRE_PAYLOAD_LENGTH_HINT,
278 LWSSS_SER_TXPRE_TLSNEG_ENCLAVE_SIGNED,
282 LPCSPROX_WAIT_INITIAL_TX = 1,
283 LPCSPROX_REPORTING_FAIL,
284 LPCSPROX_REPORTING_OK,
285 LPCSPROX_OPERATIONAL,
288 LPCSCLI_SENDING_INITIAL_TX,
289 LPCSCLI_WAITING_CREATE_RESULT,
290 LPCSCLI_LOCAL_CONNECTED,
291 LPCSCLI_ONWARD_CONNECT,
294 } lws_ss_conn_states_t;
301 typedef enum lws_ss_state_return {
302 LWSSSSRET_TX_DONT_SEND = 1,
305 LWSSSSRET_DISCONNECT_ME = -1,
306 LWSSSSRET_DESTROY_ME = -2,
307 } lws_ss_state_return_t;
338 typedef lws_ss_state_return_t (*lws_sscb_rx)(
void *userobj,
const uint8_t *buf,
339 size_t len,
int flags);
340 typedef lws_ss_state_return_t (*lws_sscb_tx)(
void *userobj,
341 lws_ss_tx_ordinal_t ord,
342 uint8_t *buf,
size_t *len,
344 typedef lws_ss_state_return_t (*lws_sscb_state)(
void *userobj,
void *h_src,
345 lws_ss_constate_t state,
346 lws_ss_tx_ordinal_t ack);
359 #if defined(LWS_WITH_SECURE_STREAMS_CPP)
365 #if defined(LWS_WITH_SYS_FAULT_INJECTION)
439 LWS_VISIBLE LWS_EXTERN
int
441 void *opaque_user_data,
struct lws_ss_handle **ppss,
442 struct lws_sequencer *seq_owner,
const char **ppayload_fmt);
451 LWS_VISIBLE LWS_EXTERN
void
465 LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t
481 LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t
497 LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t
510 LWS_VISIBLE LWS_EXTERN
struct lws_sequencer *
529 LWS_VISIBLE LWS_EXTERN
int
539 LWS_VISIBLE LWS_EXTERN
const char *
550 LWS_VISIBLE LWS_EXTERN
struct lws_context *
553 #define LWSSS_TIMEOUT_FROM_POLICY 0
570 LWS_VISIBLE LWS_EXTERN
void
580 LWS_VISIBLE LWS_EXTERN
void
592 LWS_VISIBLE LWS_EXTERN
void *
608 LWS_VISIBLE LWS_EXTERN
const char *
637 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
639 const void *value,
size_t len);
653 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
655 const void *value,
size_t len);
684 LWS_VISIBLE LWS_EXTERN
int
686 const void **value,
size_t *len);
707 LWS_VISIBLE LWS_EXTERN
void
710 typedef void (*lws_sssfec_cb)(
struct lws_ss_handle *h,
void *arg);
724 LWS_VISIBLE LWS_EXTERN
void
753 LWS_VISIBLE LWS_EXTERN
void
755 lws_sscb_state state);
766 LWS_VISIBLE LWS_EXTERN
int
779 LWS_VISIBLE LWS_EXTERN
int
782 LWS_VISIBLE LWS_EXTERN
const char *
783 lws_ss_tag(
struct lws_ss_handle *h);
786 #if defined(LWS_WITH_SECURE_STREAMS_AUTH_SIGV4)
800 LWS_VISIBLE LWS_EXTERN
int
801 lws_ss_sigv4_set_aws_key(
struct lws_context* context, uint8_t idx,
802 const char * keyid,
const char * key);
820 LWS_VISIBLE LWS_EXTERN
int
821 lws_aws_filesystem_credentials_helper(
const char *path,
const char *kid,
822 const char *ak,
char **aws_keyid,
LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t lws_ss_request_tx(struct lws_ss_handle *pss)
LWS_VISIBLE LWS_EXTERN void lws_ss_destroy(struct lws_ss_handle **ppss)
LWS_VISIBLE LWS_EXTERN void lws_ss_change_handlers(struct lws_ss_handle *h, lws_sscb_rx rx, lws_sscb_tx tx, lws_sscb_state state)
LWS_VISIBLE LWS_EXTERN int lws_ss_add_peer_tx_credit(struct lws_ss_handle *h, int32_t add)
LWS_VISIBLE LWS_EXTERN int lws_ss_create(struct lws_context *context, int tsi, const lws_ss_info_t *ssi, void *opaque_user_data, struct lws_ss_handle **ppss, struct lws_sequencer *seq_owner, const char **ppayload_fmt)
LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t lws_ss_client_connect(struct lws_ss_handle *h)
LWS_VISIBLE LWS_EXTERN int lws_ss_proxy_create(struct lws_context *context, const char *bind, int port)
LWS_VISIBLE LWS_EXTERN void lws_ss_start_timeout(struct lws_ss_handle *h, unsigned int timeout_ms)
LWS_VISIBLE LWS_EXTERN void * lws_ss_to_user_object(struct lws_ss_handle *h)
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_ss_alloc_set_metadata(struct lws_ss_handle *h, const char *name, const void *value, size_t len)
LWS_VISIBLE LWS_EXTERN void lws_ss_cancel_timeout(struct lws_ss_handle *h)
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_ss_set_metadata(struct lws_ss_handle *h, const char *name, const void *value, size_t len)
LWS_VISIBLE LWS_EXTERN void lws_ss_server_foreach_client(struct lws_ss_handle *h, lws_sssfec_cb cb, void *arg)
LWS_VISIBLE LWS_EXTERN const char * lws_ss_rideshare(struct lws_ss_handle *h)
LWS_VISIBLE LWS_EXTERN struct lws_context * lws_ss_get_context(struct lws_ss_handle *h)
LWS_VISIBLE LWS_EXTERN int lws_ss_get_est_peer_tx_credit(struct lws_ss_handle *h)
LWS_VISIBLE LWS_EXTERN struct lws_sequencer * lws_ss_get_sequencer(struct lws_ss_handle *h)
LWS_VISIBLE LWS_EXTERN const char * lws_ss_state_name(int state)
LWS_VISIBLE LWS_EXTERN void lws_ss_server_ack(struct lws_ss_handle *h, int nack)
LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t lws_ss_request_tx_len(struct lws_ss_handle *pss, unsigned long len)
LWS_VISIBLE LWS_EXTERN int lws_ss_get_metadata(struct lws_ss_handle *h, const char *name, const void **value, size_t *len)
@ LWSSSINFLAGS_REGISTER_SINK
Definition: lws-secure-streams.h:318
@ LWSSSINFLAGS_SERVER
Definition: lws-secure-streams.h:329
@ LWSSSINFLAGS_ACCEPTED
Definition: lws-secure-streams.h:333
@ LWSSSINFLAGS_PROXIED
Definition: lws-secure-streams.h:327
Definition: lws-secure-streams.h:350
lws_sscb_state state
Definition: lws-secure-streams.h:376
uint32_t client_pid
Definition: lws-secure-streams.h:388
size_t handle_offset
Definition: lws-secure-streams.h:353
lws_sscb_tx tx
Definition: lws-secure-streams.h:373
uint8_t sss_protocol_version
Definition: lws-secure-streams.h:393
size_t user_alloc
Definition: lws-secure-streams.h:352
const char * streamtype
Definition: lws-secure-streams.h:351
int manual_initial_tx_credit
Definition: lws-secure-streams.h:380
lws_sscb_rx rx
Definition: lws-secure-streams.h:371
size_t opaque_user_data_offset
Definition: lws-secure-streams.h:355
Definition: lws-secure-streams-policy.h:239
uint32_t flags
Definition: lws-secure-streams-policy.h:361