Electroneum
net_help.h
Go to the documentation of this file.
1 /*
2  * util/net_help.h - network help functions
3  *
4  * Copyright (c) 2007, NLnet Labs. All rights reserved.
5  *
6  * This software is open source.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * Redistributions of source code must retain the above copyright notice,
13  * this list of conditions and the following disclaimer.
14  *
15  * Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  *
19  * Neither the name of the NLNET LABS nor the names of its contributors may
20  * be used to endorse or promote products derived from this software without
21  * specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
29  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  */
35 
42 #ifndef NET_HELP_H
43 #define NET_HELP_H
44 #include "util/log.h"
45 struct sock_list;
46 struct regional;
47 
56 #define BIT_CD 0x0010
57 
58 #define BIT_AD 0x0020
59 
60 #define BIT_Z 0x0040
61 
62 #define BIT_RA 0x0080
63 
64 #define BIT_RD 0x0100
65 
66 #define BIT_TC 0x0200
67 
68 #define BIT_AA 0x0400
69 
70 #define BIT_QR 0x8000
71 
72 #define FLAGS_GET_RCODE(f) ((f) & 0xf)
73 
74 #define FLAGS_SET_RCODE(f, r) (f = (((f) & 0xfff0) | (r)))
75 
77 #define UDP_AUTH_QUERY_TIMEOUT 3000
78 
79 #define TCP_AUTH_QUERY_TIMEOUT 3000
80 
81 #define EDNS_ADVERTISED_VERSION 0
82 
85 #define EDNS_DO 0x8000 /* Dnssec Ok */
86 
87 #define INET_SIZE 4
88 
89 #define INET6_SIZE 16
90 
92 #define DNSKEY_BIT_ZSK 0x0100
93 
94 #define DNSKEY_BIT_SEP 0x0001
95 
97 extern int MINIMAL_RESPONSES;
98 
100 extern int RRSET_ROUNDROBIN;
101 
107 int str_is_ip6(const char* str);
108 
114 int fd_set_nonblock(int s);
115 
121 int fd_set_block(int s);
122 
128 int is_pow2(size_t num);
129 
136 void* memdup(void* data, size_t len);
137 
145 void log_addr(enum verbosity_value v, const char* str,
146  struct sockaddr_storage* addr, socklen_t addrlen);
147 
156 void log_name_addr(enum verbosity_value v, const char* str, uint8_t* zone,
157  struct sockaddr_storage* addr, socklen_t addrlen);
158 
166 void log_err_addr(const char* str, const char* err,
167  struct sockaddr_storage* addr, socklen_t addrlen);
168 
177 int extstrtoaddr(const char* str, struct sockaddr_storage* addr,
178  socklen_t* addrlen);
179 
188 int ipstrtoaddr(const char* ip, int port, struct sockaddr_storage* addr,
189  socklen_t* addrlen);
190 
201 int netblockstrtoaddr(const char* ip, int port, struct sockaddr_storage* addr,
202  socklen_t* addrlen, int* net);
203 
215 int authextstrtoaddr(char* str, struct sockaddr_storage* addr,
216  socklen_t* addrlen, char** auth_name);
217 
224 void sockaddr_store_port(struct sockaddr_storage* addr, socklen_t addrlen,
225  int port);
226 
235 void log_nametypeclass(enum verbosity_value v, const char* str,
236  uint8_t* name, uint16_t type, uint16_t dclass);
237 
247 int sockaddr_cmp(struct sockaddr_storage* addr1, socklen_t len1,
248  struct sockaddr_storage* addr2, socklen_t len2);
249 
258 int sockaddr_cmp_addr(struct sockaddr_storage* addr1, socklen_t len1,
259  struct sockaddr_storage* addr2, socklen_t len2);
260 
267 int addr_is_ip6(struct sockaddr_storage* addr, socklen_t len);
268 
277 void addr_mask(struct sockaddr_storage* addr, socklen_t len, int net);
278 
289 int addr_in_common(struct sockaddr_storage* addr1, int net1,
290  struct sockaddr_storage* addr2, int net2, socklen_t addrlen);
291 
300 void addr_to_str(struct sockaddr_storage* addr, socklen_t addrlen,
301  char* buf, size_t len);
302 
309 int addr_is_ip4mapped(struct sockaddr_storage* addr, socklen_t addrlen);
310 
317 int addr_is_broadcast(struct sockaddr_storage* addr, socklen_t addrlen);
318 
325 int addr_is_any(struct sockaddr_storage* addr, socklen_t addrlen);
326 
334 void sock_list_insert(struct sock_list** list, struct sockaddr_storage* addr,
335  socklen_t len, struct regional* region);
336 
342 void sock_list_prepend(struct sock_list** list, struct sock_list* add);
343 
351 int sock_list_find(struct sock_list* list, struct sockaddr_storage* addr,
352  socklen_t len);
353 
362 void sock_list_merge(struct sock_list** list, struct regional* region,
363  struct sock_list* add);
364 
369 void log_crypto_err(const char* str);
370 
376 int listen_sslctx_setup(void* ctxt);
377 
382 void listen_sslctx_setup_2(void* ctxt);
383 
391 void* listen_sslctx_create(char* key, char* pem, char* verifypem);
392 
402 void* connect_sslctx_create(char* key, char* pem, char* verifypem, int wincert);
403 
410 void* incoming_ssl_fd(void* sslctx, int fd);
411 
418 void* outgoing_ssl_fd(void* sslctx, int fd);
419 
424 int ub_openssl_lock_init(void);
425 
429 void ub_openssl_lock_delete(void);
430 
431 #endif /* NET_HELP_H */
void log_crypto_err(const char *str)
void * incoming_ssl_fd(void *sslctx, int fd)
int addr_is_any(struct sockaddr_storage *addr, socklen_t addrlen)
int addr_is_ip4mapped(struct sockaddr_storage *addr, socklen_t addrlen)
int addr_in_common(struct sockaddr_storage *addr1, int net1, struct sockaddr_storage *addr2, int net2, socklen_t addrlen)
int is_pow2(size_t num)
int MINIMAL_RESPONSES
const char * key
Definition: hmac_keccak.cpp:39
uint16_t EDNS_ADVERTISED_SIZE
unsigned short uint16_t
Definition: stdint.h:125
int ub_openssl_lock_init(void)
unsigned char uint8_t
Definition: stdint.h:124
int listen_sslctx_setup(void *ctxt)
const char * name
void sock_list_insert(struct sock_list **list, struct sockaddr_storage *addr, socklen_t len, struct regional *region)
void addr_mask(struct sockaddr_storage *addr, socklen_t len, int net)
void sock_list_prepend(struct sock_list **list, struct sock_list *add)
int fd_set_nonblock(int s)
int ipstrtoaddr(const char *ip, int port, struct sockaddr_storage *addr, socklen_t *addrlen)
void log_nametypeclass(enum verbosity_value v, const char *str, uint8_t *name, uint16_t type, uint16_t dclass)
int str_is_ip6(const char *str)
int addr_is_ip6(struct sockaddr_storage *addr, socklen_t len)
void ub_openssl_lock_delete(void)
int sock_list_find(struct sock_list *list, struct sockaddr_storage *addr, socklen_t len)
void addr_to_str(struct sockaddr_storage *addr, socklen_t addrlen, char *buf, size_t len)
void * listen_sslctx_create(char *key, char *pem, char *verifypem)
verbosity_value
Definition: log.h:49
void log_name_addr(enum verbosity_value v, const char *str, uint8_t *zone, struct sockaddr_storage *addr, socklen_t addrlen)
const char * buf
Definition: slow_memmem.cpp:74
int netblockstrtoaddr(const char *ip, int port, struct sockaddr_storage *addr, socklen_t *addrlen, int *net)
int authextstrtoaddr(char *str, struct sockaddr_storage *addr, socklen_t *addrlen, char **auth_name)
int sockaddr_cmp_addr(struct sockaddr_storage *addr1, socklen_t len1, struct sockaddr_storage *addr2, socklen_t len2)
boost::endian::big_uint32_t ip
Definition: socks.cpp:61
boost::endian::big_uint16_t port
Definition: socks.cpp:60
void sockaddr_store_port(struct sockaddr_storage *addr, socklen_t addrlen, int port)
int sockaddr_cmp(struct sockaddr_storage *addr1, socklen_t len1, struct sockaddr_storage *addr2, socklen_t len2)
void * memdup(void *data, size_t len)
void sock_list_merge(struct sock_list **list, struct regional *region, struct sock_list *add)
void log_err_addr(const char *str, const char *err, struct sockaddr_storage *addr, socklen_t addrlen)
void log_addr(enum verbosity_value v, const char *str, struct sockaddr_storage *addr, socklen_t addrlen)
int fd_set_block(int s)
int addr_is_broadcast(struct sockaddr_storage *addr, socklen_t addrlen)
void listen_sslctx_setup_2(void *ctxt)
char * data
Definition: regional.h:76
void * outgoing_ssl_fd(void *sslctx, int fd)
void * connect_sslctx_create(char *key, char *pem, char *verifypem, int wincert)
int extstrtoaddr(const char *str, struct sockaddr_storage *addr, socklen_t *addrlen)
int RRSET_ROUNDROBIN