libwebsockets
Lightweight C library for HTML5 websockets
Loading...
Searching...
No Matches
lws-context-vhost.h
Go to the documentation of this file.
1/*
2 * libwebsockets - small server side websockets and web server implementation
3 *
4 * Copyright (C) 2010 - 2021 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
39
40/*
41 * NOTE: These public enums are part of the abi. If you want to add one,
42 * add it at where specified so existing users are unaffected.
43 */
44
45
46#define LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT ((1ll << 1) | \
47 (1ll << 12))
48
51#define LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME (1ll << 2)
53#define LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT ((1ll << 3) | \
54 (1ll << 12))
55
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) | \
73 (1ll << 12))
74
75#define LWS_SERVER_OPTION_LIBUV (1ll << 10)
77#define LWS_SERVER_OPTION_REDIRECT_HTTP_TO_HTTPS ((1ll << 11) |\
78 (1ll << 12))
79
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 /* use below name */ (1ll << 20)
116#define LWS_SERVER_OPTION_FALLBACK_TO_APPLY_LISTEN_ACCEPT_CONFIG (1ll << 20)
128
129#define LWS_SERVER_OPTION_LIBEVENT (1ll << 21)
131
132#define LWS_SERVER_OPTION_ONLY_RAW /* Use below name instead */ (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)
197
198#define LWS_SERVER_OPTION_ALLOW_HTTP_ON_HTTPS_LISTENER (1ll << 29)
206#define LWS_SERVER_OPTION_FAIL_UPON_UNABLE_TO_BIND (1ll << 30)
210
211#define LWS_SERVER_OPTION_H2_JUST_FIX_WINDOW_UPDATE_OVERFLOW (1ll << 31)
214
215#define LWS_SERVER_OPTION_VH_H2_HALF_CLOSED_LONG_POLL (1ll << 32)
220#define LWS_SERVER_OPTION_DISABLE_UTF8_VALIDATION (1ll << 34)
224
225 /****** add new things just above ---^ ******/
226
227#define LWS_SERVER_OPTION_GLIB (1ll << 33)
229
230#define LWS_SERVER_OPTION_QUIC_FORCE_RETRY (1ll << 52)
233
234#define LWS_SERVER_OPTION_H2_PRIOR_KNOWLEDGE (1ll << 34)
238
239#define LWS_SERVER_OPTION_NO_LWS_SYSTEM_STATES (1ll << 35)
242
243#define LWS_SERVER_OPTION_SS_PROXY (1ll << 36)
245
246#define LWS_SERVER_OPTION_SDEVENT (1ll << 37)
248
249#define LWS_SERVER_OPTION_ULOOP (1ll << 38)
251
252#define LWS_SERVER_OPTION_DISABLE_TLS_SESSION_CACHE (1ll << 39)
254
255#define LWS_SERVER_OPTION_OPENSSL_AUTO_DH_PARAMETERS (1ll << 40)
261
262#define LWS_SERVER_OPTION_MBEDTLS_VERIFY_CLIENT_CERT_POST_HANDSHAKE ((1ll << 41) | \
263 (1ll << 12))
264
271
272#define LWS_SERVER_OPTION_VH_INSTANTIATE_ALL_PROTOCOLS (1ll << 42)
274
275#define LWS_SERVER_OPTION_VH_SKIP_PRIV_DROP (1ll << 43)
278
279#define LWS_SERVER_OPTION_CMDLINE_FORCE_H1 (1ll << 44)
281
282#define LWS_SERVER_OPTION_CMDLINE_FORCE_H2 (1ll << 45)
284
285#define LWS_SERVER_OPTION_CMDLINE_FORCE_H3 (1ll << 46)
287
288#define LWS_SERVER_OPTION_ALLOW_EARLY_DATA (1ll << 47)
294
295#define LWS_SERVER_OPTION_CPD_BYPASS (1ll << 48)
297
298#define LWS_SERVER_OPTION_QUIC_PAD_CRYPTO (1ll << 49)
300
301#define LWS_SERVER_OPTION_QUIC_EARLY_KEY_UPDATE (1ll << 51)
303
304#define LWS_SERVER_OPTION_QUIC_LATEST_VERSION (1ll << 50)
306
307#define LWS_SERVER_OPTION_SNI_FALLBACK (1ll << 53)
317
318#define LWS_SERVER_OPTION_DISABLE_IPV4 (1ll << 54)
324
325 /****** add new things just above ---^ ******/
326
327
328#define lws_check_opt(c, f) ((((uint64_t)c) & ((uint64_t)f)) == ((uint64_t)f))
329
330struct lws_plat_file_ops;
331struct lws_ss_policy;
332struct lws_ss_plugin;
333struct lws_metric_policy;
334struct lws_sss_ops;
335
336typedef int (*lws_context_ready_cb_t)(struct lws_context *context);
337
338#if defined(LWS_WITH_NETWORK)
339typedef int (*lws_peer_limits_notify_t)(struct lws_context *ctx,
340 lws_sockfd_type sockfd,
341 lws_sockaddr46 *sa46);
342#endif
343
355typedef uint64_t (*lws_quic_tx_credit_cb_t)(struct lws *wsi, uint64_t current_window,
356 uint64_t consumed_bytes, uint64_t time_since_last_update_us);
357
358/*
359 * Largest info->pt_serv_buf_size lws accepts, bigger requests are clamped to
360 * it. Each service thread takes twice this after the context allocation.
361 */
362#define LWS_PT_SERV_BUF_SIZE_MAX (16u * 1024u * 1024u)
363
373/*
374 * Per-service-thread fd budget, for info.fd_limit_per_thread
375 *
376 * A nonzero fd_limit_per_thread selects the small lookup scheme: the fds
377 * table and the fd -> wsi lookup are sized to it instead of to the process
378 * fd limit, and lookups walk the table. The number has to cover more than
379 * the connections the application itself makes.
380 *
381 * LWS_FD_LIMIT_INTERNAL is what lws itself holds on a service thread in this
382 * build: the event pipe, the netlink socket, the async DNS resolver sockets,
383 * the ntp and dhcp client sockets, and the slot it keeps free so a full table
384 * is seen before an accept fails. A nonzero fd_limit_per_thread below it is
385 * raised to it at context creation.
386 *
387 * LWS_FD_LIMIT_PER_THREAD_MIN adds the overhead connections carry beyond
388 * their own fd: the h2 or h3 network connection behind a client stream, the
389 * connection a redirect opens before the first is gone, a listening vhost's
390 * socket or two, and connections lingering in close. Set
391 *
392 * info.fd_limit_per_thread = LWS_FD_LIMIT_PER_THREAD_MIN + n;
393 *
394 * where n is the number of connections you mean to have open at once, or
395 * leave it 0 to size everything to the process fd limit, which suits a
396 * server.
397 */
398#if defined(LWS_WITH_NETLINK)
399#define LWS_FD_LIMIT_INTERNAL_NETLINK 1
400#else
401#define LWS_FD_LIMIT_INTERNAL_NETLINK 0
402#endif
403#if defined(LWS_WITH_SYS_ASYNC_DNS)
404#define LWS_FD_LIMIT_INTERNAL_ADNS 2 /* a v4 and a v6 resolver */
405#else
406#define LWS_FD_LIMIT_INTERNAL_ADNS 0
407#endif
408#if defined(LWS_WITH_SYS_NTPCLIENT)
409#define LWS_FD_LIMIT_INTERNAL_NTP 1
410#else
411#define LWS_FD_LIMIT_INTERNAL_NTP 0
412#endif
413#if defined(LWS_WITH_SYS_DHCP_CLIENT)
414#define LWS_FD_LIMIT_INTERNAL_DHCP 1
415#else
416#define LWS_FD_LIMIT_INTERNAL_DHCP 0
417#endif
418
419#define LWS_FD_LIMIT_INTERNAL (1 /* event pipe */ + 1 /* kept free */ + \
420 LWS_FD_LIMIT_INTERNAL_NETLINK + \
421 LWS_FD_LIMIT_INTERNAL_ADNS + \
422 LWS_FD_LIMIT_INTERNAL_NTP + \
423 LWS_FD_LIMIT_INTERNAL_DHCP)
424
425#define LWS_FD_LIMIT_PER_THREAD_MIN (LWS_FD_LIMIT_INTERNAL + 8 /* overhead */)
426
428#if defined(LWS_WITH_NETWORK)
429 const char *iface;
436 const struct lws_protocols *protocols;
442#if defined(LWS_ROLE_WS)
443 const struct lws_extension *extensions;
446#endif
447#if defined(LWS_ROLE_H1) || defined(LWS_ROLE_H2) || defined(LWS_ROLE_H3)
448 const struct lws_token_limits *token_limits;
453 const char *http_proxy_address;
457 const struct lws_protocol_vhost_options *headers;
460
461 const struct lws_protocol_vhost_options *reject_service_keywords;
468#endif
469 const struct lws_protocol_vhost_options *pvo;
472 const char *log_filepath;
475#if defined(LWS_ROLE_H1) || defined(LWS_ROLE_H2) || defined(LWS_ROLE_H3)
476 const struct lws_http_mount *mounts;
478 const char *server_string;
481
482 const char *error_document_404;
486#endif
487 int port;
499
500#if defined(LWS_ROLE_H1) || defined(LWS_ROLE_H2) || defined(LWS_ROLE_H3)
501 unsigned int http_proxy_port;
503 unsigned int max_http_header_data2;
508 unsigned int max_http_header_pool2;
513#endif
514
515 int keepalive_timeout;
519#if defined(LWS_ROLE_H1) || defined(LWS_ROLE_H2) || defined(LWS_ROLE_H3)
520 uint32_t http2_settings[7];
526
527 unsigned short max_http_header_data;
530 unsigned short max_http_header_pool;
537
538#endif
539
540#if defined(LWS_WITH_TLS)
541 const char *ssl_private_key_password;
546 const char *ssl_cert_filepath;
558 const char *ssl_private_key_filepath;
577 const char *ssl_ca_filepath;
586 const char *ssl_cipher_list;
602 const char *tls_ciphers_iana;
608 const char *ecdh_curve;
622 const char *client_ecdh_curve;
632 const char *tls1_3_plus_cipher_list;
642
643 const void *server_ssl_cert_mem;
647 const void *server_ssl_private_key_mem;
652 const void *server_ssl_ca_mem;
656
657 long ssl_options_set;
659 long ssl_options_clear;
661 int simultaneous_ssl_restriction;
664 int simultaneous_ssl_handshake_restriction;
666 int ssl_info_event_mask;
672 unsigned int server_ssl_cert_mem_len;
675 unsigned int server_ssl_private_key_mem_len;
677 unsigned int server_ssl_ca_mem_len;
679
680 const char *alpn;
687
688
689#if defined(LWS_WITH_CLIENT)
690 const char *client_ssl_private_key_password;
693 const char *client_ssl_cert_filepath;
696 const void *client_ssl_cert_mem;
699 unsigned int client_ssl_cert_mem_len;
702 const char *client_ssl_private_key_filepath;
708 const void *client_ssl_key_mem;
711 const char *client_ssl_ca_filepath;
713 const void *client_ssl_ca_mem;
718
719 const char *client_ssl_cipher_list;
730 const char *client_tls_ciphers_iana;
736 const char *client_tls_1_3_plus_cipher_list;
745
746 long ssl_client_options_set;
748 long ssl_client_options_clear;
750
751
752 unsigned int client_ssl_ca_mem_len;
755 unsigned int client_ssl_key_mem_len;
758
759#endif
760
761#if !defined(LWS_WITH_MBEDTLS) && !defined(LWS_WITH_BEARSSL) && \
762 !defined(LWS_WITH_OPENHITLS)
763 SSL_CTX *provided_client_ssl_ctx;
768#elif defined(LWS_WITH_MBEDTLS)
769 const char *mbedtls_client_preload_filepath;
779#endif
780#endif
781
782 int ka_time;
785 int ka_probes;
789 int ka_interval;
792 unsigned int timeout_secs;
797 unsigned int connect_timeout_secs;
801 int bind_iface;
812 unsigned int timeout_secs_ah_idle;
815#endif /* WITH_NETWORK */
816
817#if defined(LWS_WITH_TLS_SESSIONS)
818 uint32_t tls_session_timeout;
821 uint32_t tls_session_cache_max;
824#endif
825
826 gid_t gid;
829 uid_t uid;
832 uint64_t options;
834 void *user;
843 unsigned int count_threads;
864 const char *vhost_name;
871#if defined(LWS_WITH_PLUGINS)
872 const char * const *plugin_dirs;
875#endif
883
884
885 unsigned int pt_serv_buf_size;
893#if defined(LWS_WITH_FILE_OPS)
894 const struct lws_plat_file_ops *fops;
901#endif
902
903#if defined(LWS_WITH_SOCKS5)
904 const char *socks_proxy_address;
908 unsigned int socks_proxy_port;
912#endif
913
914#if defined(LWS_HAVE_SYS_CAPABILITY_H) && defined(LWS_HAVE_LIBCAP)
915 cap_value_t caps[4];
922 char count_caps;
925#endif
940 void (*signal_cb)(void *event_lib_handle, int signum);
946 struct lws_context **pcontext;
952 void (*finalize)(struct lws_vhost *vh, void *arg);
970 const struct lws_protocols **pprotocols;
980
981 const char *username;
983 const char *groupname;
985 const char *unix_socket_perms;
996#if defined(LWS_WITH_SYS_STATE)
997 lws_state_notify_link_t * const *register_notifier_list;
1001#endif
1002#if defined(LWS_WITH_SECURE_STREAMS)
1003#if defined(LWS_WITH_SECURE_STREAMS_STATIC_POLICY_ONLY)
1004 const struct lws_ss_policy *pss_policies;
1006#else
1007 const char *pss_policies_json;
1014#endif
1015 const struct lws_ss_plugin **pss_plugins;
1018 const char *ss_proxy_bind;
1023 const char *ss_proxy_address;
1025 uint16_t ss_proxy_port; /* 0 = if connecting to ss proxy, do it via a
1026 * Unix Domain Socket, "+@proxy.ss.lws" if ss_proxy_bind is NULL else
1027 * the socket path given in ss_proxy_bind (start it with a + or +@);
1028 * nonzero means connect via a tcp socket to the tcp address in
1029 * ss_proxy_bind and the given port */
1030 const struct lws_transport_proxy_ops *txp_ops_ssproxy;
1033 const void *txp_ssproxy_info;
1035 const struct lws_transport_client_ops *txp_ops_sspc;
1038#endif
1039
1040#if defined(LWS_WITH_SECURE_STREAMS_PROXY_API)
1041#endif
1042
1047#if defined(LWS_WITH_PEER_LIMITS)
1048 lws_peer_limits_notify_t pl_notify_cb;
1056 unsigned short ip_limit_ah;
1064 unsigned short ip_limit_wsi;
1073
1074#endif /* PEER_LIMITS */
1075
1076#if defined(LWS_WITH_SYS_FAULT_INJECTION)
1077 lws_fi_ctx_t fic;
1084#endif
1085
1086#if defined(LWS_WITH_SYS_SMD)
1087 lws_smd_notification_cb_t early_smd_cb;
1094 void *early_smd_opaque;
1095 lws_smd_class_t early_smd_class_filter;
1096 lws_usec_t smd_ttl_us;
1101 uint16_t smd_queue_depth;
1104#endif
1105
1106#if defined(LWS_WITH_SYS_METRICS)
1107 const struct lws_metric_policy *metrics_policies;
1109 const char *metrics_prefix;
1116#endif
1117
1123
1133
1134#if defined(LWS_WITH_TLS_JIT_TRUST)
1135 size_t jitt_cache_max_footprint;
1138 int vh_idle_grace_ms;
1141#endif
1142
1146
1147#if defined(LWS_WITH_CACHE_NSCOOKIEJAR) && defined(LWS_WITH_CLIENT)
1148 const char *http_nsc_filepath;
1150
1151 size_t http_nsc_heap_max_footprint;
1154 size_t http_nsc_heap_max_items;
1157 size_t http_nsc_heap_max_payload;
1160#endif
1161
1162#if defined(LWS_WITH_CACHE_BLOB)
1163 const char *dlo_asset_cache_dir;
1169
1170 size_t dlo_asset_cache_max_footprint;
1173#endif
1174
1175#if defined(LWS_WITH_SYS_ASYNC_DNS)
1176 const char **async_dns_servers;
1182
1183#endif
1184
1185#if defined(WIN32)
1186 unsigned int win32_connect_check_interval_usec;
1191#endif
1192
1199
1207
1208#if defined(LWS_WITH_NETWORK)
1209 const char *wol_if;
1211#endif
1212
1213 const char *lws_stub;
1217 int argc;
1220 const char **argv;
1223
1224#if defined(LWS_WITH_ASYNC_QUEUE)
1225 uint8_t count_async_threads;
1230#endif
1231
1232 /* Add new things just above here ---^
1233 * This is part of the ABI, don't needlessly break compatibility
1234 *
1235 * The below is to ensure later library versions with new
1236 * members added above will see 0 (default) even if the app
1237 * was not built against the newer headers.
1238 */
1239
1242
1245
1248
1252
1255
1261
1264
1265 const struct lws_io_ops *io_ops;
1268
1269 const struct lws_plugin_protocol * const *plugins;
1279
1280 const char *ss_proxy_perms;
1304
1315
1316#if !defined(__STRICT_ANSI__)
1317 void *_unused[1];
1318#endif
1319};
1320
1355LWS_VISIBLE LWS_EXTERN struct lws_context *
1357
1358
1368lws_context_destroy(struct lws_context *context);
1369
1381
1382typedef int (*lws_reload_func)(void);
1383
1407lws_context_deprecate(struct lws_context *context, lws_reload_func cb);
1408
1410lws_context_is_deprecated(struct lws_context *context);
1411
1430lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
1431
1450lws_set_socks(struct lws_vhost *vhost, const char *socks);
1451
1452struct lws_vhost;
1453
1463LWS_VISIBLE LWS_EXTERN struct lws_vhost *
1464lws_create_vhost(struct lws_context *context,
1465 const struct lws_context_creation_info *info);
1466
1486lws_vhost_destroy(struct lws_vhost *vh);
1487
1502
1534 char **config_strings, int *len);
1535
1559 struct lws_context_creation_info *info,
1560 const char *d, char **config_strings, int *len);
1561
1589lwsws_get_config_vhosts(struct lws_context *context,
1590 struct lws_context_creation_info *info, const char *d,
1591 char **config_strings, int *len);
1592
1617 struct lws_context *context,
1618 struct lws_context_creation_info *info,
1619 const char *d, char **config_strings, int *len);
1620
1626LWS_VISIBLE LWS_EXTERN struct lws_vhost *
1627lws_get_vhost(struct lws *wsi);
1628
1634LWS_VISIBLE LWS_EXTERN const char *
1635lws_get_vhost_name(struct lws_vhost *vhost);
1636
1645LWS_VISIBLE LWS_EXTERN struct lws_vhost *
1646lws_get_vhost_by_name(struct lws_context *context, const char *name);
1647
1670LWS_VISIBLE LWS_EXTERN struct lws_vhost *
1671lws_select_vhost_sni(struct lws_context *context, int port,
1672 const char *servername);
1673
1680lws_get_vhost_port(struct lws_vhost *vhost);
1681
1688lws_get_vhost_user(struct lws_vhost *vhost);
1689
1695LWS_VISIBLE LWS_EXTERN const char *
1696lws_get_vhost_iface(struct lws_vhost *vhost);
1697
1707lws_vhost_user(struct lws_vhost *vhost);
1708
1719lws_context_user(struct lws_context *context);
1720
1721LWS_VISIBLE LWS_EXTERN const char *
1722lws_vh_tag(struct lws_vhost *vh);
1723
1745 const char *sspol);
1746
1768lws_default_loop_exit(struct lws_context *cx);
1769
1772
1774lws_cmdline_passfail(int argc, const char **argv, int actual);
1775
1787lws_systemd_inherited_fd(unsigned int index,
1788 struct lws_context_creation_info *info);
1789
1806lws_context_is_being_destroyed(struct lws_context *context);
1807
1814
1826
1841
1850
1852#define AUTH_MODE_MASK 0xF0000000
1853
1861 const char *mountpoint;
1863 const char *origin;
1865 const char *def;
1867 const char *protocol;
1869
1878
1883 unsigned int auth_mask;
1885
1886 unsigned int cache_reusable:1;
1887 unsigned int cache_revalidate:1;
1888 unsigned int cache_intermediaries:1;
1889 unsigned int cache_no:1;
1890 unsigned int exact_match:1;
1891 unsigned int append_path:1;
1892 unsigned int no_ws_upgrades:1;
1893
1894 unsigned char origin_protocol;
1895 unsigned char mountpoint_len;
1896
1899
1900 const char *cgi_chroot_path;
1902
1903 const char *cgi_wd;
1907
1916 unsigned int keepalive_timeout;
1920#if defined(LWS_WITH_JOSE)
1921 const char *interceptor_path;
1925#endif
1926
1929
1930 /* Add new things just above here ---^
1931 * This is part of the ABI, don't needlessly break compatibility
1932 */
1933};
1934
1936lws_vhost_set_mounts(struct lws_vhost *v, const struct lws_http_mount *mounts);
1937
const lws_system_ops_t * system_ops
const struct lws_plugin_evlib * event_lib_custom
void(* finalize)(struct lws_vhost *vh, void *arg)
const struct lws_protocols ** pprotocols
const struct lws_plugin_protocol *const * plugins
struct lws_context ** pcontext
const struct lws_io_ops * io_ops
lws_quic_tx_credit_cb_t quic_tx_credit_cb
lws_dll2_owner_t owner
const lws_retry_bo_t * retry_and_idle_policy
const struct lws_protocol_vhost_options * next
void(* signal_cb)(void *event_lib_handle, int signum)
const struct lws_cc_ops * quic_cc_ops
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 struct lws_vhost * lws_select_vhost_sni(struct lws_context *context, int port, const char *servername)
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 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 char * protocol
const struct lws_protocol_vhost_options * interpret
unsigned int keepalive_timeout
unsigned int cache_no
const char * basic_auth_login_file
const struct lws_protocol_vhost_options * extra_mimetypes
unsigned int auth_mask
unsigned char origin_protocol
unsigned int cache_reusable
unsigned int no_ws_upgrades
unsigned int append_path
const char * mountpoint
unsigned int cache_intermediaries
const char * cgi_chroot_path
unsigned char mountpoint_len
const struct lws_protocol_vhost_options * headers
unsigned int exact_match
unsigned int cache_revalidate
const struct lws_protocol_vhost_options * cgienv
lws_mount_protocols
LWS_VISIBLE LWS_EXTERN void lws_vhost_set_mounts(struct lws_vhost *v, const struct lws_http_mount *mounts)
lws_authentication_mode
@ LWSMPRO_NO_MOUNT
@ LWSMPRO_CGI
@ LWSMPRO_HTTP
@ LWSMPRO_FILE
@ LWSMPRO_REDIR_HTTPS
@ LWSMPRO_CALLBACK
@ LWSMPRO_REDIR_HTTP
@ LWSMPRO_HTTPS
@ LWSAUTHM_BASIC_AUTH_CALLBACK
@ LWSAUTHM_DEFAULT
unsigned short uint16_t
unsigned int uint32_t
#define LWS_EXTERN
int64_t lws_usec_t
unsigned char uint8_t
int lws_sockfd_type
#define LWS_VISIBLE
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)
Definition lws-smd.h:203
uint32_t lws_smd_class_t
Definition lws-smd.h:31
struct lws_system_ops lws_system_ops_t