46#define LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT ((1ll << 1) | \
51#define LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME (1ll << 2)
53#define LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT ((1ll << 3) | \
61#define LWS_SERVER_OPTION_LIBEV (1ll << 4)
63#define LWS_SERVER_OPTION_DISABLE_IPV6 (1ll << 5)
65#define LWS_SERVER_OPTION_DISABLE_OS_CA_CERTS (1ll << 6)
68#define LWS_SERVER_OPTION_PEER_CERT_NOT_REQUIRED (1ll << 7)
70#define LWS_SERVER_OPTION_VALIDATE_UTF8 (1ll << 8)
72#define LWS_SERVER_OPTION_SSL_ECDH ((1ll << 9) | \
75#define LWS_SERVER_OPTION_LIBUV (1ll << 10)
77#define LWS_SERVER_OPTION_REDIRECT_HTTP_TO_HTTPS ((1ll << 11) |\
88#define LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT (1ll << 12)
90#define LWS_SERVER_OPTION_EXPLICIT_VHOSTS (1ll << 13)
93#define LWS_SERVER_OPTION_UNIX_SOCK (1ll << 14)
95#define LWS_SERVER_OPTION_STS (1ll << 15)
98#define LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY (1ll << 16)
100#define LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE (1ll << 17)
102#define LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN (1ll << 18)
108#define LWS_SERVER_OPTION_JUST_USE_RAW_ORIGIN (1ll << 19)
115#define LWS_SERVER_OPTION_FALLBACK_TO_RAW (1ll << 20)
116#define LWS_SERVER_OPTION_FALLBACK_TO_APPLY_LISTEN_ACCEPT_CONFIG (1ll << 20)
129#define LWS_SERVER_OPTION_LIBEVENT (1ll << 21)
132#define LWS_SERVER_OPTION_ONLY_RAW (1ll << 22)
133#define LWS_SERVER_OPTION_ADOPT_APPLY_LISTEN_ACCEPT_CONFIG (1ll << 22)
146#define LWS_SERVER_OPTION_ALLOW_LISTEN_SHARE (1ll << 23)
152#define LWS_SERVER_OPTION_CREATE_VHOST_SSL_CTX (1ll << 24)
159#define LWS_SERVER_OPTION_SKIP_PROTOCOL_INIT (1ll << 25)
164#define LWS_SERVER_OPTION_IGNORE_MISSING_CERT (1ll << 26)
170#define LWS_SERVER_OPTION_VHOST_UPG_STRICT_HOST_CHECK (1ll << 27)
181#define LWS_SERVER_OPTION_HTTP_HEADERS_SECURITY_BEST_PRACTICES_ENFORCE (1ll << 28)
198#define LWS_SERVER_OPTION_ALLOW_HTTP_ON_HTTPS_LISTENER (1ll << 29)
206#define LWS_SERVER_OPTION_FAIL_UPON_UNABLE_TO_BIND (1ll << 30)
211#define LWS_SERVER_OPTION_H2_JUST_FIX_WINDOW_UPDATE_OVERFLOW (1ll << 31)
215#define LWS_SERVER_OPTION_VH_H2_HALF_CLOSED_LONG_POLL (1ll << 32)
220#define LWS_SERVER_OPTION_DISABLE_UTF8_VALIDATION (1ll << 34)
227#define LWS_SERVER_OPTION_GLIB (1ll << 33)
230#define LWS_SERVER_OPTION_QUIC_FORCE_RETRY (1ll << 52)
234#define LWS_SERVER_OPTION_H2_PRIOR_KNOWLEDGE (1ll << 34)
239#define LWS_SERVER_OPTION_NO_LWS_SYSTEM_STATES (1ll << 35)
243#define LWS_SERVER_OPTION_SS_PROXY (1ll << 36)
246#define LWS_SERVER_OPTION_SDEVENT (1ll << 37)
249#define LWS_SERVER_OPTION_ULOOP (1ll << 38)
252#define LWS_SERVER_OPTION_DISABLE_TLS_SESSION_CACHE (1ll << 39)
255#define LWS_SERVER_OPTION_OPENSSL_AUTO_DH_PARAMETERS (1ll << 40)
262#define LWS_SERVER_OPTION_MBEDTLS_VERIFY_CLIENT_CERT_POST_HANDSHAKE ((1ll << 41) | \
272#define LWS_SERVER_OPTION_VH_INSTANTIATE_ALL_PROTOCOLS (1ll << 42)
275#define LWS_SERVER_OPTION_VH_SKIP_PRIV_DROP (1ll << 43)
279#define LWS_SERVER_OPTION_CMDLINE_FORCE_H1 (1ll << 44)
282#define LWS_SERVER_OPTION_CMDLINE_FORCE_H2 (1ll << 45)
285#define LWS_SERVER_OPTION_CMDLINE_FORCE_H3 (1ll << 46)
288#define LWS_SERVER_OPTION_ALLOW_EARLY_DATA (1ll << 47)
295#define LWS_SERVER_OPTION_CPD_BYPASS (1ll << 48)
298#define LWS_SERVER_OPTION_QUIC_PAD_CRYPTO (1ll << 49)
301#define LWS_SERVER_OPTION_QUIC_EARLY_KEY_UPDATE (1ll << 51)
304#define LWS_SERVER_OPTION_QUIC_LATEST_VERSION (1ll << 50)
307#define LWS_SERVER_OPTION_SNI_FALLBACK (1ll << 53)
318#define LWS_SERVER_OPTION_DISABLE_IPV4 (1ll << 54)
325#define LWS_SERVER_OPTION_NO_HTTP_STREAM_COMPRESSION (1ll << 55)
337#define lws_check_opt(c, f) ((((uint64_t)c) & ((uint64_t)f)) == ((uint64_t)f))
347#if defined(LWS_WITH_NETWORK)
348typedef int (*lws_peer_limits_notify_t)(
struct lws_context *ctx,
365 uint64_t consumed_bytes, uint64_t time_since_last_update_us);
371#define LWS_PT_SERV_BUF_SIZE_MAX (16u * 1024u * 1024u)
407#if defined(LWS_WITH_NETLINK)
408#define LWS_FD_LIMIT_INTERNAL_NETLINK 1
410#define LWS_FD_LIMIT_INTERNAL_NETLINK 0
412#if defined(LWS_WITH_SYS_ASYNC_DNS)
413#define LWS_FD_LIMIT_INTERNAL_ADNS 2
415#define LWS_FD_LIMIT_INTERNAL_ADNS 0
417#if defined(LWS_WITH_SYS_NTPCLIENT)
418#define LWS_FD_LIMIT_INTERNAL_NTP 1
420#define LWS_FD_LIMIT_INTERNAL_NTP 0
422#if defined(LWS_WITH_SYS_DHCP_CLIENT)
423#define LWS_FD_LIMIT_INTERNAL_DHCP 1
425#define LWS_FD_LIMIT_INTERNAL_DHCP 0
428#define LWS_FD_LIMIT_INTERNAL (1 + 1 + \
429 LWS_FD_LIMIT_INTERNAL_NETLINK + \
430 LWS_FD_LIMIT_INTERNAL_ADNS + \
431 LWS_FD_LIMIT_INTERNAL_NTP + \
432 LWS_FD_LIMIT_INTERNAL_DHCP)
434#define LWS_FD_LIMIT_PER_THREAD_MIN (LWS_FD_LIMIT_INTERNAL + 8 )
437#define LWS_HTTP_BODY_MIN_RATE_NONE 0xffffffffu
439#define LWS_MUX_RESET_LIMIT_NONE 0xffffu
442#if defined(LWS_WITH_NETWORK)
456#if defined(LWS_ROLE_WS)
461#if defined(LWS_ROLE_H1) || defined(LWS_ROLE_H2) || defined(LWS_ROLE_H3)
467 const char *http_proxy_address;
489 const char *log_filepath;
501#if defined(LWS_ROLE_H1) || defined(LWS_ROLE_H2) || defined(LWS_ROLE_H3)
504 const char *server_string;
508 const char *error_document_404;
526#if defined(LWS_ROLE_H1) || defined(LWS_ROLE_H2) || defined(LWS_ROLE_H3)
527 unsigned int http_proxy_port;
529 unsigned int max_http_header_data2;
534 unsigned int max_http_header_pool2;
541 int keepalive_timeout;
545#if defined(LWS_ROLE_H1) || defined(LWS_ROLE_H2) || defined(LWS_ROLE_H3)
556 unsigned short max_http_header_data;
559 unsigned short max_http_header_pool;
569#if defined(LWS_WITH_TLS)
570 const char *ssl_private_key_password;
575 const char *ssl_cert_filepath;
587 const char *ssl_private_key_filepath;
606 const char *ssl_ca_filepath;
615 const char *ssl_cipher_list;
631 const char *tls_ciphers_iana;
637 const char *ecdh_curve;
651 const char *client_ecdh_curve;
661 const char *tls1_3_plus_cipher_list;
672 const void *server_ssl_cert_mem;
676 const void *server_ssl_private_key_mem;
681 const void *server_ssl_ca_mem;
686 long ssl_options_set;
688 long ssl_options_clear;
690 int simultaneous_ssl_restriction;
698 int simultaneous_ssl_handshake_restriction;
701 int ssl_info_event_mask;
707 unsigned int server_ssl_cert_mem_len;
710 unsigned int server_ssl_private_key_mem_len;
712 unsigned int server_ssl_ca_mem_len;
724#if defined(LWS_WITH_CLIENT)
725 const char *client_ssl_private_key_password;
728 const char *client_ssl_cert_filepath;
731 const void *client_ssl_cert_mem;
734 unsigned int client_ssl_cert_mem_len;
737 const char *client_ssl_private_key_filepath;
743 const void *client_ssl_key_mem;
746 const char *client_ssl_ca_filepath;
748 const void *client_ssl_ca_mem;
754 const char *client_ssl_cipher_list;
765 const char *client_tls_ciphers_iana;
771 const char *client_tls_1_3_plus_cipher_list;
781 long ssl_client_options_set;
783 long ssl_client_options_clear;
787 unsigned int client_ssl_ca_mem_len;
790 unsigned int client_ssl_key_mem_len;
796#if !defined(LWS_WITH_MBEDTLS) && !defined(LWS_WITH_BEARSSL) && \
797 !defined(LWS_WITH_OPENHITLS)
798 SSL_CTX *provided_client_ssl_ctx;
803#elif defined(LWS_WITH_MBEDTLS)
804 const char *mbedtls_client_preload_filepath;
827 unsigned int timeout_secs;
832 unsigned int connect_timeout_secs;
847 unsigned int timeout_secs_ah_idle;
852#if defined(LWS_WITH_TLS_SESSIONS)
906#if defined(LWS_WITH_PLUGINS)
907 const char *
const *plugin_dirs;
928#if defined(LWS_WITH_FILE_OPS)
938#if defined(LWS_WITH_SOCKS5)
939 const char *socks_proxy_address;
943 unsigned int socks_proxy_port;
949#if defined(LWS_HAVE_SYS_CAPABILITY_H) && defined(LWS_HAVE_LIBCAP)
1031#if defined(LWS_WITH_SYS_STATE)
1032 lws_state_notify_link_t *
const *register_notifier_list;
1037#if defined(LWS_WITH_SECURE_STREAMS)
1038#if defined(LWS_WITH_SECURE_STREAMS_STATIC_POLICY_ONLY)
1042 const char *pss_policies_json;
1050 const struct lws_ss_plugin **pss_plugins;
1053 const char *ss_proxy_bind;
1077 const char *ss_proxy_address;
1089 const void *txp_ssproxy_info;
1096#if defined(LWS_WITH_SECURE_STREAMS_PROXY_API)
1103#if defined(LWS_WITH_PEER_LIMITS)
1104 lws_peer_limits_notify_t pl_notify_cb;
1119 unsigned short ip_limit_ah;
1127 unsigned short ip_limit_wsi;
1146#if defined(LWS_WITH_SYS_FAULT_INJECTION)
1156#if defined(LWS_WITH_SYS_SMD)
1164 void *early_smd_opaque;
1176#if defined(LWS_WITH_SYS_METRICS)
1179 const char *metrics_prefix;
1204#if defined(LWS_WITH_TLS_JIT_TRUST)
1205 size_t jitt_cache_max_footprint;
1208 int vh_idle_grace_ms;
1217#if defined(LWS_WITH_CACHE_NSCOOKIEJAR) && defined(LWS_WITH_CLIENT)
1218 const char *http_nsc_filepath;
1221 size_t http_nsc_heap_max_footprint;
1224 size_t http_nsc_heap_max_items;
1227 size_t http_nsc_heap_max_payload;
1232#if defined(LWS_WITH_CACHE_BLOB)
1233 const char *dlo_asset_cache_dir;
1240 size_t dlo_asset_cache_max_footprint;
1245#if defined(LWS_WITH_SYS_ASYNC_DNS)
1246 const char **async_dns_servers;
1256 unsigned int win32_connect_check_interval_usec;
1278#if defined(LWS_WITH_NETWORK)
1294#if defined(LWS_WITH_ASYNC_QUEUE)
1558#if defined(LWS_WITH_PEER_LIMITS)
1559 unsigned int unproven_limit_wsi;
1583#if !defined(__STRICT_ANSI__)
1801 char **config_strings,
int *len);
1827 const char *d,
char **config_strings,
int *len);
1858 char **config_strings,
int *len);
1884 struct lws_context *context,
1886 const char *d,
char **config_strings,
int *len);
2128#define AUTH_MODE_MASK 0xF0000000
2196#if defined(LWS_WITH_JOSE)
2197 const char *interceptor_path;
uint8_t client_ssl_ctx_unshared
const lws_system_ops_t * system_ops
const char * ss_proxy_perms
unsigned int max_http_header_pool_per_mux
const struct lws_plugin_evlib * event_lib_custom
const char * quic_preferred_addresses
void(* finalize)(struct lws_vhost *vh, void *arg)
uint16_t mux_reset_window_secs
uint32_t quic_0rtt_max_size
uint8_t tls_passthrough_proxy_v2
uint32_t quic_initial_cwnd
unsigned int fd_limit_per_thread
uint8_t ss_proxy_tcp_allow_remote
const char * listen_accept_protocol
const struct lws_protocols ** pprotocols
const char * proxy_v2_trusted
const struct lws_plugin_protocol *const * plugins
struct lws_context ** pcontext
unsigned int pt_serv_buf_size
lws_sockfd_type vh_listen_sockfd
const char * tls_passthrough
const struct lws_io_ops * io_ops
lws_quic_tx_credit_cb_t quic_tx_credit_cb
const char * listen_accept_role
uint32_t http_body_min_rate
const lws_retry_bo_t * retry_and_idle_policy
void * external_baggage_free_on_destroy
const char * unix_socket_perms
const struct lws_protocol_vhost_options * next
uint16_t http_body_grace_secs
unsigned int http_response_stall_secs
uint32_t tls_cert_grace_secs
void(* signal_cb)(void *event_lib_handle, int signum)
unsigned int count_threads
uint32_t quic_max_idle_timeout_ms
const struct lws_cc_ops * quic_cc_ops
uint64_t max_http_body_size
const struct lws_protocol_vhost_options * options
LWS_VISIBLE LWS_EXTERN void lws_context_deprecate(struct lws_context *context, lws_reload_func cb)
LWS_VISIBLE LWS_EXTERN void lws_context_default_loop_run_destroy(struct lws_context *cx)
int(* lws_reload_func)(void)
LWS_VISIBLE LWS_EXTERN int lwsws_get_config_globals_defs(struct lws_lejp_conf_defs *defs, struct lws_context_creation_info *info, const char *d, char **config_strings, int *len)
LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_get_vhost(struct lws *wsi)
LWS_VISIBLE LWS_EXTERN int lwsws_get_config_vhosts(struct lws_context *context, struct lws_context_creation_info *info, const char *d, char **config_strings, int *len)
LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_create_vhost(struct lws_context *context, const struct lws_context_creation_info *info)
LWS_VISIBLE LWS_EXTERN int lws_cmdline_passfail(int argc, const char **argv, int actual)
LWS_VISIBLE LWS_EXTERN void * lws_vhost_user(struct lws_vhost *vhost)
uint64_t(* lws_quic_tx_credit_cb_t)(struct lws *wsi, uint64_t current_window, uint64_t consumed_bytes, uint64_t time_since_last_update_us)
LWS_VISIBLE LWS_EXTERN int lws_set_proxy(struct lws_vhost *vhost, const char *proxy)
LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(const struct lws_context_creation_info *info)
LWS_VISIBLE LWS_EXTERN void lws_default_loop_exit(struct lws_context *cx)
LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
LWS_VISIBLE LWS_EXTERN int lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d, char **config_strings, int *len)
LWS_VISIBLE LWS_EXTERN void lws_tls_cleanup_process(void)
LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_select_vhost_sni(struct lws_vhost *lv, const char *servername)
LWS_VISIBLE LWS_EXTERN int lws_set_socks(struct lws_vhost *vhost, const char *socks)
LWS_VISIBLE LWS_EXTERN const char * lws_vh_tag(struct lws_vhost *vh)
LWS_VISIBLE LWS_EXTERN const char * lws_get_vhost_name(struct lws_vhost *vhost)
LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_get_vhost_by_name(struct lws_context *context, const char *name)
LWS_VISIBLE LWS_EXTERN int lws_get_vhost_port(struct lws_vhost *vhost)
LWS_VISIBLE LWS_EXTERN void lws_vhost_destroy(struct lws_vhost *vh)
LWS_VISIBLE LWS_EXTERN const char * lws_get_vhost_iface(struct lws_vhost *vhost)
LWS_VISIBLE LWS_EXTERN int lws_systemd_inherited_fd(unsigned int index, struct lws_context_creation_info *info)
LWS_VISIBLE LWS_EXTERN void _lws_context_info_defaults(struct lws_context_creation_info *info, const char *sspol)
LWS_VISIBLE LWS_EXTERN int lwsws_get_config_vhosts_defs(struct lws_lejp_conf_defs *defs, struct lws_context *context, struct lws_context_creation_info *info, const char *d, char **config_strings, int *len)
LWS_VISIBLE LWS_EXTERN int lws_context_is_deprecated(struct lws_context *context)
LWS_VISIBLE LWS_EXTERN int lws_context_is_being_destroyed(struct lws_context *context)
LWS_VISIBLE LWS_EXTERN void * lws_context_user(struct lws_context *context)
LWS_VISIBLE LWS_EXTERN void * lws_get_vhost_user(struct lws_vhost *vhost)
int(* lws_context_ready_cb_t)(struct lws_context *context)
struct lws_dll2_owner lws_dll2_owner_t
struct lws_log_cx lws_log_cx_t
const struct lws_http_mount * mount_next
const struct lws_protocol_vhost_options * interpret
unsigned int keepalive_timeout
const char * basic_auth_login_file
const struct lws_protocol_vhost_options * extra_mimetypes
uint64_t max_http_body_size
unsigned char origin_protocol
unsigned int cache_reusable
unsigned int no_ws_upgrades
unsigned int cache_intermediaries
const char * cgi_chroot_path
unsigned char mountpoint_len
const struct lws_protocol_vhost_options * headers
unsigned int cache_revalidate
const struct lws_protocol_vhost_options * cgienv
LWS_VISIBLE LWS_EXTERN void lws_vhost_set_mounts(struct lws_vhost *v, const struct lws_http_mount *mounts)
@ LWSAUTHM_BASIC_AUTH_CALLBACK
struct lws_retry_bo lws_retry_bo_t
int(* lws_smd_notification_cb_t)(void *opaque, lws_smd_class_t _class, lws_usec_t timestamp, void *buf, size_t len)
struct lws_system_ops lws_system_ops_t