overmind 0.1.0-x86_64-freebsd → 0.1.2-x86_64-freebsd
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/overmind/version.rb +1 -1
- metadata +2 -66
- data/libexec/prebuilt-tmux/bin/event_rpcgen.py +0 -1925
- data/libexec/prebuilt-tmux/bin/tmux +0 -0
- data/libexec/prebuilt-tmux/include/evdns.h +0 -45
- data/libexec/prebuilt-tmux/include/event.h +0 -83
- data/libexec/prebuilt-tmux/include/event2/buffer.h +0 -1077
- data/libexec/prebuilt-tmux/include/event2/buffer_compat.h +0 -116
- data/libexec/prebuilt-tmux/include/event2/bufferevent.h +0 -1024
- data/libexec/prebuilt-tmux/include/event2/bufferevent_compat.h +0 -104
- data/libexec/prebuilt-tmux/include/event2/bufferevent_ssl.h +0 -134
- data/libexec/prebuilt-tmux/include/event2/bufferevent_struct.h +0 -116
- data/libexec/prebuilt-tmux/include/event2/dns.h +0 -751
- data/libexec/prebuilt-tmux/include/event2/dns_compat.h +0 -358
- data/libexec/prebuilt-tmux/include/event2/dns_struct.h +0 -80
- data/libexec/prebuilt-tmux/include/event2/event-config.h +0 -570
- data/libexec/prebuilt-tmux/include/event2/event.h +0 -1672
- data/libexec/prebuilt-tmux/include/event2/event_compat.h +0 -230
- data/libexec/prebuilt-tmux/include/event2/event_struct.h +0 -180
- data/libexec/prebuilt-tmux/include/event2/http.h +0 -1192
- data/libexec/prebuilt-tmux/include/event2/http_compat.h +0 -94
- data/libexec/prebuilt-tmux/include/event2/http_struct.h +0 -152
- data/libexec/prebuilt-tmux/include/event2/keyvalq_struct.h +0 -80
- data/libexec/prebuilt-tmux/include/event2/listener.h +0 -192
- data/libexec/prebuilt-tmux/include/event2/rpc.h +0 -626
- data/libexec/prebuilt-tmux/include/event2/rpc_compat.h +0 -61
- data/libexec/prebuilt-tmux/include/event2/rpc_struct.h +0 -114
- data/libexec/prebuilt-tmux/include/event2/tag.h +0 -146
- data/libexec/prebuilt-tmux/include/event2/tag_compat.h +0 -49
- data/libexec/prebuilt-tmux/include/event2/thread.h +0 -253
- data/libexec/prebuilt-tmux/include/event2/util.h +0 -888
- data/libexec/prebuilt-tmux/include/event2/visibility.h +0 -67
- data/libexec/prebuilt-tmux/include/evhttp.h +0 -45
- data/libexec/prebuilt-tmux/include/evrpc.h +0 -45
- data/libexec/prebuilt-tmux/include/evutil.h +0 -39
- data/libexec/prebuilt-tmux/include/utf8proc.h +0 -743
- data/libexec/prebuilt-tmux/lib/libevent-2.1.7.dylib +0 -0
- data/libexec/prebuilt-tmux/lib/libevent.a +0 -0
- data/libexec/prebuilt-tmux/lib/libevent.dylib +0 -1
- data/libexec/prebuilt-tmux/lib/libevent.la +0 -41
- data/libexec/prebuilt-tmux/lib/libevent_core-2.1.7.dylib +0 -0
- data/libexec/prebuilt-tmux/lib/libevent_core.a +0 -0
- data/libexec/prebuilt-tmux/lib/libevent_core.dylib +0 -1
- data/libexec/prebuilt-tmux/lib/libevent_core.la +0 -41
- data/libexec/prebuilt-tmux/lib/libevent_extra-2.1.7.dylib +0 -0
- data/libexec/prebuilt-tmux/lib/libevent_extra.a +0 -0
- data/libexec/prebuilt-tmux/lib/libevent_extra.dylib +0 -1
- data/libexec/prebuilt-tmux/lib/libevent_extra.la +0 -41
- data/libexec/prebuilt-tmux/lib/libevent_openssl-2.1.7.dylib +0 -0
- data/libexec/prebuilt-tmux/lib/libevent_openssl.a +0 -0
- data/libexec/prebuilt-tmux/lib/libevent_openssl.dylib +0 -1
- data/libexec/prebuilt-tmux/lib/libevent_openssl.la +0 -41
- data/libexec/prebuilt-tmux/lib/libevent_pthreads-2.1.7.dylib +0 -0
- data/libexec/prebuilt-tmux/lib/libevent_pthreads.a +0 -0
- data/libexec/prebuilt-tmux/lib/libevent_pthreads.dylib +0 -1
- data/libexec/prebuilt-tmux/lib/libevent_pthreads.la +0 -41
- data/libexec/prebuilt-tmux/lib/libutf8proc.3.dylib +0 -0
- data/libexec/prebuilt-tmux/lib/libutf8proc.a +0 -0
- data/libexec/prebuilt-tmux/lib/libutf8proc.dylib +0 -1
- data/libexec/prebuilt-tmux/lib/pkgconfig/libevent.pc +0 -16
- data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_core.pc +0 -16
- data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_extra.pc +0 -16
- data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_openssl.pc +0 -16
- data/libexec/prebuilt-tmux/lib/pkgconfig/libevent_pthreads.pc +0 -16
- data/libexec/prebuilt-tmux/lib/pkgconfig/libutf8proc.pc +0 -10
- data/libexec/prebuilt-tmux/share/man/man1/tmux.1 +0 -7242
@@ -1,751 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Copyright (c) 2006-2007 Niels Provos <provos@citi.umich.edu>
|
3
|
-
* Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
|
4
|
-
*
|
5
|
-
* Redistribution and use in source and binary forms, with or without
|
6
|
-
* modification, are permitted provided that the following conditions
|
7
|
-
* are met:
|
8
|
-
* 1. Redistributions of source code must retain the above copyright
|
9
|
-
* notice, this list of conditions and the following disclaimer.
|
10
|
-
* 2. Redistributions in binary form must reproduce the above copyright
|
11
|
-
* notice, this list of conditions and the following disclaimer in the
|
12
|
-
* documentation and/or other materials provided with the distribution.
|
13
|
-
* 3. The name of the author may not be used to endorse or promote products
|
14
|
-
* derived from this software without specific prior written permission.
|
15
|
-
*
|
16
|
-
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
17
|
-
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
18
|
-
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
19
|
-
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
20
|
-
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
21
|
-
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
22
|
-
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
23
|
-
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
24
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
25
|
-
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
26
|
-
*/
|
27
|
-
|
28
|
-
/*
|
29
|
-
* The original DNS code is due to Adam Langley with heavy
|
30
|
-
* modifications by Nick Mathewson. Adam put his DNS software in the
|
31
|
-
* public domain. You can find his original copyright below. Please,
|
32
|
-
* aware that the code as part of Libevent is governed by the 3-clause
|
33
|
-
* BSD license above.
|
34
|
-
*
|
35
|
-
* This software is Public Domain. To view a copy of the public domain dedication,
|
36
|
-
* visit http://creativecommons.org/licenses/publicdomain/ or send a letter to
|
37
|
-
* Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
|
38
|
-
*
|
39
|
-
* I ask and expect, but do not require, that all derivative works contain an
|
40
|
-
* attribution similar to:
|
41
|
-
* Parts developed by Adam Langley <agl@imperialviolet.org>
|
42
|
-
*
|
43
|
-
* You may wish to replace the word "Parts" with something else depending on
|
44
|
-
* the amount of original code.
|
45
|
-
*
|
46
|
-
* (Derivative works does not include programs which link against, run or include
|
47
|
-
* the source verbatim in their source distributions)
|
48
|
-
*/
|
49
|
-
|
50
|
-
/** @file event2/dns.h
|
51
|
-
*
|
52
|
-
* Welcome, gentle reader
|
53
|
-
*
|
54
|
-
* Async DNS lookups are really a whole lot harder than they should be,
|
55
|
-
* mostly stemming from the fact that the libc resolver has never been
|
56
|
-
* very good at them. Before you use this library you should see if libc
|
57
|
-
* can do the job for you with the modern async call getaddrinfo_a
|
58
|
-
* (see http://www.imperialviolet.org/page25.html#e498). Otherwise,
|
59
|
-
* please continue.
|
60
|
-
*
|
61
|
-
* The library keeps track of the state of nameservers and will avoid
|
62
|
-
* them when they go down. Otherwise it will round robin between them.
|
63
|
-
*
|
64
|
-
* Quick start guide:
|
65
|
-
* #include "evdns.h"
|
66
|
-
* void callback(int result, char type, int count, int ttl,
|
67
|
-
* void *addresses, void *arg);
|
68
|
-
* evdns_resolv_conf_parse(DNS_OPTIONS_ALL, "/etc/resolv.conf");
|
69
|
-
* evdns_resolve("www.hostname.com", 0, callback, NULL);
|
70
|
-
*
|
71
|
-
* When the lookup is complete the callback function is called. The
|
72
|
-
* first argument will be one of the DNS_ERR_* defines in evdns.h.
|
73
|
-
* Hopefully it will be DNS_ERR_NONE, in which case type will be
|
74
|
-
* DNS_IPv4_A, count will be the number of IP addresses, ttl is the time
|
75
|
-
* which the data can be cached for (in seconds), addresses will point
|
76
|
-
* to an array of uint32_t's and arg will be whatever you passed to
|
77
|
-
* evdns_resolve.
|
78
|
-
*
|
79
|
-
* Searching:
|
80
|
-
*
|
81
|
-
* In order for this library to be a good replacement for glibc's resolver it
|
82
|
-
* supports searching. This involves setting a list of default domains, in
|
83
|
-
* which names will be queried for. The number of dots in the query name
|
84
|
-
* determines the order in which this list is used.
|
85
|
-
*
|
86
|
-
* Searching appears to be a single lookup from the point of view of the API,
|
87
|
-
* although many DNS queries may be generated from a single call to
|
88
|
-
* evdns_resolve. Searching can also drastically slow down the resolution
|
89
|
-
* of names.
|
90
|
-
*
|
91
|
-
* To disable searching:
|
92
|
-
* 1. Never set it up. If you never call evdns_resolv_conf_parse or
|
93
|
-
* evdns_search_add then no searching will occur.
|
94
|
-
*
|
95
|
-
* 2. If you do call evdns_resolv_conf_parse then don't pass
|
96
|
-
* DNS_OPTION_SEARCH (or DNS_OPTIONS_ALL, which implies it).
|
97
|
-
*
|
98
|
-
* 3. When calling evdns_resolve, pass the DNS_QUERY_NO_SEARCH flag.
|
99
|
-
*
|
100
|
-
* The order of searches depends on the number of dots in the name. If the
|
101
|
-
* number is greater than the ndots setting then the names is first tried
|
102
|
-
* globally. Otherwise each search domain is appended in turn.
|
103
|
-
*
|
104
|
-
* The ndots setting can either be set from a resolv.conf, or by calling
|
105
|
-
* evdns_search_ndots_set.
|
106
|
-
*
|
107
|
-
* For example, with ndots set to 1 (the default) and a search domain list of
|
108
|
-
* ["myhome.net"]:
|
109
|
-
* Query: www
|
110
|
-
* Order: www.myhome.net, www.
|
111
|
-
*
|
112
|
-
* Query: www.abc
|
113
|
-
* Order: www.abc., www.abc.myhome.net
|
114
|
-
*
|
115
|
-
* Internals:
|
116
|
-
*
|
117
|
-
* Requests are kept in two queues. The first is the inflight queue. In
|
118
|
-
* this queue requests have an allocated transaction id and nameserver.
|
119
|
-
* They will soon be transmitted if they haven't already been.
|
120
|
-
*
|
121
|
-
* The second is the waiting queue. The size of the inflight ring is
|
122
|
-
* limited and all other requests wait in waiting queue for space. This
|
123
|
-
* bounds the number of concurrent requests so that we don't flood the
|
124
|
-
* nameserver. Several algorithms require a full walk of the inflight
|
125
|
-
* queue and so bounding its size keeps thing going nicely under huge
|
126
|
-
* (many thousands of requests) loads.
|
127
|
-
*
|
128
|
-
* If a nameserver loses too many requests it is considered down and we
|
129
|
-
* try not to use it. After a while we send a probe to that nameserver
|
130
|
-
* (a lookup for google.com) and, if it replies, we consider it working
|
131
|
-
* again. If the nameserver fails a probe we wait longer to try again
|
132
|
-
* with the next probe.
|
133
|
-
*/
|
134
|
-
|
135
|
-
#ifndef EVENT2_DNS_H_INCLUDED_
|
136
|
-
#define EVENT2_DNS_H_INCLUDED_
|
137
|
-
|
138
|
-
#include <event2/visibility.h>
|
139
|
-
|
140
|
-
#ifdef __cplusplus
|
141
|
-
extern "C" {
|
142
|
-
#endif
|
143
|
-
|
144
|
-
/* For integer types. */
|
145
|
-
#include <event2/util.h>
|
146
|
-
|
147
|
-
/** Error codes 0-5 are as described in RFC 1035. */
|
148
|
-
#define DNS_ERR_NONE 0
|
149
|
-
/** The name server was unable to interpret the query */
|
150
|
-
#define DNS_ERR_FORMAT 1
|
151
|
-
/** The name server was unable to process this query due to a problem with the
|
152
|
-
* name server */
|
153
|
-
#define DNS_ERR_SERVERFAILED 2
|
154
|
-
/** The domain name does not exist */
|
155
|
-
#define DNS_ERR_NOTEXIST 3
|
156
|
-
/** The name server does not support the requested kind of query */
|
157
|
-
#define DNS_ERR_NOTIMPL 4
|
158
|
-
/** The name server refuses to reform the specified operation for policy
|
159
|
-
* reasons */
|
160
|
-
#define DNS_ERR_REFUSED 5
|
161
|
-
/** The reply was truncated or ill-formatted */
|
162
|
-
#define DNS_ERR_TRUNCATED 65
|
163
|
-
/** An unknown error occurred */
|
164
|
-
#define DNS_ERR_UNKNOWN 66
|
165
|
-
/** Communication with the server timed out */
|
166
|
-
#define DNS_ERR_TIMEOUT 67
|
167
|
-
/** The request was canceled because the DNS subsystem was shut down. */
|
168
|
-
#define DNS_ERR_SHUTDOWN 68
|
169
|
-
/** The request was canceled via a call to evdns_cancel_request */
|
170
|
-
#define DNS_ERR_CANCEL 69
|
171
|
-
/** There were no answers and no error condition in the DNS packet.
|
172
|
-
* This can happen when you ask for an address that exists, but a record
|
173
|
-
* type that doesn't. */
|
174
|
-
#define DNS_ERR_NODATA 70
|
175
|
-
|
176
|
-
#define DNS_IPv4_A 1
|
177
|
-
#define DNS_PTR 2
|
178
|
-
#define DNS_IPv6_AAAA 3
|
179
|
-
|
180
|
-
#define DNS_QUERY_NO_SEARCH 1
|
181
|
-
|
182
|
-
/* Allow searching */
|
183
|
-
#define DNS_OPTION_SEARCH 1
|
184
|
-
/* Parse "nameserver" and add default if no such section */
|
185
|
-
#define DNS_OPTION_NAMESERVERS 2
|
186
|
-
/* Parse additional options like:
|
187
|
-
* - timeout:
|
188
|
-
* - getaddrinfo-allow-skew:
|
189
|
-
* - max-timeouts:
|
190
|
-
* - max-inflight:
|
191
|
-
* - attempts:
|
192
|
-
* - randomize-case:
|
193
|
-
* - initial-probe-timeout:
|
194
|
-
*/
|
195
|
-
#define DNS_OPTION_MISC 4
|
196
|
-
/* Load hosts file (i.e. "/etc/hosts") */
|
197
|
-
#define DNS_OPTION_HOSTSFILE 8
|
198
|
-
/**
|
199
|
-
* All above:
|
200
|
-
* - DNS_OPTION_SEARCH
|
201
|
-
* - DNS_OPTION_NAMESERVERS
|
202
|
-
* - DNS_OPTION_MISC
|
203
|
-
* - DNS_OPTION_HOSTSFILE
|
204
|
-
*/
|
205
|
-
#define DNS_OPTIONS_ALL ( \
|
206
|
-
DNS_OPTION_SEARCH | \
|
207
|
-
DNS_OPTION_NAMESERVERS | \
|
208
|
-
DNS_OPTION_MISC | \
|
209
|
-
DNS_OPTION_HOSTSFILE | \
|
210
|
-
0 \
|
211
|
-
)
|
212
|
-
/* Do not "default" nameserver (i.e. "127.0.0.1:53") if there is no nameservers
|
213
|
-
* in resolv.conf, (iff DNS_OPTION_NAMESERVERS is set) */
|
214
|
-
#define DNS_OPTION_NAMESERVERS_NO_DEFAULT 16
|
215
|
-
|
216
|
-
/* Obsolete name for DNS_QUERY_NO_SEARCH */
|
217
|
-
#define DNS_NO_SEARCH DNS_QUERY_NO_SEARCH
|
218
|
-
|
219
|
-
/**
|
220
|
-
* The callback that contains the results from a lookup.
|
221
|
-
* - result is one of the DNS_ERR_* values (DNS_ERR_NONE for success)
|
222
|
-
* - type is either DNS_IPv4_A or DNS_PTR or DNS_IPv6_AAAA
|
223
|
-
* - count contains the number of addresses of form type
|
224
|
-
* - ttl is the number of seconds the resolution may be cached for.
|
225
|
-
* - addresses needs to be cast according to type. It will be an array of
|
226
|
-
* 4-byte sequences for ipv4, or an array of 16-byte sequences for ipv6,
|
227
|
-
* or a nul-terminated string for PTR.
|
228
|
-
*/
|
229
|
-
typedef void (*evdns_callback_type) (int result, char type, int count, int ttl, void *addresses, void *arg);
|
230
|
-
|
231
|
-
struct evdns_base;
|
232
|
-
struct event_base;
|
233
|
-
|
234
|
-
/** Flag for evdns_base_new: process resolv.conf. */
|
235
|
-
#define EVDNS_BASE_INITIALIZE_NAMESERVERS 1
|
236
|
-
/** Flag for evdns_base_new: Do not prevent the libevent event loop from
|
237
|
-
* exiting when we have no active dns requests. */
|
238
|
-
#define EVDNS_BASE_DISABLE_WHEN_INACTIVE 0x8000
|
239
|
-
/** Flag for evdns_base_new: If EVDNS_BASE_INITIALIZE_NAMESERVERS isset, do not
|
240
|
-
* add default nameserver if there are no nameservers in resolv.conf
|
241
|
-
* @see DNS_OPTION_NAMESERVERS_NO_DEFAULT */
|
242
|
-
#define EVDNS_BASE_NAMESERVERS_NO_DEFAULT 0x10000
|
243
|
-
|
244
|
-
/**
|
245
|
-
Initialize the asynchronous DNS library.
|
246
|
-
|
247
|
-
This function initializes support for non-blocking name resolution by
|
248
|
-
calling evdns_resolv_conf_parse() on UNIX and
|
249
|
-
evdns_config_windows_nameservers() on Windows.
|
250
|
-
|
251
|
-
@param event_base the event base to associate the dns client with
|
252
|
-
@param flags any of EVDNS_BASE_INITIALIZE_NAMESERVERS|
|
253
|
-
EVDNS_BASE_DISABLE_WHEN_INACTIVE|EVDNS_BASE_NAMESERVERS_NO_DEFAULT
|
254
|
-
@return evdns_base object if successful, or NULL if an error occurred.
|
255
|
-
@see evdns_base_free()
|
256
|
-
*/
|
257
|
-
EVENT2_EXPORT_SYMBOL
|
258
|
-
struct evdns_base * evdns_base_new(struct event_base *event_base, int initialize_nameservers);
|
259
|
-
|
260
|
-
|
261
|
-
/**
|
262
|
-
Shut down the asynchronous DNS resolver and terminate all active requests.
|
263
|
-
|
264
|
-
If the 'fail_requests' option is enabled, all active requests will return
|
265
|
-
an empty result with the error flag set to DNS_ERR_SHUTDOWN. Otherwise,
|
266
|
-
the requests will be silently discarded.
|
267
|
-
|
268
|
-
@param evdns_base the evdns base to free
|
269
|
-
@param fail_requests if zero, active requests will be aborted; if non-zero,
|
270
|
-
active requests will return DNS_ERR_SHUTDOWN.
|
271
|
-
@see evdns_base_new()
|
272
|
-
*/
|
273
|
-
EVENT2_EXPORT_SYMBOL
|
274
|
-
void evdns_base_free(struct evdns_base *base, int fail_requests);
|
275
|
-
|
276
|
-
/**
|
277
|
-
Remove all hosts entries that have been loaded into the event_base via
|
278
|
-
evdns_base_load_hosts or via event_base_resolv_conf_parse.
|
279
|
-
|
280
|
-
@param evdns_base the evdns base to remove outdated host addresses from
|
281
|
-
*/
|
282
|
-
EVENT2_EXPORT_SYMBOL
|
283
|
-
void evdns_base_clear_host_addresses(struct evdns_base *base);
|
284
|
-
|
285
|
-
/**
|
286
|
-
Convert a DNS error code to a string.
|
287
|
-
|
288
|
-
@param err the DNS error code
|
289
|
-
@return a string containing an explanation of the error code
|
290
|
-
*/
|
291
|
-
EVENT2_EXPORT_SYMBOL
|
292
|
-
const char *evdns_err_to_string(int err);
|
293
|
-
|
294
|
-
|
295
|
-
/**
|
296
|
-
Add a nameserver.
|
297
|
-
|
298
|
-
The address should be an IPv4 address in network byte order.
|
299
|
-
The type of address is chosen so that it matches in_addr.s_addr.
|
300
|
-
|
301
|
-
@param base the evdns_base to which to add the name server
|
302
|
-
@param address an IP address in network byte order
|
303
|
-
@return 0 if successful, or -1 if an error occurred
|
304
|
-
@see evdns_base_nameserver_ip_add()
|
305
|
-
*/
|
306
|
-
EVENT2_EXPORT_SYMBOL
|
307
|
-
int evdns_base_nameserver_add(struct evdns_base *base,
|
308
|
-
unsigned long int address);
|
309
|
-
|
310
|
-
/**
|
311
|
-
Get the number of configured nameservers.
|
312
|
-
|
313
|
-
This returns the number of configured nameservers (not necessarily the
|
314
|
-
number of running nameservers). This is useful for double-checking
|
315
|
-
whether our calls to the various nameserver configuration functions
|
316
|
-
have been successful.
|
317
|
-
|
318
|
-
@param base the evdns_base to which to apply this operation
|
319
|
-
@return the number of configured nameservers
|
320
|
-
@see evdns_base_nameserver_add()
|
321
|
-
*/
|
322
|
-
EVENT2_EXPORT_SYMBOL
|
323
|
-
int evdns_base_count_nameservers(struct evdns_base *base);
|
324
|
-
|
325
|
-
/**
|
326
|
-
Remove all configured nameservers, and suspend all pending resolves.
|
327
|
-
|
328
|
-
Resolves will not necessarily be re-attempted until evdns_base_resume() is called.
|
329
|
-
|
330
|
-
@param base the evdns_base to which to apply this operation
|
331
|
-
@return 0 if successful, or -1 if an error occurred
|
332
|
-
@see evdns_base_resume()
|
333
|
-
*/
|
334
|
-
EVENT2_EXPORT_SYMBOL
|
335
|
-
int evdns_base_clear_nameservers_and_suspend(struct evdns_base *base);
|
336
|
-
|
337
|
-
|
338
|
-
/**
|
339
|
-
Resume normal operation and continue any suspended resolve requests.
|
340
|
-
|
341
|
-
Re-attempt resolves left in limbo after an earlier call to
|
342
|
-
evdns_base_clear_nameservers_and_suspend().
|
343
|
-
|
344
|
-
@param base the evdns_base to which to apply this operation
|
345
|
-
@return 0 if successful, or -1 if an error occurred
|
346
|
-
@see evdns_base_clear_nameservers_and_suspend()
|
347
|
-
*/
|
348
|
-
EVENT2_EXPORT_SYMBOL
|
349
|
-
int evdns_base_resume(struct evdns_base *base);
|
350
|
-
|
351
|
-
/**
|
352
|
-
Add a nameserver by string address.
|
353
|
-
|
354
|
-
This function parses a n IPv4 or IPv6 address from a string and adds it as a
|
355
|
-
nameserver. It supports the following formats:
|
356
|
-
- [IPv6Address]:port
|
357
|
-
- [IPv6Address]
|
358
|
-
- IPv6Address
|
359
|
-
- IPv4Address:port
|
360
|
-
- IPv4Address
|
361
|
-
|
362
|
-
If no port is specified, it defaults to 53.
|
363
|
-
|
364
|
-
@param base the evdns_base to which to apply this operation
|
365
|
-
@return 0 if successful, or -1 if an error occurred
|
366
|
-
@see evdns_base_nameserver_add()
|
367
|
-
*/
|
368
|
-
EVENT2_EXPORT_SYMBOL
|
369
|
-
int evdns_base_nameserver_ip_add(struct evdns_base *base,
|
370
|
-
const char *ip_as_string);
|
371
|
-
|
372
|
-
/**
|
373
|
-
Add a nameserver by sockaddr.
|
374
|
-
**/
|
375
|
-
EVENT2_EXPORT_SYMBOL
|
376
|
-
int
|
377
|
-
evdns_base_nameserver_sockaddr_add(struct evdns_base *base,
|
378
|
-
const struct sockaddr *sa, ev_socklen_t len, unsigned flags);
|
379
|
-
|
380
|
-
struct evdns_request;
|
381
|
-
|
382
|
-
/**
|
383
|
-
Lookup an A record for a given name.
|
384
|
-
|
385
|
-
@param base the evdns_base to which to apply this operation
|
386
|
-
@param name a DNS hostname
|
387
|
-
@param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query.
|
388
|
-
@param callback a callback function to invoke when the request is completed
|
389
|
-
@param ptr an argument to pass to the callback function
|
390
|
-
@return an evdns_request object if successful, or NULL if an error occurred.
|
391
|
-
@see evdns_resolve_ipv6(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6(), evdns_cancel_request()
|
392
|
-
*/
|
393
|
-
EVENT2_EXPORT_SYMBOL
|
394
|
-
struct evdns_request *evdns_base_resolve_ipv4(struct evdns_base *base, const char *name, int flags, evdns_callback_type callback, void *ptr);
|
395
|
-
|
396
|
-
/**
|
397
|
-
Lookup an AAAA record for a given name.
|
398
|
-
|
399
|
-
@param base the evdns_base to which to apply this operation
|
400
|
-
@param name a DNS hostname
|
401
|
-
@param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query.
|
402
|
-
@param callback a callback function to invoke when the request is completed
|
403
|
-
@param ptr an argument to pass to the callback function
|
404
|
-
@return an evdns_request object if successful, or NULL if an error occurred.
|
405
|
-
@see evdns_resolve_ipv4(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6(), evdns_cancel_request()
|
406
|
-
*/
|
407
|
-
EVENT2_EXPORT_SYMBOL
|
408
|
-
struct evdns_request *evdns_base_resolve_ipv6(struct evdns_base *base, const char *name, int flags, evdns_callback_type callback, void *ptr);
|
409
|
-
|
410
|
-
struct in_addr;
|
411
|
-
struct in6_addr;
|
412
|
-
|
413
|
-
/**
|
414
|
-
Lookup a PTR record for a given IP address.
|
415
|
-
|
416
|
-
@param base the evdns_base to which to apply this operation
|
417
|
-
@param in an IPv4 address
|
418
|
-
@param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query.
|
419
|
-
@param callback a callback function to invoke when the request is completed
|
420
|
-
@param ptr an argument to pass to the callback function
|
421
|
-
@return an evdns_request object if successful, or NULL if an error occurred.
|
422
|
-
@see evdns_resolve_reverse_ipv6(), evdns_cancel_request()
|
423
|
-
*/
|
424
|
-
EVENT2_EXPORT_SYMBOL
|
425
|
-
struct evdns_request *evdns_base_resolve_reverse(struct evdns_base *base, const struct in_addr *in, int flags, evdns_callback_type callback, void *ptr);
|
426
|
-
|
427
|
-
|
428
|
-
/**
|
429
|
-
Lookup a PTR record for a given IPv6 address.
|
430
|
-
|
431
|
-
@param base the evdns_base to which to apply this operation
|
432
|
-
@param in an IPv6 address
|
433
|
-
@param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query.
|
434
|
-
@param callback a callback function to invoke when the request is completed
|
435
|
-
@param ptr an argument to pass to the callback function
|
436
|
-
@return an evdns_request object if successful, or NULL if an error occurred.
|
437
|
-
@see evdns_resolve_reverse_ipv6(), evdns_cancel_request()
|
438
|
-
*/
|
439
|
-
EVENT2_EXPORT_SYMBOL
|
440
|
-
struct evdns_request *evdns_base_resolve_reverse_ipv6(struct evdns_base *base, const struct in6_addr *in, int flags, evdns_callback_type callback, void *ptr);
|
441
|
-
|
442
|
-
/**
|
443
|
-
Cancels a pending DNS resolution request.
|
444
|
-
|
445
|
-
@param base the evdns_base that was used to make the request
|
446
|
-
@param req the evdns_request that was returned by calling a resolve function
|
447
|
-
@see evdns_base_resolve_ipv4(), evdns_base_resolve_ipv6, evdns_base_resolve_reverse
|
448
|
-
*/
|
449
|
-
EVENT2_EXPORT_SYMBOL
|
450
|
-
void evdns_cancel_request(struct evdns_base *base, struct evdns_request *req);
|
451
|
-
|
452
|
-
/**
|
453
|
-
Set the value of a configuration option.
|
454
|
-
|
455
|
-
The currently available configuration options are:
|
456
|
-
|
457
|
-
ndots, timeout, max-timeouts, max-inflight, attempts, randomize-case,
|
458
|
-
bind-to, initial-probe-timeout, getaddrinfo-allow-skew,
|
459
|
-
so-rcvbuf, so-sndbuf.
|
460
|
-
|
461
|
-
In versions before Libevent 2.0.3-alpha, the option name needed to end with
|
462
|
-
a colon.
|
463
|
-
|
464
|
-
@param base the evdns_base to which to apply this operation
|
465
|
-
@param option the name of the configuration option to be modified
|
466
|
-
@param val the value to be set
|
467
|
-
@return 0 if successful, or -1 if an error occurred
|
468
|
-
*/
|
469
|
-
EVENT2_EXPORT_SYMBOL
|
470
|
-
int evdns_base_set_option(struct evdns_base *base, const char *option, const char *val);
|
471
|
-
|
472
|
-
|
473
|
-
/**
|
474
|
-
Parse a resolv.conf file.
|
475
|
-
|
476
|
-
The 'flags' parameter determines what information is parsed from the
|
477
|
-
resolv.conf file. See the man page for resolv.conf for the format of this
|
478
|
-
file.
|
479
|
-
|
480
|
-
The following directives are not parsed from the file: sortlist, rotate,
|
481
|
-
no-check-names, inet6, debug.
|
482
|
-
|
483
|
-
If this function encounters an error, the possible return values are: 1 =
|
484
|
-
failed to open file, 2 = failed to stat file, 3 = file too large, 4 = out of
|
485
|
-
memory, 5 = short read from file, 6 = no nameservers listed in the file
|
486
|
-
|
487
|
-
@param base the evdns_base to which to apply this operation
|
488
|
-
@param flags any of DNS_OPTION_NAMESERVERS|DNS_OPTION_SEARCH|DNS_OPTION_MISC|
|
489
|
-
DNS_OPTION_HOSTSFILE|DNS_OPTIONS_ALL|DNS_OPTION_NAMESERVERS_NO_DEFAULT
|
490
|
-
@param filename the path to the resolv.conf file
|
491
|
-
@return 0 if successful, or various positive error codes if an error
|
492
|
-
occurred (see above)
|
493
|
-
@see resolv.conf(3), evdns_config_windows_nameservers()
|
494
|
-
*/
|
495
|
-
EVENT2_EXPORT_SYMBOL
|
496
|
-
int evdns_base_resolv_conf_parse(struct evdns_base *base, int flags, const char *const filename);
|
497
|
-
|
498
|
-
/**
|
499
|
-
Load an /etc/hosts-style file from 'hosts_fname' into 'base'.
|
500
|
-
|
501
|
-
If hosts_fname is NULL, add minimal entries for localhost, and nothing
|
502
|
-
else.
|
503
|
-
|
504
|
-
Note that only evdns_getaddrinfo uses the /etc/hosts entries.
|
505
|
-
|
506
|
-
This function does not replace previously loaded hosts entries; to do that,
|
507
|
-
call evdns_base_clear_host_addresses first.
|
508
|
-
|
509
|
-
Return 0 on success, negative on failure.
|
510
|
-
*/
|
511
|
-
EVENT2_EXPORT_SYMBOL
|
512
|
-
int evdns_base_load_hosts(struct evdns_base *base, const char *hosts_fname);
|
513
|
-
|
514
|
-
#if defined(EVENT_IN_DOXYGEN_) || defined(_WIN32)
|
515
|
-
/**
|
516
|
-
Obtain nameserver information using the Windows API.
|
517
|
-
|
518
|
-
Attempt to configure a set of nameservers based on platform settings on
|
519
|
-
a win32 host. Preferentially tries to use GetNetworkParams; if that fails,
|
520
|
-
looks in the registry.
|
521
|
-
|
522
|
-
@return 0 if successful, or -1 if an error occurred
|
523
|
-
@see evdns_resolv_conf_parse()
|
524
|
-
*/
|
525
|
-
EVENT2_EXPORT_SYMBOL
|
526
|
-
int evdns_base_config_windows_nameservers(struct evdns_base *);
|
527
|
-
#define EVDNS_BASE_CONFIG_WINDOWS_NAMESERVERS_IMPLEMENTED
|
528
|
-
#endif
|
529
|
-
|
530
|
-
|
531
|
-
/**
|
532
|
-
Clear the list of search domains.
|
533
|
-
*/
|
534
|
-
EVENT2_EXPORT_SYMBOL
|
535
|
-
void evdns_base_search_clear(struct evdns_base *base);
|
536
|
-
|
537
|
-
|
538
|
-
/**
|
539
|
-
Add a domain to the list of search domains
|
540
|
-
|
541
|
-
@param domain the domain to be added to the search list
|
542
|
-
*/
|
543
|
-
EVENT2_EXPORT_SYMBOL
|
544
|
-
void evdns_base_search_add(struct evdns_base *base, const char *domain);
|
545
|
-
|
546
|
-
|
547
|
-
/**
|
548
|
-
Set the 'ndots' parameter for searches.
|
549
|
-
|
550
|
-
Sets the number of dots which, when found in a name, causes
|
551
|
-
the first query to be without any search domain.
|
552
|
-
|
553
|
-
@param ndots the new ndots parameter
|
554
|
-
*/
|
555
|
-
EVENT2_EXPORT_SYMBOL
|
556
|
-
void evdns_base_search_ndots_set(struct evdns_base *base, const int ndots);
|
557
|
-
|
558
|
-
/**
|
559
|
-
A callback that is invoked when a log message is generated
|
560
|
-
|
561
|
-
@param is_warning indicates if the log message is a 'warning'
|
562
|
-
@param msg the content of the log message
|
563
|
-
*/
|
564
|
-
typedef void (*evdns_debug_log_fn_type)(int is_warning, const char *msg);
|
565
|
-
|
566
|
-
|
567
|
-
/**
|
568
|
-
Set the callback function to handle DNS log messages. If this
|
569
|
-
callback is not set, evdns log messages are handled with the regular
|
570
|
-
Libevent logging system.
|
571
|
-
|
572
|
-
@param fn the callback to be invoked when a log message is generated
|
573
|
-
*/
|
574
|
-
EVENT2_EXPORT_SYMBOL
|
575
|
-
void evdns_set_log_fn(evdns_debug_log_fn_type fn);
|
576
|
-
|
577
|
-
/**
|
578
|
-
Set a callback that will be invoked to generate transaction IDs. By
|
579
|
-
default, we pick transaction IDs based on the current clock time, which
|
580
|
-
is bad for security.
|
581
|
-
|
582
|
-
@param fn the new callback, or NULL to use the default.
|
583
|
-
|
584
|
-
NOTE: This function has no effect in Libevent 2.0.4-alpha and later,
|
585
|
-
since Libevent now provides its own secure RNG.
|
586
|
-
*/
|
587
|
-
EVENT2_EXPORT_SYMBOL
|
588
|
-
void evdns_set_transaction_id_fn(ev_uint16_t (*fn)(void));
|
589
|
-
|
590
|
-
/**
|
591
|
-
Set a callback used to generate random bytes. By default, we use
|
592
|
-
the same function as passed to evdns_set_transaction_id_fn to generate
|
593
|
-
bytes two at a time. If a function is provided here, it's also used
|
594
|
-
to generate transaction IDs.
|
595
|
-
|
596
|
-
NOTE: This function has no effect in Libevent 2.0.4-alpha and later,
|
597
|
-
since Libevent now provides its own secure RNG.
|
598
|
-
*/
|
599
|
-
EVENT2_EXPORT_SYMBOL
|
600
|
-
void evdns_set_random_bytes_fn(void (*fn)(char *, size_t));
|
601
|
-
|
602
|
-
/*
|
603
|
-
* Functions used to implement a DNS server.
|
604
|
-
*/
|
605
|
-
|
606
|
-
struct evdns_server_request;
|
607
|
-
struct evdns_server_question;
|
608
|
-
|
609
|
-
/**
|
610
|
-
A callback to implement a DNS server. The callback function receives a DNS
|
611
|
-
request. It should then optionally add a number of answers to the reply
|
612
|
-
using the evdns_server_request_add_*_reply functions, before calling either
|
613
|
-
evdns_server_request_respond to send the reply back, or
|
614
|
-
evdns_server_request_drop to decline to answer the request.
|
615
|
-
|
616
|
-
@param req A newly received request
|
617
|
-
@param user_data A pointer that was passed to
|
618
|
-
evdns_add_server_port_with_base().
|
619
|
-
*/
|
620
|
-
typedef void (*evdns_request_callback_fn_type)(struct evdns_server_request *, void *);
|
621
|
-
#define EVDNS_ANSWER_SECTION 0
|
622
|
-
#define EVDNS_AUTHORITY_SECTION 1
|
623
|
-
#define EVDNS_ADDITIONAL_SECTION 2
|
624
|
-
|
625
|
-
#define EVDNS_TYPE_A 1
|
626
|
-
#define EVDNS_TYPE_NS 2
|
627
|
-
#define EVDNS_TYPE_CNAME 5
|
628
|
-
#define EVDNS_TYPE_SOA 6
|
629
|
-
#define EVDNS_TYPE_PTR 12
|
630
|
-
#define EVDNS_TYPE_MX 15
|
631
|
-
#define EVDNS_TYPE_TXT 16
|
632
|
-
#define EVDNS_TYPE_AAAA 28
|
633
|
-
|
634
|
-
#define EVDNS_QTYPE_AXFR 252
|
635
|
-
#define EVDNS_QTYPE_ALL 255
|
636
|
-
|
637
|
-
#define EVDNS_CLASS_INET 1
|
638
|
-
|
639
|
-
/* flags that can be set in answers; as part of the err parameter */
|
640
|
-
#define EVDNS_FLAGS_AA 0x400
|
641
|
-
#define EVDNS_FLAGS_RD 0x080
|
642
|
-
|
643
|
-
/** Create a new DNS server port.
|
644
|
-
|
645
|
-
@param base The event base to handle events for the server port.
|
646
|
-
@param socket A UDP socket to accept DNS requests.
|
647
|
-
@param flags Always 0 for now.
|
648
|
-
@param callback A function to invoke whenever we get a DNS request
|
649
|
-
on the socket.
|
650
|
-
@param user_data Data to pass to the callback.
|
651
|
-
@return an evdns_server_port structure for this server port or NULL if
|
652
|
-
an error occurred.
|
653
|
-
*/
|
654
|
-
EVENT2_EXPORT_SYMBOL
|
655
|
-
struct evdns_server_port *evdns_add_server_port_with_base(struct event_base *base, evutil_socket_t socket, int flags, evdns_request_callback_fn_type callback, void *user_data);
|
656
|
-
/** Close down a DNS server port, and free associated structures. */
|
657
|
-
EVENT2_EXPORT_SYMBOL
|
658
|
-
void evdns_close_server_port(struct evdns_server_port *port);
|
659
|
-
|
660
|
-
/** Sets some flags in a reply we're building.
|
661
|
-
Allows setting of the AA or RD flags
|
662
|
-
*/
|
663
|
-
EVENT2_EXPORT_SYMBOL
|
664
|
-
void evdns_server_request_set_flags(struct evdns_server_request *req, int flags);
|
665
|
-
|
666
|
-
/* Functions to add an answer to an in-progress DNS reply.
|
667
|
-
*/
|
668
|
-
EVENT2_EXPORT_SYMBOL
|
669
|
-
int evdns_server_request_add_reply(struct evdns_server_request *req, int section, const char *name, int type, int dns_class, int ttl, int datalen, int is_name, const char *data);
|
670
|
-
EVENT2_EXPORT_SYMBOL
|
671
|
-
int evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl);
|
672
|
-
EVENT2_EXPORT_SYMBOL
|
673
|
-
int evdns_server_request_add_aaaa_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl);
|
674
|
-
EVENT2_EXPORT_SYMBOL
|
675
|
-
int evdns_server_request_add_ptr_reply(struct evdns_server_request *req, struct in_addr *in, const char *inaddr_name, const char *hostname, int ttl);
|
676
|
-
EVENT2_EXPORT_SYMBOL
|
677
|
-
int evdns_server_request_add_cname_reply(struct evdns_server_request *req, const char *name, const char *cname, int ttl);
|
678
|
-
|
679
|
-
/**
|
680
|
-
Send back a response to a DNS request, and free the request structure.
|
681
|
-
*/
|
682
|
-
EVENT2_EXPORT_SYMBOL
|
683
|
-
int evdns_server_request_respond(struct evdns_server_request *req, int err);
|
684
|
-
/**
|
685
|
-
Free a DNS request without sending back a reply.
|
686
|
-
*/
|
687
|
-
EVENT2_EXPORT_SYMBOL
|
688
|
-
int evdns_server_request_drop(struct evdns_server_request *req);
|
689
|
-
struct sockaddr;
|
690
|
-
/**
|
691
|
-
Get the address that made a DNS request.
|
692
|
-
*/
|
693
|
-
EVENT2_EXPORT_SYMBOL
|
694
|
-
int evdns_server_request_get_requesting_addr(struct evdns_server_request *req, struct sockaddr *sa, int addr_len);
|
695
|
-
|
696
|
-
/** Callback for evdns_getaddrinfo. */
|
697
|
-
typedef void (*evdns_getaddrinfo_cb)(int result, struct evutil_addrinfo *res, void *arg);
|
698
|
-
|
699
|
-
struct evdns_base;
|
700
|
-
struct evdns_getaddrinfo_request;
|
701
|
-
/** Make a non-blocking getaddrinfo request using the dns_base in 'dns_base'.
|
702
|
-
*
|
703
|
-
* If we can answer the request immediately (with an error or not!), then we
|
704
|
-
* invoke cb immediately and return NULL. Otherwise we return
|
705
|
-
* an evdns_getaddrinfo_request and invoke cb later.
|
706
|
-
*
|
707
|
-
* When the callback is invoked, we pass as its first argument the error code
|
708
|
-
* that getaddrinfo would return (or 0 for no error). As its second argument,
|
709
|
-
* we pass the evutil_addrinfo structures we found (or NULL on error). We
|
710
|
-
* pass 'arg' as the third argument.
|
711
|
-
*
|
712
|
-
* Limitations:
|
713
|
-
*
|
714
|
-
* - The AI_V4MAPPED and AI_ALL flags are not currently implemented.
|
715
|
-
* - For ai_socktype, we only handle SOCKTYPE_STREAM, SOCKTYPE_UDP, and 0.
|
716
|
-
* - For ai_protocol, we only handle IPPROTO_TCP, IPPROTO_UDP, and 0.
|
717
|
-
*/
|
718
|
-
EVENT2_EXPORT_SYMBOL
|
719
|
-
struct evdns_getaddrinfo_request *evdns_getaddrinfo(
|
720
|
-
struct evdns_base *dns_base,
|
721
|
-
const char *nodename, const char *servname,
|
722
|
-
const struct evutil_addrinfo *hints_in,
|
723
|
-
evdns_getaddrinfo_cb cb, void *arg);
|
724
|
-
|
725
|
-
/* Cancel an in-progress evdns_getaddrinfo. This MUST NOT be called after the
|
726
|
-
* getaddrinfo's callback has been invoked. The resolves will be canceled,
|
727
|
-
* and the callback will be invoked with the error EVUTIL_EAI_CANCEL. */
|
728
|
-
EVENT2_EXPORT_SYMBOL
|
729
|
-
void evdns_getaddrinfo_cancel(struct evdns_getaddrinfo_request *req);
|
730
|
-
|
731
|
-
/**
|
732
|
-
Retrieve the address of the 'idx'th configured nameserver.
|
733
|
-
|
734
|
-
@param base The evdns_base to examine.
|
735
|
-
@param idx The index of the nameserver to get the address of.
|
736
|
-
@param sa A location to receive the server's address.
|
737
|
-
@param len The number of bytes available at sa.
|
738
|
-
|
739
|
-
@return the number of bytes written into sa on success. On failure, returns
|
740
|
-
-1 if idx is greater than the number of configured nameservers, or a
|
741
|
-
value greater than 'len' if len was not high enough.
|
742
|
-
*/
|
743
|
-
EVENT2_EXPORT_SYMBOL
|
744
|
-
int evdns_base_get_nameserver_addr(struct evdns_base *base, int idx,
|
745
|
-
struct sockaddr *sa, ev_socklen_t len);
|
746
|
-
|
747
|
-
#ifdef __cplusplus
|
748
|
-
}
|
749
|
-
#endif
|
750
|
-
|
751
|
-
#endif /* !EVENT2_DNS_H_INCLUDED_ */
|