libwebsockets
Lightweight C library for HTML5 websockets
Toggle main menu visibility
class="ui-resizable-handle">
Loading...
Searching...
No Matches
lws-network-helper.h
Go to the documentation of this file.
1
/*
2
* libwebsockets - small server side websockets and web server implementation
3
*
4
* Copyright (C) 2010 - 2023 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
30
LWS_VISIBLE
LWS_EXTERN
struct
lws_dll2_owner
*
31
lws_routing_table_get
(
struct
lws_context *cx);
32
34
35
#if defined(LWS_ESP_PLATFORM)
36
#include <lwip/sockets.h>
37
#endif
38
39
/* cope with large amounts of route information */
40
typedef
uint16_t
lws_route_uidx_t
;
41
42
typedef
struct
lws_dns_score
{
43
uint8_t
precedence
;
44
uint8_t
label
;
45
}
lws_dns_score_t
;
46
47
/*
48
* This represents an entry in the system routing table
49
*/
50
51
typedef
struct
lws_route
{
52
lws_dll2_t
list
;
53
54
lws_sockaddr46
src
;
55
lws_sockaddr46
dest
;
56
lws_sockaddr46
gateway
;
57
58
struct
lws_route
*
source
;
/* when used as lws_dns_sort_t */
59
lws_dns_score_t
score
;
/* when used as lws_dns_sort_t */
60
61
int
if_idx
;
62
int
priority
;
63
int
ifa_flags
;
/* if source_ads */
64
65
lws_route_uidx_t
uidx
;
/* unique index for this route */
66
67
uint8_t
proto
;
68
uint8_t
dest_len
;
69
uint8_t
src_len
;
70
uint8_t
scope
;
/* if source_ads */
71
uint8_t
af
;
/* if source_ads */
72
73
uint8_t
source_ads
:1;
74
}
lws_route_t
;
75
76
/*
77
* We reuse the route object as the dns sort granule, so there's only one
78
* struct needs to know all the gnarly ipv6 details
79
*/
80
81
typedef
lws_route_t
lws_dns_sort_t
;
82
92
LWS_VISIBLE
LWS_EXTERN
const
char
*
LWS_WARN_UNUSED_RESULT
93
lws_canonical_hostname
(
struct
lws_context *context);
94
109
LWS_VISIBLE
LWS_EXTERN
int
LWS_WARN_UNUSED_RESULT
110
lws_get_peer_addresses
(
struct
lws *wsi,
lws_sockfd_type
fd,
char
*name,
111
int
name_len,
char
*rip,
int
rip_len);
112
123
LWS_VISIBLE
LWS_EXTERN
const
char
*
124
lws_get_peer_simple
(
struct
lws *wsi,
char
*name,
size_t
namelen);
125
126
LWS_VISIBLE
LWS_EXTERN
const
char
*
127
lws_get_peer_simple_fd
(
lws_sockfd_type
fd,
char
*name,
size_t
namelen);
128
129
#define LWS_ITOSA_USABLE 0
130
#define LWS_ITOSA_NOT_EXIST -1
131
#define LWS_ITOSA_NOT_USABLE -2
132
#define LWS_ITOSA_BUSY -3
/* only returned by lws_socket_bind() on
133
EADDRINUSE */
134
135
#if !defined(LWS_PLAT_FREERTOS) && !defined(LWS_PLAT_OPTEE)
156
LWS_VISIBLE
LWS_EXTERN
int
157
lws_interface_to_sa
(
int
ipv6,
const
char
*ifname,
struct
sockaddr_in
*addr,
158
size_t
addrlen);
159
#endif
160
170
LWS_VISIBLE
LWS_EXTERN
int
171
lws_sa46_compare_ads
(
const
lws_sockaddr46
*sa46a,
const
lws_sockaddr46
*sa46b);
172
185
LWS_VISIBLE
LWS_EXTERN
int
186
lws_sa46_on_net
(
const
lws_sockaddr46
*sa46a,
const
lws_sockaddr46
*sa46_net,
187
int
net_len);
188
189
/*
190
* lws_parse_numeric_address() - converts numeric ipv4 or ipv6 to byte address
191
*
192
* \param ads: the numeric ipv4 or ipv6 address string
193
* \param result: result array
194
* \param max_len: max length of result array
195
*
196
* Converts a 1.2.3.4 or 2001:abcd:123:: or ::ffff:1.2.3.4 formatted numeric
197
* address into an array of network ordered byte address elements.
198
*
199
* Returns < 0 on error, else length of result set, either 4 or 16 for ipv4 /
200
* ipv6.
201
*/
202
LWS_VISIBLE
LWS_EXTERN
int
203
lws_parse_numeric_address
(
const
char
*ads,
uint8_t
*result,
size_t
max_len);
204
205
/*
206
* lws_sa46_parse_numeric_address() - converts numeric ipv4 or ipv6 to sa46
207
*
208
* \param ads: the numeric ipv4 or ipv6 address string
209
* \param sa46: pointer to sa46 to set
210
*
211
* Converts a 1.2.3.4 or 2001:abcd:123:: or ::ffff:1.2.3.4 formatted numeric
212
* address into an sa46, a union of sockaddr_in or sockaddr_in6 depending on
213
* what kind of address was found. sa46->sa4.sin_fmaily will be AF_INET if
214
* ipv4, or AF_INET6 if ipv6.
215
*
216
* Returns 0 if the sa46 was set, else < 0 on error.
217
*/
218
LWS_VISIBLE
LWS_EXTERN
int
219
lws_sa46_parse_numeric_address
(
const
char
*ads,
lws_sockaddr46
*sa46);
220
234
LWS_VISIBLE
LWS_EXTERN
int
235
lws_write_numeric_address
(
const
uint8_t
*ads,
int
size,
char
*buf,
size_t
len);
236
249
LWS_VISIBLE
LWS_EXTERN
int
250
lws_sa46_write_numeric_address
(
lws_sockaddr46
*sa46,
char
*buf,
size_t
len);
251
261
LWS_VISIBLE
LWS_EXTERN
int
262
lws_parse_mac
(
const
char
*ads,
uint8_t
*result_6_bytes);
263
264
LWS_VISIBLE
LWS_EXTERN
int
265
lws_parse_cidr
(
const
char
*cidr,
lws_sockaddr46
*sa46,
int
*len);
266
274
LWS_VISIBLE
LWS_EXTERN
int
275
lws_is_lan_address
(
const
char
*ads);
276
277
/*
278
* lws_is_local_address() - checks if the given string represents a local address
279
*
280
* \param ads: the address string to check
281
*
282
* Returns 1 if the address is a recognized local address like "localhost" or "127.0.0.1",
283
* else 0.
284
*/
285
LWS_VISIBLE
LWS_EXTERN
int
286
lws_is_local_address
(
const
char
*ads);
287
295
LWS_VISIBLE
LWS_EXTERN
int
296
lws_is_lan_address
(
const
char
*ads);
297
lws_dll2_t
struct lws_dll2 lws_dll2_t
lws_dll2_owner
Definition
lws-dll2.h:232
lws_sockaddr46
Definition
lws-adopt.h:87
uint16_t
unsigned short uint16_t
Definition
libwebsockets.h:696
LWS_EXTERN
#define LWS_EXTERN
Definition
libwebsockets.h:296
uint8_t
unsigned char uint8_t
Definition
libwebsockets.h:697
lws_sockfd_type
int lws_sockfd_type
Definition
libwebsockets.h:553
LWS_WARN_UNUSED_RESULT
#define LWS_WARN_UNUSED_RESULT
Definition
libwebsockets.h:292
LWS_VISIBLE
#define LWS_VISIBLE
Definition
libwebsockets.h:291
lws_route::src_len
uint8_t src_len
Definition
lws-network-helper.h:69
lws_dns_score::precedence
uint8_t precedence
Definition
lws-network-helper.h:43
lws_parse_numeric_address
LWS_VISIBLE LWS_EXTERN int lws_parse_numeric_address(const char *ads, uint8_t *result, size_t max_len)
lws_route::source
struct lws_route * source
Definition
lws-network-helper.h:58
lws_get_peer_simple_fd
LWS_VISIBLE LWS_EXTERN const char * lws_get_peer_simple_fd(lws_sockfd_type fd, char *name, size_t namelen)
lws_is_local_address
LWS_VISIBLE LWS_EXTERN int lws_is_local_address(const char *ads)
lws_route_uidx_t
uint16_t lws_route_uidx_t
Definition
lws-network-helper.h:40
lws_sa46_parse_numeric_address
LWS_VISIBLE LWS_EXTERN int lws_sa46_parse_numeric_address(const char *ads, lws_sockaddr46 *sa46)
lws_route::src
lws_sockaddr46 src
Definition
lws-network-helper.h:54
lws_parse_mac
LWS_VISIBLE LWS_EXTERN int lws_parse_mac(const char *ads, uint8_t *result_6_bytes)
lws_route::priority
int priority
Definition
lws-network-helper.h:62
lws_parse_cidr
LWS_VISIBLE LWS_EXTERN int lws_parse_cidr(const char *cidr, lws_sockaddr46 *sa46, int *len)
lws_route::score
lws_dns_score_t score
Definition
lws-network-helper.h:59
lws_route::proto
uint8_t proto
Definition
lws-network-helper.h:67
lws_dns_sort_t
lws_route_t lws_dns_sort_t
Definition
lws-network-helper.h:81
lws_canonical_hostname
LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname(struct lws_context *context)
lws_route::scope
uint8_t scope
Definition
lws-network-helper.h:70
lws_routing_table_get
LWS_VISIBLE LWS_EXTERN struct lws_dll2_owner * lws_routing_table_get(struct lws_context *cx)
lws_route::dest_len
uint8_t dest_len
Definition
lws-network-helper.h:68
lws_route::list
lws_dll2_t list
Definition
lws-network-helper.h:52
lws_route::if_idx
int if_idx
Definition
lws-network-helper.h:61
lws_route::uidx
lws_route_uidx_t uidx
Definition
lws-network-helper.h:65
lws_route::af
uint8_t af
Definition
lws-network-helper.h:71
lws_route::dest
lws_sockaddr46 dest
Definition
lws-network-helper.h:55
lws_interface_to_sa
LWS_VISIBLE LWS_EXTERN int lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr, size_t addrlen)
lws_route_t
struct lws_route lws_route_t
lws_sa46_on_net
LWS_VISIBLE LWS_EXTERN int lws_sa46_on_net(const lws_sockaddr46 *sa46a, const lws_sockaddr46 *sa46_net, int net_len)
lws_route::gateway
lws_sockaddr46 gateway
Definition
lws-network-helper.h:56
lws_sa46_compare_ads
LWS_VISIBLE LWS_EXTERN int lws_sa46_compare_ads(const lws_sockaddr46 *sa46a, const lws_sockaddr46 *sa46b)
lws_write_numeric_address
LWS_VISIBLE LWS_EXTERN int lws_write_numeric_address(const uint8_t *ads, int size, char *buf, size_t len)
lws_dns_score_t
struct lws_dns_score lws_dns_score_t
lws_get_peer_addresses
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name, int name_len, char *rip, int rip_len)
lws_route::source_ads
uint8_t source_ads
Definition
lws-network-helper.h:73
lws_is_lan_address
LWS_VISIBLE LWS_EXTERN int lws_is_lan_address(const char *ads)
lws_get_peer_simple
LWS_VISIBLE LWS_EXTERN const char * lws_get_peer_simple(struct lws *wsi, char *name, size_t namelen)
lws_sa46_write_numeric_address
LWS_VISIBLE LWS_EXTERN int lws_sa46_write_numeric_address(lws_sockaddr46 *sa46, char *buf, size_t len)
lws_route::ifa_flags
int ifa_flags
Definition
lws-network-helper.h:63
lws_dns_score::label
uint8_t label
Definition
lws-network-helper.h:44
lws_dns_score
Definition
lws-network-helper.h:42
lws_route
Definition
lws-network-helper.h:51
sockaddr_in
Definition
lws-optee.h:59
include
libwebsockets
lws-network-helper.h
Generated on
for libwebsockets by
1.18.0