libwebsockets
Lightweight C library for HTML5 websockets
Toggle main menu visibility
Loading...
Searching...
No Matches
lws-adopt.h
Go to the documentation of this file.
1
/*
2
* libwebsockets - small server side websockets and web server implementation
3
*
4
* Copyright (C) 2010 - 2019 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
34
48
LWS_VISIBLE
LWS_EXTERN
struct
lws *
49
lws_adopt_socket
(
struct
lws_context *context,
lws_sockfd_type
accept_fd);
50
64
LWS_VISIBLE
LWS_EXTERN
struct
lws *
65
lws_adopt_socket_vhost
(
struct
lws_vhost *vh,
lws_sockfd_type
accept_fd);
66
67
typedef
enum
{
68
LWS_ADOPT_RAW_FILE_DESC
= 0,
/* convenience constant */
69
LWS_ADOPT_HTTP
= 1,
/* flag: absent implies RAW */
70
LWS_ADOPT_SOCKET
= 2,
/* flag: absent implies file */
71
LWS_ADOPT_ALLOW_SSL
= 4,
/* flag: use tls */
72
LWS_ADOPT_FLAG_UDP
= 16,
/* flag: socket is UDP */
73
LWS_ADOPT_FLAG_RAW_PROXY
= 32,
/* flag: raw proxy */
74
75
LWS_ADOPT_RAW_SOCKET_UDP
=
LWS_ADOPT_SOCKET
|
LWS_ADOPT_FLAG_UDP
,
76
}
lws_adoption_type
;
77
78
typedef
union
{
79
lws_sockfd_type
sockfd
;
80
lws_filefd_type
filefd
;
81
}
lws_sock_file_fd_type
;
82
83
#if defined(LWS_ESP_PLATFORM)
84
#include <lwip/sockets.h>
85
#endif
86
87
typedef
union
{
88
#if defined(LWS_WITH_IPV6)
89
struct
sockaddr_in6
sa6;
90
#else
91
#if defined(LWS_ESP_PLATFORM)
92
uint8_t
_pad_sa6[28];
93
#endif
94
#endif
95
struct
sockaddr_in
sa4
;
96
}
lws_sockaddr46
;
97
98
#define sa46_sockaddr(_sa46) ((struct sockaddr *)(_sa46))
99
100
#if defined(LWS_WITH_IPV6)
101
#define sa46_socklen(_sa46) (socklen_t)((_sa46)->sa4.sin_family == AF_INET ? \
102
sizeof(struct sockaddr_in) : \
103
sizeof(struct sockaddr_in6))
104
#define sa46_sockport(_sa46, _sp) { if ((_sa46)->sa4.sin_family == AF_INET) \
105
(_sa46)->sa4.sin_port = (_sp); else \
106
(_sa46)->sa6.sin6_port = (_sp); }
107
#define sa46_address(_sa46) ((uint8_t *)((_sa46)->sa4.sin_family == AF_INET ? \
108
&_sa46->sa4.sin_addr : &_sa46->sa6.sin6_addr ))
109
#else
110
#define sa46_socklen(_sa46) (socklen_t)sizeof(struct sockaddr_in)
111
#define sa46_sockport(_sa46, _sp) (_sa46)->sa4.sin_port = (_sp)
112
#define sa46_address(_sa46) (uint8_t *)&_sa46->sa4.sin_addr
113
#endif
114
115
#define sa46_address_len(_sa46) ((_sa46)->sa4.sin_family == AF_INET ? 4 : 16)
116
117
#if defined(LWS_WITH_UDP)
118
struct
lws_udp {
119
lws_sockaddr46
sa46;
120
lws_sockaddr46
sa46_pending;
121
uint8_t
connected:1;
122
};
123
#endif
124
144
LWS_VISIBLE
LWS_EXTERN
struct
lws *
145
lws_adopt_descriptor_vhost
(
struct
lws_vhost *vh,
lws_adoption_type
type,
146
lws_sock_file_fd_type
fd,
const
char
*vh_prot_name,
147
struct
lws *parent);
148
149
typedef
struct
lws_adopt_desc
{
150
struct
lws_vhost *
vh
;
151
lws_adoption_type
type
;
153
lws_sock_file_fd_type
fd
;
155
const
char
*
vh_prot_name
;
157
struct
lws *
parent
;
159
void
*
opaque
;
161
const
char
*
fi_wsi_name
;
164
}
lws_adopt_desc_t
;
165
188
LWS_VISIBLE
LWS_EXTERN
struct
lws *
189
lws_adopt_descriptor_vhost_via_info
(
const
lws_adopt_desc_t
*info);
190
214
LWS_VISIBLE
LWS_EXTERN
struct
lws *
215
lws_adopt_socket_readbuf
(
struct
lws_context *context,
lws_sockfd_type
accept_fd,
216
const
char
*readbuf,
size_t
len);
239
LWS_VISIBLE
LWS_EXTERN
struct
lws *
240
lws_adopt_socket_vhost_readbuf
(
struct
lws_vhost *vhost,
241
lws_sockfd_type
accept_fd,
const
char
*readbuf,
242
size_t
len);
243
244
#define LWS_CAUDP_BIND (1 << 0)
245
#define LWS_CAUDP_BROADCAST (1 << 1)
246
#define LWS_CAUDP_PF_PACKET (1 << 2)
247
248
#if defined(LWS_WITH_UDP)
270
LWS_VISIBLE
LWS_EXTERN
struct
lws *
271
lws_create_adopt_udp(
struct
lws_vhost *vhost,
const
char
*ads,
int
port,
272
int
flags,
const
char
*protocol_name,
const
char
*ifname,
273
struct
lws *parent_wsi,
void
*opaque,
274
const
lws_retry_bo_t
*retry_policy,
const
char
*fi_wsi_name);
275
#endif
276
277
278
lws_adopt_desc::fi_wsi_name
const char * fi_wsi_name
Definition
lws-adopt.h:161
lws_adopt_desc::parent
struct lws * parent
Definition
lws-adopt.h:157
lws_sockaddr46::sa4
struct sockaddr_in sa4
Definition
lws-adopt.h:95
lws_adopt_desc::vh_prot_name
const char * vh_prot_name
Definition
lws-adopt.h:155
lws_sock_file_fd_type::sockfd
lws_sockfd_type sockfd
Definition
lws-adopt.h:79
lws_adopt_desc::opaque
void * opaque
Definition
lws-adopt.h:159
lws_sock_file_fd_type::filefd
lws_filefd_type filefd
Definition
lws-adopt.h:80
lws_adopt_desc::fd
lws_sock_file_fd_type fd
Definition
lws-adopt.h:153
lws_adopt_desc::type
lws_adoption_type type
Definition
lws-adopt.h:151
lws_adopt_desc::vh
struct lws_vhost * vh
Definition
lws-adopt.h:150
lws_adopt_descriptor_vhost
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_descriptor_vhost(struct lws_vhost *vh, lws_adoption_type type, lws_sock_file_fd_type fd, const char *vh_prot_name, struct lws *parent)
lws_adopt_socket_vhost_readbuf
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_vhost_readbuf(struct lws_vhost *vhost, lws_sockfd_type accept_fd, const char *readbuf, size_t len)
lws_adopt_socket
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)
lws_adopt_desc_t
struct lws_adopt_desc lws_adopt_desc_t
lws_adopt_socket_readbuf
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd, const char *readbuf, size_t len)
lws_adoption_type
lws_adoption_type
Definition
lws-adopt.h:67
lws_adopt_socket_vhost
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd)
lws_adopt_descriptor_vhost_via_info
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_descriptor_vhost_via_info(const lws_adopt_desc_t *info)
LWS_ADOPT_HTTP
@ LWS_ADOPT_HTTP
Definition
lws-adopt.h:69
LWS_ADOPT_SOCKET
@ LWS_ADOPT_SOCKET
Definition
lws-adopt.h:70
LWS_ADOPT_FLAG_RAW_PROXY
@ LWS_ADOPT_FLAG_RAW_PROXY
Definition
lws-adopt.h:73
LWS_ADOPT_RAW_FILE_DESC
@ LWS_ADOPT_RAW_FILE_DESC
Definition
lws-adopt.h:68
LWS_ADOPT_ALLOW_SSL
@ LWS_ADOPT_ALLOW_SSL
Definition
lws-adopt.h:71
LWS_ADOPT_FLAG_UDP
@ LWS_ADOPT_FLAG_UDP
Definition
lws-adopt.h:72
LWS_ADOPT_RAW_SOCKET_UDP
@ LWS_ADOPT_RAW_SOCKET_UDP
Definition
lws-adopt.h:75
lws_adopt_desc
Definition
lws-adopt.h:149
lws_sock_file_fd_type
Definition
lws-adopt.h:78
lws_sockaddr46
Definition
lws-adopt.h:87
LWS_EXTERN
#define LWS_EXTERN
Definition
libwebsockets.h:296
uint8_t
unsigned char uint8_t
Definition
libwebsockets.h:699
lws_sockfd_type
int lws_sockfd_type
Definition
libwebsockets.h:555
LWS_VISIBLE
#define LWS_VISIBLE
Definition
libwebsockets.h:291
lws_filefd_type
int lws_filefd_type
Definition
libwebsockets.h:556
sockaddr_in6
Definition
lws-optee.h:69
lws_retry_bo_t
struct lws_retry_bo lws_retry_bo_t
sockaddr_in
Definition
lws-optee.h:59
include
libwebsockets
lws-adopt.h
Generated on
for libwebsockets by
1.18.0