Electroneum
Loading...
Searching...
No Matches
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
41
42#ifndef NET_HELP_H
43#define NET_HELP_H
44#include "util/log.h"
45struct sock_list;
46struct regional;
47
56#define BIT_CD 0x0010
58#define BIT_AD 0x0020
60#define BIT_Z 0x0040
62#define BIT_RA 0x0080
64#define BIT_RD 0x0100
66#define BIT_TC 0x0200
68#define BIT_AA 0x0400
70#define BIT_QR 0x8000
72#define FLAGS_GET_RCODE(f) ((f) & 0xf)
74#define FLAGS_SET_RCODE(f, r) (f = (((f) & 0xfff0) | (r)))
75
77#define UDP_AUTH_QUERY_TIMEOUT 3000
79#define TCP_AUTH_QUERY_TIMEOUT 3000
81#define EDNS_ADVERTISED_VERSION 0
85#define EDNS_DO 0x8000 /* Dnssec Ok */
87#define INET_SIZE 4
89#define INET6_SIZE 16
90
92#define DNSKEY_BIT_ZSK 0x0100
94#define DNSKEY_BIT_SEP 0x0001
95
97extern int MINIMAL_RESPONSES;
98
100extern int RRSET_ROUNDROBIN;
101
107int str_is_ip6(const char* str);
108
114int fd_set_nonblock(int s);
115
121int fd_set_block(int s);
122
128int is_pow2(size_t num);
129
136void* memdup(void* data, size_t len);
137
145void log_addr(enum verbosity_value v, const char* str,
146 struct sockaddr_storage* addr, socklen_t addrlen);
147
156void log_name_addr(enum verbosity_value v, const char* str, uint8_t* zone,
157 struct sockaddr_storage* addr, socklen_t addrlen);
158
166void log_err_addr(const char* str, const char* err,
167 struct sockaddr_storage* addr, socklen_t addrlen);
168
177int extstrtoaddr(const char* str, struct sockaddr_storage* addr,
178 socklen_t* addrlen);
179
188int ipstrtoaddr(const char* ip, int port, struct sockaddr_storage* addr,
189 socklen_t* addrlen);
190
201int netblockstrtoaddr(const char* ip, int port, struct sockaddr_storage* addr,
202 socklen_t* addrlen, int* net);
203
215int authextstrtoaddr(char* str, struct sockaddr_storage* addr,
216 socklen_t* addrlen, char** auth_name);
217
224void sockaddr_store_port(struct sockaddr_storage* addr, socklen_t addrlen,
225 int port);
226
235void log_nametypeclass(enum verbosity_value v, const char* str,
236 uint8_t* name, uint16_t type, uint16_t dclass);
237
247int sockaddr_cmp(struct sockaddr_storage* addr1, socklen_t len1,
248 struct sockaddr_storage* addr2, socklen_t len2);
249
258int sockaddr_cmp_addr(struct sockaddr_storage* addr1, socklen_t len1,
259 struct sockaddr_storage* addr2, socklen_t len2);
260
267int addr_is_ip6(struct sockaddr_storage* addr, socklen_t len);
268
277void addr_mask(struct sockaddr_storage* addr, socklen_t len, int net);
278
289int addr_in_common(struct sockaddr_storage* addr1, int net1,
290 struct sockaddr_storage* addr2, int net2, socklen_t addrlen);
291
300void addr_to_str(struct sockaddr_storage* addr, socklen_t addrlen,
301 char* buf, size_t len);
302
309int addr_is_ip4mapped(struct sockaddr_storage* addr, socklen_t addrlen);
310
317int addr_is_broadcast(struct sockaddr_storage* addr, socklen_t addrlen);
318
325int addr_is_any(struct sockaddr_storage* addr, socklen_t addrlen);
326
334void sock_list_insert(struct sock_list** list, struct sockaddr_storage* addr,
335 socklen_t len, struct regional* region);
336
342void sock_list_prepend(struct sock_list** list, struct sock_list* add);
343
351int sock_list_find(struct sock_list* list, struct sockaddr_storage* addr,
352 socklen_t len);
353
362void sock_list_merge(struct sock_list** list, struct regional* region,
363 struct sock_list* add);
364
369void log_crypto_err(const char* str);
370
376int listen_sslctx_setup(void* ctxt);
377
382void listen_sslctx_setup_2(void* ctxt);
383
391void* listen_sslctx_create(char* key, char* pem, char* verifypem);
392
402void* connect_sslctx_create(char* key, char* pem, char* verifypem, int wincert);
403
410void* incoming_ssl_fd(void* sslctx, int fd);
411
418void* outgoing_ssl_fd(void* sslctx, int fd);
419
425
430
431#endif /* NET_HELP_H */
const char * key
verbosity_value
Definition log.h:49
void * listen_sslctx_create(char *key, char *pem, char *verifypem)
void log_nametypeclass(enum verbosity_value v, const char *str, uint8_t *name, uint16_t type, uint16_t dclass)
int fd_set_block(int s)
int extstrtoaddr(const char *str, struct sockaddr_storage *addr, socklen_t *addrlen)
void * outgoing_ssl_fd(void *sslctx, int fd)
void log_err_addr(const char *str, const char *err, struct sockaddr_storage *addr, socklen_t addrlen)
void addr_mask(struct sockaddr_storage *addr, socklen_t len, int net)
int addr_is_broadcast(struct sockaddr_storage *addr, socklen_t addrlen)
void addr_to_str(struct sockaddr_storage *addr, socklen_t addrlen, char *buf, size_t len)
int authextstrtoaddr(char *str, struct sockaddr_storage *addr, socklen_t *addrlen, char **auth_name)
int addr_is_ip4mapped(struct sockaddr_storage *addr, socklen_t addrlen)
int addr_is_ip6(struct sockaddr_storage *addr, socklen_t len)
void sockaddr_store_port(struct sockaddr_storage *addr, socklen_t addrlen, int port)
void log_addr(enum verbosity_value v, const char *str, struct sockaddr_storage *addr, socklen_t addrlen)
void * memdup(void *data, size_t len)
int addr_is_any(struct sockaddr_storage *addr, socklen_t addrlen)
int sockaddr_cmp_addr(struct sockaddr_storage *addr1, socklen_t len1, struct sockaddr_storage *addr2, socklen_t len2)
int netblockstrtoaddr(const char *ip, int port, struct sockaddr_storage *addr, socklen_t *addrlen, int *net)
int sockaddr_cmp(struct sockaddr_storage *addr1, socklen_t len1, struct sockaddr_storage *addr2, socklen_t len2)
void sock_list_prepend(struct sock_list **list, struct sock_list *add)
int listen_sslctx_setup(void *ctxt)
void ub_openssl_lock_delete(void)
int addr_in_common(struct sockaddr_storage *addr1, int net1, struct sockaddr_storage *addr2, int net2, socklen_t addrlen)
int MINIMAL_RESPONSES
int fd_set_nonblock(int s)
void sock_list_merge(struct sock_list **list, struct regional *region, struct sock_list *add)
void sock_list_insert(struct sock_list **list, struct sockaddr_storage *addr, socklen_t len, struct regional *region)
int is_pow2(size_t num)
int ub_openssl_lock_init(void)
void * incoming_ssl_fd(void *sslctx, int fd)
int sock_list_find(struct sock_list *list, struct sockaddr_storage *addr, socklen_t len)
int str_is_ip6(const char *str)
void * connect_sslctx_create(char *key, char *pem, char *verifypem, int wincert)
void log_name_addr(enum verbosity_value v, const char *str, uint8_t *zone, struct sockaddr_storage *addr, socklen_t addrlen)
void log_crypto_err(const char *str)
int ipstrtoaddr(const char *ip, int port, struct sockaddr_storage *addr, socklen_t *addrlen)
uint16_t EDNS_ADVERTISED_SIZE
int RRSET_ROUNDROBIN
void listen_sslctx_setup_2(void *ctxt)
const char * buf
unsigned short uint16_t
Definition stdint.h:125
unsigned char uint8_t
Definition stdint.h:124
char * data
Definition regional.h:76