libwebsockets
Lightweight C library for HTML5 websockets
lws-callbacks.h
1 /*
2  * libwebsockets - small server side websockets and web server implementation
3  *
4  * Copyright (C) 2010-2018 Andy Green <andy@warmcat.com>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation:
9  * version 2.1 of the License.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19  * MA 02110-1301 USA
20  *
21  * included from libwebsockets.h
22  */
23 
35 
37 struct lws_ssl_info {
38  int where;
39  int ret;
40 };
41 
42 enum lws_cert_update_state {
43  LWS_CUS_IDLE,
44  LWS_CUS_STARTING,
45  LWS_CUS_SUCCESS,
46  LWS_CUS_FAILED,
47 
48  LWS_CUS_CREATE_KEYS,
49  LWS_CUS_REG,
50  LWS_CUS_AUTH,
51  LWS_CUS_CHALLENGE,
52  LWS_CUS_CREATE_REQ,
53  LWS_CUS_REQ,
54  LWS_CUS_CONFIRM,
55  LWS_CUS_ISSUE,
56 };
57 
58 enum {
59  LWS_TLS_REQ_ELEMENT_COUNTRY,
60  LWS_TLS_REQ_ELEMENT_STATE,
61  LWS_TLS_REQ_ELEMENT_LOCALITY,
62  LWS_TLS_REQ_ELEMENT_ORGANIZATION,
63  LWS_TLS_REQ_ELEMENT_COMMON_NAME,
64  LWS_TLS_REQ_ELEMENT_EMAIL,
65 
66  LWS_TLS_REQ_ELEMENT_COUNT,
67 
68  LWS_TLS_SET_DIR_URL = LWS_TLS_REQ_ELEMENT_COUNT,
69  LWS_TLS_SET_AUTH_PATH,
70  LWS_TLS_SET_CERT_PATH,
71  LWS_TLS_SET_KEY_PATH,
72 
73  LWS_TLS_TOTAL_COUNT
74 };
75 
77  struct lws_vhost *vh;
78  const char *element_overrides[LWS_TLS_TOTAL_COUNT]; /* NULL = use pvo */
79 };
80 
81 /*
82  * NOTE: These public enums are part of the abi. If you want to add one,
83  * add it at where specified so existing users are unaffected.
84  */
87 
88  /* ---------------------------------------------------------------------
89  * ----- Callbacks related to wsi and protocol binding lifecycle -----
90  */
91 
109  /* ---------------------------------------------------------------------
110  * ----- Callbacks related to Server TLS -----
111  */
112 
163  /* ---------------------------------------------------------------------
164  * ----- Callbacks related to Client TLS -----
165  */
166 
198  /* ---------------------------------------------------------------------
199  * ----- Callbacks related to HTTP Server -----
200  */
201 
328  /* ---------------------------------------------------------------------
329  * ----- Callbacks related to HTTP Client -----
330  */
331 
375  LWS_CALLBACK_CLIENT_HTTP_BIND_PROTOCOL = 85,
376  LWS_CALLBACK_CLIENT_HTTP_DROP_PROTOCOL = 76,
377 
378  /* ---------------------------------------------------------------------
379  * ----- Callbacks related to Websocket Server -----
380  */
381 
438  LWS_CALLBACK_WS_SERVER_BIND_PROTOCOL = 77,
439  LWS_CALLBACK_WS_SERVER_DROP_PROTOCOL = 78,
440 
441  /* ---------------------------------------------------------------------
442  * ----- Callbacks related to Websocket Client -----
443  */
444 
571  LWS_CALLBACK_WS_CLIENT_BIND_PROTOCOL = 79,
572  LWS_CALLBACK_WS_CLIENT_DROP_PROTOCOL = 80,
573 
574  /* ---------------------------------------------------------------------
575  * ----- Callbacks related to external poll loop integration -----
576  */
577 
583  /* external poll() management support */
633  /* ---------------------------------------------------------------------
634  * ----- Callbacks related to CGI serving -----
635  */
636 
665  /* ---------------------------------------------------------------------
666  * ----- Callbacks related to Generic Sessions -----
667  */
668 
685  /* ---------------------------------------------------------------------
686  * ----- Callbacks related to RAW sockets -----
687  */
688 
701  LWS_CALLBACK_RAW_SKT_BIND_PROTOCOL = 81,
702  LWS_CALLBACK_RAW_SKT_DROP_PROTOCOL = 82,
703 
704  /* ---------------------------------------------------------------------
705  * ----- Callbacks related to RAW file handles -----
706  */
707 
723  LWS_CALLBACK_RAW_FILE_BIND_PROTOCOL = 83,
724  LWS_CALLBACK_RAW_FILE_DROP_PROTOCOL = 84,
725 
726  /* ---------------------------------------------------------------------
727  * ----- Callbacks related to generic wsi events -----
728  */
729 
750  /* ---------------------------------------------------------------------
751  * ----- Callbacks related to TLS certificate management -----
752  */
753 
774  /****** add new things just above ---^ ******/
775 
778 };
779 
780 
781 
797 typedef int
798 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
799  void *user, void *in, size_t len);
800 
801 #define LWS_CB_REASON_AUX_BF__CGI 1
802 #define LWS_CB_REASON_AUX_BF__PROXY 2
803 #define LWS_CB_REASON_AUX_BF__CGI_CHUNK_END 4
804 #define LWS_CB_REASON_AUX_BF__CGI_HEADERS 8
805 #define LWS_CB_REASON_AUX_BF__PROXY_TRANS_END 16
806 #define LWS_CB_REASON_AUX_BF__PROXY_HEADERS 32
807 
LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY
@ LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY
Definition: lws-callbacks.h:147
LWS_CALLBACK_CLOSED_CLIENT_HTTP
@ LWS_CALLBACK_CLOSED_CLIENT_HTTP
Definition: lws-callbacks.h:336
lws_callback_function
int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
Definition: lws-callbacks.h:798
lws_acme_cert_aging_args
Definition: lws-callbacks.h:76
LWS_CALLBACK_RECEIVE_CLIENT_HTTP
@ LWS_CALLBACK_RECEIVE_CLIENT_HTTP
Definition: lws-callbacks.h:346
LWS_CALLBACK_VHOST_CERT_AGING
@ LWS_CALLBACK_VHOST_CERT_AGING
Definition: lws-callbacks.h:754
LWS_CALLBACK_ESTABLISHED
@ LWS_CALLBACK_ESTABLISHED
Definition: lws-callbacks.h:382
LWS_CALLBACK_CGI_PROCESS_ATTACH
@ LWS_CALLBACK_CGI_PROCESS_ATTACH
Definition: lws-callbacks.h:661
LWS_CALLBACK_UNLOCK_POLL
@ LWS_CALLBACK_UNLOCK_POLL
Definition: lws-callbacks.h:630
LWS_CALLBACK_CLIENT_CONNECTION_ERROR
@ LWS_CALLBACK_CLIENT_CONNECTION_ERROR
Definition: lws-callbacks.h:445
LWS_CALLBACK_HTTP_BIND_PROTOCOL
@ LWS_CALLBACK_HTTP_BIND_PROTOCOL
Definition: lws-callbacks.h:296
LWS_CALLBACK_ADD_HEADERS
@ LWS_CALLBACK_ADD_HEADERS
Definition: lws-callbacks.h:254
LWS_CALLBACK_TIMER
@ LWS_CALLBACK_TIMER
Definition: lws-callbacks.h:730
LWS_CALLBACK_CLOSED
@ LWS_CALLBACK_CLOSED
Definition: lws-callbacks.h:390
LWS_CALLBACK_RECEIVE_PONG
@ LWS_CALLBACK_RECEIVE_PONG
Definition: lws-callbacks.h:401
LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER
@ LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER
Definition: lws-callbacks.h:505
lws_callback_reasons
lws_callback_reasons
Definition: lws-callbacks.h:86
LWS_CALLBACK_RAW_CLOSE_FILE
@ LWS_CALLBACK_RAW_CLOSE_FILE
Definition: lws-callbacks.h:720
LWS_CALLBACK_CLOSED_HTTP
@ LWS_CALLBACK_CLOSED_HTTP
Definition: lws-callbacks.h:238
LWS_CALLBACK_CGI_TERMINATED
@ LWS_CALLBACK_CGI_TERMINATED
Definition: lws-callbacks.h:643
LWS_CALLBACK_HTTP_FILE_COMPLETION
@ LWS_CALLBACK_HTTP_FILE_COMPLETION
Definition: lws-callbacks.h:232
LWS_CALLBACK_HTTP_WRITEABLE
@ LWS_CALLBACK_HTTP_WRITEABLE
Definition: lws-callbacks.h:235
LWS_CALLBACK_CLIENT_RECEIVE
@ LWS_CALLBACK_CLIENT_RECEIVE
Definition: lws-callbacks.h:524
LWS_CALLBACK_WSI_DESTROY
@ LWS_CALLBACK_WSI_DESTROY
Definition: lws-callbacks.h:105
LWS_CALLBACK_FILTER_HTTP_CONNECTION
@ LWS_CALLBACK_FILTER_HTTP_CONNECTION
Definition: lws-callbacks.h:241
LWS_CALLBACK_HTTP_BODY
@ LWS_CALLBACK_HTTP_BODY
Definition: lws-callbacks.h:225
LWS_CALLBACK_SERVER_WRITEABLE
@ LWS_CALLBACK_SERVER_WRITEABLE
Definition: lws-callbacks.h:393
LWS_CALLBACK_VHOST_CERT_UPDATE
@ LWS_CALLBACK_VHOST_CERT_UPDATE
Definition: lws-callbacks.h:767
LWS_CALLBACK_SSL_INFO
@ LWS_CALLBACK_SSL_INFO
Definition: lws-callbacks.h:156
LWS_CALLBACK_PROTOCOL_INIT
@ LWS_CALLBACK_PROTOCOL_INIT
Definition: lws-callbacks.h:92
LWS_CALLBACK_RAW_CLOSE
@ LWS_CALLBACK_RAW_CLOSE
Definition: lws-callbacks.h:692
LWS_CALLBACK_HTTP_DROP_PROTOCOL
@ LWS_CALLBACK_HTTP_DROP_PROTOCOL
Definition: lws-callbacks.h:308
LWS_CALLBACK_CLIENT_CLOSED
@ LWS_CALLBACK_CLIENT_CLOSED
Definition: lws-callbacks.h:502
LWS_CALLBACK_RAW_ADOPT
@ LWS_CALLBACK_RAW_ADOPT
Definition: lws-callbacks.h:698
LWS_CALLBACK_CGI_STDIN_DATA
@ LWS_CALLBACK_CGI_STDIN_DATA
Definition: lws-callbacks.h:650
LWS_CALLBACK_WSI_CREATE
@ LWS_CALLBACK_WSI_CREATE
Definition: lws-callbacks.h:102
LWS_CALLBACK_SESSION_INFO
@ LWS_CALLBACK_SESSION_INFO
Definition: lws-callbacks.h:669
LWS_CALLBACK_HTTP
@ LWS_CALLBACK_HTTP
Definition: lws-callbacks.h:210
LWS_CALLBACK_RECEIVE
@ LWS_CALLBACK_RECEIVE
Definition: lws-callbacks.h:396
LWS_CALLBACK_ADD_POLL_FD
@ LWS_CALLBACK_ADD_POLL_FD
Definition: lws-callbacks.h:584
LWS_CALLBACK_CGI_STDIN_COMPLETED
@ LWS_CALLBACK_CGI_STDIN_COMPLETED
Definition: lws-callbacks.h:656
LWS_CALLBACK_CLIENT_HTTP_WRITEABLE
@ LWS_CALLBACK_CLIENT_HTTP_WRITEABLE
Definition: lws-callbacks.h:365
LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED
@ LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED
Definition: lws-callbacks.h:202
LWS_CALLBACK_RAW_RX_FILE
@ LWS_CALLBACK_RAW_RX_FILE
Definition: lws-callbacks.h:711
LWS_CALLBACK_OPENSSL_PERFORM_SERVER_CERT_VERIFICATION
@ LWS_CALLBACK_OPENSSL_PERFORM_SERVER_CERT_VERIFICATION
Definition: lws-callbacks.h:167
LWS_CALLBACK_CLIENT_ESTABLISHED
@ LWS_CALLBACK_CLIENT_ESTABLISHED
Definition: lws-callbacks.h:498
LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP
@ LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP
Definition: lws-callbacks.h:332
LWS_CALLBACK_CONFIRM_EXTENSION_OKAY
@ LWS_CALLBACK_CONFIRM_EXTENSION_OKAY
Definition: lws-callbacks.h:427
LWS_CALLBACK_WS_PEER_INITIATED_CLOSE
@ LWS_CALLBACK_WS_PEER_INITIATED_CLOSE
Definition: lws-callbacks.h:404
LWS_CALLBACK_CHANGE_MODE_POLL_FD
@ LWS_CALLBACK_CHANGE_MODE_POLL_FD
Definition: lws-callbacks.h:608
LWS_CALLBACK_COMPLETED_CLIENT_HTTP
@ LWS_CALLBACK_COMPLETED_CLIENT_HTTP
Definition: lws-callbacks.h:360
LWS_CALLBACK_CGI
@ LWS_CALLBACK_CGI
Definition: lws-callbacks.h:637
LWS_CALLBACK_PROTOCOL_DESTROY
@ LWS_CALLBACK_PROTOCOL_DESTROY
Definition: lws-callbacks.h:96
LWS_CALLBACK_CLIENT_RECEIVE_PONG
@ LWS_CALLBACK_CLIENT_RECEIVE_PONG
Definition: lws-callbacks.h:528
LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION
@ LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION
Definition: lws-callbacks.h:128
LWS_CALLBACK_USER
@ LWS_CALLBACK_USER
Definition: lws-callbacks.h:776
LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ
@ LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ
Definition: lws-callbacks.h:339
LWS_CALLBACK_RAW_WRITEABLE_FILE
@ LWS_CALLBACK_RAW_WRITEABLE_FILE
Definition: lws-callbacks.h:717
LWS_CALLBACK_CHECK_ACCESS_RIGHTS
@ LWS_CALLBACK_CHECK_ACCESS_RIGHTS
Definition: lws-callbacks.h:281
LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH
@ LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH
Definition: lws-callbacks.h:490
LWS_CALLBACK_DEL_POLL_FD
@ LWS_CALLBACK_DEL_POLL_FD
Definition: lws-callbacks.h:601
LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION
@ LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION
Definition: lws-callbacks.h:414
LWS_CALLBACK_LOCK_POLL
@ LWS_CALLBACK_LOCK_POLL
Definition: lws-callbacks.h:617
LWS_CALLBACK_HTTP_CONFIRM_UPGRADE
@ LWS_CALLBACK_HTTP_CONFIRM_UPGRADE
Definition: lws-callbacks.h:314
LWS_CALLBACK_PROCESS_HTML
@ LWS_CALLBACK_PROCESS_HTML
Definition: lws-callbacks.h:288
lws_ssl_info
Definition: lws-callbacks.h:37
LWS_CALLBACK_WS_EXT_DEFAULTS
@ LWS_CALLBACK_WS_EXT_DEFAULTS
Definition: lws-callbacks.h:550
LWS_CALLBACK_HTTP_BODY_COMPLETION
@ LWS_CALLBACK_HTTP_BODY_COMPLETION
Definition: lws-callbacks.h:229
LWS_CALLBACK_CHILD_CLOSING
@ LWS_CALLBACK_CHILD_CLOSING
Definition: lws-callbacks.h:745
LWS_CALLBACK_GET_THREAD_ID
@ LWS_CALLBACK_GET_THREAD_ID
Definition: lws-callbacks.h:578
LWS_CALLBACK_HTTP_PMO
@ LWS_CALLBACK_HTTP_PMO
Definition: lws-callbacks.h:679
LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED
@ LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED
Definition: lws-callbacks.h:540
LWS_CALLBACK_EVENT_WAIT_CANCELLED
@ LWS_CALLBACK_EVENT_WAIT_CANCELLED
Definition: lws-callbacks.h:738
LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS
@ LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS
Definition: lws-callbacks.h:121
LWS_CALLBACK_RAW_RX
@ LWS_CALLBACK_RAW_RX
Definition: lws-callbacks.h:689
LWS_CALLBACK_GS_EVENT
@ LWS_CALLBACK_GS_EVENT
Definition: lws-callbacks.h:675
LWS_CALLBACK_CLIENT_WRITEABLE
@ LWS_CALLBACK_CLIENT_WRITEABLE
Definition: lws-callbacks.h:531
LWS_CALLBACK_RAW_WRITEABLE
@ LWS_CALLBACK_RAW_WRITEABLE
Definition: lws-callbacks.h:695
LWS_CALLBACK_RAW_ADOPT_FILE
@ LWS_CALLBACK_RAW_ADOPT_FILE
Definition: lws-callbacks.h:708
LWS_CALLBACK_FILTER_NETWORK_CONNECTION
@ LWS_CALLBACK_FILTER_NETWORK_CONNECTION
Definition: lws-callbacks.h:559
LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS
@ LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS
Definition: lws-callbacks.h:113