1*0a6a1f1dSLionel Sambuc /* $NetBSD: dns_compat.h,v 1.1.1.2 2015/01/29 06:38:27 spz Exp $ */ 2*0a6a1f1dSLionel Sambuc /* $NetBSD: dns_compat.h,v 1.1.1.2 2015/01/29 06:38:27 spz Exp $ */ 3e985b929SDavid van Moolenbroek /* 4e985b929SDavid van Moolenbroek * Copyright (c) 2006-2007 Niels Provos <provos@citi.umich.edu> 5e985b929SDavid van Moolenbroek * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson 6e985b929SDavid van Moolenbroek * 7e985b929SDavid van Moolenbroek * Redistribution and use in source and binary forms, with or without 8e985b929SDavid van Moolenbroek * modification, are permitted provided that the following conditions 9e985b929SDavid van Moolenbroek * are met: 10e985b929SDavid van Moolenbroek * 1. Redistributions of source code must retain the above copyright 11e985b929SDavid van Moolenbroek * notice, this list of conditions and the following disclaimer. 12e985b929SDavid van Moolenbroek * 2. Redistributions in binary form must reproduce the above copyright 13e985b929SDavid van Moolenbroek * notice, this list of conditions and the following disclaimer in the 14e985b929SDavid van Moolenbroek * documentation and/or other materials provided with the distribution. 15e985b929SDavid van Moolenbroek * 3. The name of the author may not be used to endorse or promote products 16e985b929SDavid van Moolenbroek * derived from this software without specific prior written permission. 17e985b929SDavid van Moolenbroek * 18e985b929SDavid van Moolenbroek * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 19e985b929SDavid van Moolenbroek * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20e985b929SDavid van Moolenbroek * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21e985b929SDavid van Moolenbroek * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 22e985b929SDavid van Moolenbroek * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23e985b929SDavid van Moolenbroek * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24e985b929SDavid van Moolenbroek * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25e985b929SDavid van Moolenbroek * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26e985b929SDavid van Moolenbroek * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27e985b929SDavid van Moolenbroek * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28e985b929SDavid van Moolenbroek */ 29e985b929SDavid van Moolenbroek #ifndef _EVENT2_DNS_COMPAT_H_ 30e985b929SDavid van Moolenbroek #define _EVENT2_DNS_COMPAT_H_ 31e985b929SDavid van Moolenbroek 32e985b929SDavid van Moolenbroek /** @file event2/dns_compat.h 33e985b929SDavid van Moolenbroek 34e985b929SDavid van Moolenbroek Potentially non-threadsafe versions of the functions in dns.h: provided 35e985b929SDavid van Moolenbroek only for backwards compatibility. 36e985b929SDavid van Moolenbroek 37e985b929SDavid van Moolenbroek 38e985b929SDavid van Moolenbroek */ 39e985b929SDavid van Moolenbroek 40e985b929SDavid van Moolenbroek #ifdef __cplusplus 41e985b929SDavid van Moolenbroek extern "C" { 42e985b929SDavid van Moolenbroek #endif 43e985b929SDavid van Moolenbroek 44e985b929SDavid van Moolenbroek #include <event2/event-config.h> 45e985b929SDavid van Moolenbroek #ifdef _EVENT_HAVE_SYS_TYPES_H 46e985b929SDavid van Moolenbroek #include <sys/types.h> 47e985b929SDavid van Moolenbroek #endif 48e985b929SDavid van Moolenbroek #ifdef _EVENT_HAVE_SYS_TIME_H 49e985b929SDavid van Moolenbroek #include <sys/time.h> 50e985b929SDavid van Moolenbroek #endif 51e985b929SDavid van Moolenbroek 52e985b929SDavid van Moolenbroek /* For int types. */ 53e985b929SDavid van Moolenbroek #include <event2/util.h> 54e985b929SDavid van Moolenbroek 55e985b929SDavid van Moolenbroek /** 56e985b929SDavid van Moolenbroek Initialize the asynchronous DNS library. 57e985b929SDavid van Moolenbroek 58e985b929SDavid van Moolenbroek This function initializes support for non-blocking name resolution by 59e985b929SDavid van Moolenbroek calling evdns_resolv_conf_parse() on UNIX and 60e985b929SDavid van Moolenbroek evdns_config_windows_nameservers() on Windows. 61e985b929SDavid van Moolenbroek 62e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it always uses the current 63e985b929SDavid van Moolenbroek event base, and is easily confused by multiple calls to event_init(), and 64e985b929SDavid van Moolenbroek so is not safe for multithreaded use. Additionally, it allocates a global 65e985b929SDavid van Moolenbroek structure that only one thread can use. The replacement is 66e985b929SDavid van Moolenbroek evdns_base_new(). 67e985b929SDavid van Moolenbroek 68e985b929SDavid van Moolenbroek @return 0 if successful, or -1 if an error occurred 69e985b929SDavid van Moolenbroek @see evdns_shutdown() 70e985b929SDavid van Moolenbroek */ 71e985b929SDavid van Moolenbroek int evdns_init(void); 72e985b929SDavid van Moolenbroek 73e985b929SDavid van Moolenbroek struct evdns_base; 74e985b929SDavid van Moolenbroek /** 75e985b929SDavid van Moolenbroek Return the global evdns_base created by event_init() and used by the other 76e985b929SDavid van Moolenbroek deprecated functions. 77e985b929SDavid van Moolenbroek 78e985b929SDavid van Moolenbroek @deprecated This function is deprecated because use of the global 79e985b929SDavid van Moolenbroek evdns_base is error-prone. 80e985b929SDavid van Moolenbroek */ 81e985b929SDavid van Moolenbroek struct evdns_base *evdns_get_global_base(void); 82e985b929SDavid van Moolenbroek 83e985b929SDavid van Moolenbroek /** 84e985b929SDavid van Moolenbroek Shut down the asynchronous DNS resolver and terminate all active requests. 85e985b929SDavid van Moolenbroek 86e985b929SDavid van Moolenbroek If the 'fail_requests' option is enabled, all active requests will return 87e985b929SDavid van Moolenbroek an empty result with the error flag set to DNS_ERR_SHUTDOWN. Otherwise, 88e985b929SDavid van Moolenbroek the requests will be silently discarded. 89e985b929SDavid van Moolenbroek 90e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 91e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 92e985b929SDavid van Moolenbroek function is evdns_base_shutdown(). 93e985b929SDavid van Moolenbroek 94e985b929SDavid van Moolenbroek @param fail_requests if zero, active requests will be aborted; if non-zero, 95e985b929SDavid van Moolenbroek active requests will return DNS_ERR_SHUTDOWN. 96e985b929SDavid van Moolenbroek @see evdns_init() 97e985b929SDavid van Moolenbroek */ 98e985b929SDavid van Moolenbroek void evdns_shutdown(int fail_requests); 99e985b929SDavid van Moolenbroek 100e985b929SDavid van Moolenbroek /** 101e985b929SDavid van Moolenbroek Add a nameserver. 102e985b929SDavid van Moolenbroek 103e985b929SDavid van Moolenbroek The address should be an IPv4 address in network byte order. 104e985b929SDavid van Moolenbroek The type of address is chosen so that it matches in_addr.s_addr. 105e985b929SDavid van Moolenbroek 106e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 107e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 108e985b929SDavid van Moolenbroek function is evdns_base_nameserver_add(). 109e985b929SDavid van Moolenbroek 110e985b929SDavid van Moolenbroek @param address an IP address in network byte order 111e985b929SDavid van Moolenbroek @return 0 if successful, or -1 if an error occurred 112e985b929SDavid van Moolenbroek @see evdns_nameserver_ip_add() 113e985b929SDavid van Moolenbroek */ 114e985b929SDavid van Moolenbroek int evdns_nameserver_add(unsigned long int address); 115e985b929SDavid van Moolenbroek 116e985b929SDavid van Moolenbroek /** 117e985b929SDavid van Moolenbroek Get the number of configured nameservers. 118e985b929SDavid van Moolenbroek 119e985b929SDavid van Moolenbroek This returns the number of configured nameservers (not necessarily the 120e985b929SDavid van Moolenbroek number of running nameservers). This is useful for double-checking 121e985b929SDavid van Moolenbroek whether our calls to the various nameserver configuration functions 122e985b929SDavid van Moolenbroek have been successful. 123e985b929SDavid van Moolenbroek 124e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 125e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 126e985b929SDavid van Moolenbroek function is evdns_base_count_nameservers(). 127e985b929SDavid van Moolenbroek 128e985b929SDavid van Moolenbroek @return the number of configured nameservers 129e985b929SDavid van Moolenbroek @see evdns_nameserver_add() 130e985b929SDavid van Moolenbroek */ 131e985b929SDavid van Moolenbroek int evdns_count_nameservers(void); 132e985b929SDavid van Moolenbroek 133e985b929SDavid van Moolenbroek /** 134e985b929SDavid van Moolenbroek Remove all configured nameservers, and suspend all pending resolves. 135e985b929SDavid van Moolenbroek 136e985b929SDavid van Moolenbroek Resolves will not necessarily be re-attempted until evdns_resume() is called. 137e985b929SDavid van Moolenbroek 138e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 139e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 140e985b929SDavid van Moolenbroek function is evdns_base_clear_nameservers_and_suspend(). 141e985b929SDavid van Moolenbroek 142e985b929SDavid van Moolenbroek @return 0 if successful, or -1 if an error occurred 143e985b929SDavid van Moolenbroek @see evdns_resume() 144e985b929SDavid van Moolenbroek */ 145e985b929SDavid van Moolenbroek int evdns_clear_nameservers_and_suspend(void); 146e985b929SDavid van Moolenbroek 147e985b929SDavid van Moolenbroek /** 148e985b929SDavid van Moolenbroek Resume normal operation and continue any suspended resolve requests. 149e985b929SDavid van Moolenbroek 150e985b929SDavid van Moolenbroek Re-attempt resolves left in limbo after an earlier call to 151e985b929SDavid van Moolenbroek evdns_clear_nameservers_and_suspend(). 152e985b929SDavid van Moolenbroek 153e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 154e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 155e985b929SDavid van Moolenbroek function is evdns_base_resume(). 156e985b929SDavid van Moolenbroek 157e985b929SDavid van Moolenbroek @return 0 if successful, or -1 if an error occurred 158e985b929SDavid van Moolenbroek @see evdns_clear_nameservers_and_suspend() 159e985b929SDavid van Moolenbroek */ 160e985b929SDavid van Moolenbroek int evdns_resume(void); 161e985b929SDavid van Moolenbroek 162e985b929SDavid van Moolenbroek /** 163e985b929SDavid van Moolenbroek Add a nameserver. 164e985b929SDavid van Moolenbroek 165e985b929SDavid van Moolenbroek This wraps the evdns_nameserver_add() function by parsing a string as an IP 166e985b929SDavid van Moolenbroek address and adds it as a nameserver. 167e985b929SDavid van Moolenbroek 168e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 169e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 170e985b929SDavid van Moolenbroek function is evdns_base_nameserver_ip_add(). 171e985b929SDavid van Moolenbroek 172e985b929SDavid van Moolenbroek @return 0 if successful, or -1 if an error occurred 173e985b929SDavid van Moolenbroek @see evdns_nameserver_add() 174e985b929SDavid van Moolenbroek */ 175e985b929SDavid van Moolenbroek int evdns_nameserver_ip_add(const char *ip_as_string); 176e985b929SDavid van Moolenbroek 177e985b929SDavid van Moolenbroek /** 178e985b929SDavid van Moolenbroek Lookup an A record for a given name. 179e985b929SDavid van Moolenbroek 180e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 181e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 182e985b929SDavid van Moolenbroek function is evdns_base_resolve_ipv4(). 183e985b929SDavid van Moolenbroek 184e985b929SDavid van Moolenbroek @param name a DNS hostname 185e985b929SDavid van Moolenbroek @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. 186e985b929SDavid van Moolenbroek @param callback a callback function to invoke when the request is completed 187e985b929SDavid van Moolenbroek @param ptr an argument to pass to the callback function 188e985b929SDavid van Moolenbroek @return 0 if successful, or -1 if an error occurred 189e985b929SDavid van Moolenbroek @see evdns_resolve_ipv6(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6() 190e985b929SDavid van Moolenbroek */ 191e985b929SDavid van Moolenbroek int evdns_resolve_ipv4(const char *name, int flags, evdns_callback_type callback, void *ptr); 192e985b929SDavid van Moolenbroek 193e985b929SDavid van Moolenbroek /** 194e985b929SDavid van Moolenbroek Lookup an AAAA record for a given name. 195e985b929SDavid van Moolenbroek 196e985b929SDavid van Moolenbroek @param name a DNS hostname 197e985b929SDavid van Moolenbroek @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. 198e985b929SDavid van Moolenbroek @param callback a callback function to invoke when the request is completed 199e985b929SDavid van Moolenbroek @param ptr an argument to pass to the callback function 200e985b929SDavid van Moolenbroek @return 0 if successful, or -1 if an error occurred 201e985b929SDavid van Moolenbroek @see evdns_resolve_ipv4(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6() 202e985b929SDavid van Moolenbroek */ 203e985b929SDavid van Moolenbroek int evdns_resolve_ipv6(const char *name, int flags, evdns_callback_type callback, void *ptr); 204e985b929SDavid van Moolenbroek 205e985b929SDavid van Moolenbroek struct in_addr; 206e985b929SDavid van Moolenbroek struct in6_addr; 207e985b929SDavid van Moolenbroek 208e985b929SDavid van Moolenbroek /** 209e985b929SDavid van Moolenbroek Lookup a PTR record for a given IP address. 210e985b929SDavid van Moolenbroek 211e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 212e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 213e985b929SDavid van Moolenbroek function is evdns_base_resolve_reverse(). 214e985b929SDavid van Moolenbroek 215e985b929SDavid van Moolenbroek @param in an IPv4 address 216e985b929SDavid van Moolenbroek @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. 217e985b929SDavid van Moolenbroek @param callback a callback function to invoke when the request is completed 218e985b929SDavid van Moolenbroek @param ptr an argument to pass to the callback function 219e985b929SDavid van Moolenbroek @return 0 if successful, or -1 if an error occurred 220e985b929SDavid van Moolenbroek @see evdns_resolve_reverse_ipv6() 221e985b929SDavid van Moolenbroek */ 222e985b929SDavid van Moolenbroek int evdns_resolve_reverse(const struct in_addr *in, int flags, evdns_callback_type callback, void *ptr); 223e985b929SDavid van Moolenbroek 224e985b929SDavid van Moolenbroek /** 225e985b929SDavid van Moolenbroek Lookup a PTR record for a given IPv6 address. 226e985b929SDavid van Moolenbroek 227e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 228e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 229e985b929SDavid van Moolenbroek function is evdns_base_resolve_reverse_ipv6(). 230e985b929SDavid van Moolenbroek 231e985b929SDavid van Moolenbroek @param in an IPv6 address 232e985b929SDavid van Moolenbroek @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. 233e985b929SDavid van Moolenbroek @param callback a callback function to invoke when the request is completed 234e985b929SDavid van Moolenbroek @param ptr an argument to pass to the callback function 235e985b929SDavid van Moolenbroek @return 0 if successful, or -1 if an error occurred 236e985b929SDavid van Moolenbroek @see evdns_resolve_reverse_ipv6() 237e985b929SDavid van Moolenbroek */ 238e985b929SDavid van Moolenbroek int evdns_resolve_reverse_ipv6(const struct in6_addr *in, int flags, evdns_callback_type callback, void *ptr); 239e985b929SDavid van Moolenbroek 240e985b929SDavid van Moolenbroek /** 241e985b929SDavid van Moolenbroek Set the value of a configuration option. 242e985b929SDavid van Moolenbroek 243e985b929SDavid van Moolenbroek The currently available configuration options are: 244e985b929SDavid van Moolenbroek 245e985b929SDavid van Moolenbroek ndots, timeout, max-timeouts, max-inflight, and attempts 246e985b929SDavid van Moolenbroek 247e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 248e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 249e985b929SDavid van Moolenbroek function is evdns_base_set_option(). 250e985b929SDavid van Moolenbroek 251e985b929SDavid van Moolenbroek @param option the name of the configuration option to be modified 252e985b929SDavid van Moolenbroek @param val the value to be set 253e985b929SDavid van Moolenbroek @param flags Ignored. 254e985b929SDavid van Moolenbroek @return 0 if successful, or -1 if an error occurred 255e985b929SDavid van Moolenbroek */ 256e985b929SDavid van Moolenbroek int evdns_set_option(const char *option, const char *val, int flags); 257e985b929SDavid van Moolenbroek 258e985b929SDavid van Moolenbroek /** 259e985b929SDavid van Moolenbroek Parse a resolv.conf file. 260e985b929SDavid van Moolenbroek 261e985b929SDavid van Moolenbroek The 'flags' parameter determines what information is parsed from the 262e985b929SDavid van Moolenbroek resolv.conf file. See the man page for resolv.conf for the format of this 263e985b929SDavid van Moolenbroek file. 264e985b929SDavid van Moolenbroek 265e985b929SDavid van Moolenbroek The following directives are not parsed from the file: sortlist, rotate, 266e985b929SDavid van Moolenbroek no-check-names, inet6, debug. 267e985b929SDavid van Moolenbroek 268e985b929SDavid van Moolenbroek If this function encounters an error, the possible return values are: 1 = 269e985b929SDavid van Moolenbroek failed to open file, 2 = failed to stat file, 3 = file too large, 4 = out of 270e985b929SDavid van Moolenbroek memory, 5 = short read from file, 6 = no nameservers listed in the file 271e985b929SDavid van Moolenbroek 272e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 273e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 274e985b929SDavid van Moolenbroek function is evdns_base_resolv_conf_parse(). 275e985b929SDavid van Moolenbroek 276e985b929SDavid van Moolenbroek @param flags any of DNS_OPTION_NAMESERVERS|DNS_OPTION_SEARCH|DNS_OPTION_MISC| 277e985b929SDavid van Moolenbroek DNS_OPTIONS_ALL 278e985b929SDavid van Moolenbroek @param filename the path to the resolv.conf file 279e985b929SDavid van Moolenbroek @return 0 if successful, or various positive error codes if an error 280e985b929SDavid van Moolenbroek occurred (see above) 281e985b929SDavid van Moolenbroek @see resolv.conf(3), evdns_config_windows_nameservers() 282e985b929SDavid van Moolenbroek */ 283e985b929SDavid van Moolenbroek int evdns_resolv_conf_parse(int flags, const char *const filename); 284e985b929SDavid van Moolenbroek 285e985b929SDavid van Moolenbroek /** 286e985b929SDavid van Moolenbroek Clear the list of search domains. 287e985b929SDavid van Moolenbroek 288e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 289e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 290e985b929SDavid van Moolenbroek function is evdns_base_search_clear(). 291e985b929SDavid van Moolenbroek */ 292e985b929SDavid van Moolenbroek void evdns_search_clear(void); 293e985b929SDavid van Moolenbroek 294e985b929SDavid van Moolenbroek /** 295e985b929SDavid van Moolenbroek Add a domain to the list of search domains 296e985b929SDavid van Moolenbroek 297e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 298e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 299e985b929SDavid van Moolenbroek function is evdns_base_search_add(). 300e985b929SDavid van Moolenbroek 301e985b929SDavid van Moolenbroek @param domain the domain to be added to the search list 302e985b929SDavid van Moolenbroek */ 303e985b929SDavid van Moolenbroek void evdns_search_add(const char *domain); 304e985b929SDavid van Moolenbroek 305e985b929SDavid van Moolenbroek /** 306e985b929SDavid van Moolenbroek Set the 'ndots' parameter for searches. 307e985b929SDavid van Moolenbroek 308e985b929SDavid van Moolenbroek Sets the number of dots which, when found in a name, causes 309e985b929SDavid van Moolenbroek the first query to be without any search domain. 310e985b929SDavid van Moolenbroek 311e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 312e985b929SDavid van Moolenbroek caller to specify which evdns_base it applies to. The recommended 313e985b929SDavid van Moolenbroek function is evdns_base_search_ndots_set(). 314e985b929SDavid van Moolenbroek 315e985b929SDavid van Moolenbroek @param ndots the new ndots parameter 316e985b929SDavid van Moolenbroek */ 317e985b929SDavid van Moolenbroek void evdns_search_ndots_set(const int ndots); 318e985b929SDavid van Moolenbroek 319e985b929SDavid van Moolenbroek /** 320e985b929SDavid van Moolenbroek As evdns_server_new_with_base. 321e985b929SDavid van Moolenbroek 322e985b929SDavid van Moolenbroek @deprecated This function is deprecated because it does not allow the 323e985b929SDavid van Moolenbroek caller to specify which even_base it uses. The recommended 324e985b929SDavid van Moolenbroek function is evdns_add_server_port_with_base(). 325e985b929SDavid van Moolenbroek 326e985b929SDavid van Moolenbroek */ 327e985b929SDavid van Moolenbroek struct evdns_server_port *evdns_add_server_port(evutil_socket_t socket, int flags, evdns_request_callback_fn_type callback, void *user_data); 328e985b929SDavid van Moolenbroek 329e985b929SDavid van Moolenbroek #ifdef WIN32 330e985b929SDavid van Moolenbroek int evdns_config_windows_nameservers(void); 331e985b929SDavid van Moolenbroek #define EVDNS_CONFIG_WINDOWS_NAMESERVERS_IMPLEMENTED 332e985b929SDavid van Moolenbroek #endif 333e985b929SDavid van Moolenbroek 334e985b929SDavid van Moolenbroek #ifdef __cplusplus 335e985b929SDavid van Moolenbroek } 336e985b929SDavid van Moolenbroek #endif 337e985b929SDavid van Moolenbroek 338e985b929SDavid van Moolenbroek #endif /* _EVENT2_EVENT_COMPAT_H_ */ 339