@ -45,9 +45,9 @@
# endif
# if defined(WATT32)
# include <netinet/ in.h>
# include <sys/ socket.h>
# include <tcp.h>
# include <netinet / in.h>
# include <sys / socket.h>
# include <tcp.h>
# elif defined(WIN32)
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
@ -56,14 +56,36 @@
# include <winsock2.h>
# include <ws2tcpip.h>
# else
# include <sys/ socket.h>
# include <netinet/ in.h>
# include <sys / socket.h>
# include <netinet / in.h>
# endif
# ifdef __cplusplus
extern " C " {
# endif
/*
* * c - ares external API function linkage decorations .
*/
# if !defined(CARES_STATICLIB) && \
( defined ( WIN32 ) | | defined ( _WIN32 ) | | defined ( __SYMBIAN32__ ) )
/* __declspec function decoration for Win32 and Symbian DLL's */
# if defined(CARES_BUILDING_LIB)
# define CARES_EXTERN __declspec(dllexport)
# else
# define CARES_EXTERN __declspec(dllimport)
# endif
# else
/* visibility function decoration for other cases */
# ifdef CARES_HIDDEN_SYMBOLS
# define CARES_EXTERN CARES_EXTERN_SYMBOL
# else
# define CARES_EXTERN
# endif
# endif
# define ARES_SUCCESS 0
/* Server error codes (ARES_ENODATA indicates no relevant answer) */
@ -241,62 +263,143 @@ struct hostent;
struct timeval ;
struct sockaddr ;
struct ares_channeldata ;
typedef struct ares_channeldata * ares_channel ;
typedef void ( * ares_callback ) ( void * arg , int status , int timeouts ,
unsigned char * abuf , int alen ) ;
typedef void ( * ares_host_callback ) ( void * arg , int status , int timeouts ,
typedef void ( * ares_callback ) ( void * arg ,
int status ,
int timeouts ,
unsigned char * abuf ,
int alen ) ;
typedef void ( * ares_host_callback ) ( void * arg ,
int status ,
int timeouts ,
struct hostent * hostent ) ;
typedef void ( * ares_nameinfo_callback ) ( void * arg , int status , int timeouts ,
char * node , char * service ) ;
typedef void ( * ares_nameinfo_callback ) ( void * arg ,
int status ,
int timeouts ,
char * node ,
char * service ) ;
typedef int ( * ares_sock_create_callback ) ( ares_socket_t socket_fd ,
int type , void * data ) ;
int ares_library_init ( int flags ) ;
void ares_library_cleanup ( void ) ;
const char * ares_version ( int * version ) ;
int ares_init ( ares_channel * channelptr ) ;
int ares_init_options ( ares_channel * channelptr , struct ares_options * options ,
int optmask ) ;
int ares_save_options ( ares_channel channel , struct ares_options * options ,
int * optmask ) ;
void ares_destroy_options ( struct ares_options * options ) ;
int ares_dup ( ares_channel * dest , ares_channel src ) ;
void ares_destroy ( ares_channel channel ) ;
void ares_cancel ( ares_channel channel ) ;
int type ,
void * data ) ;
CARES_EXTERN int ares_library_init ( int flags ) ;
CARES_EXTERN void ares_library_cleanup ( void ) ;
CARES_EXTERN const char * ares_version ( int * version ) ;
CARES_EXTERN int ares_init ( ares_channel * channelptr ) ;
CARES_EXTERN int ares_init_options ( ares_channel * channelptr ,
struct ares_options * options ,
int optmask ) ;
CARES_EXTERN int ares_save_options ( ares_channel channel ,
struct ares_options * options ,
int * optmask ) ;
CARES_EXTERN void ares_destroy_options ( struct ares_options * options ) ;
CARES_EXTERN int ares_dup ( ares_channel * dest ,
ares_channel src ) ;
CARES_EXTERN void ares_destroy ( ares_channel channel ) ;
CARES_EXTERN void ares_cancel ( ares_channel channel ) ;
void ares_set_socket_callback ( ares_channel channel ,
ares_sock_create_callback callback ,
void * user_data ) ;
void ares_send ( ares_channel channel , const unsigned char * qbuf , int qlen ,
ares_callback callback , void * arg ) ;
void ares_query ( ares_channel channel , const char * name , int dnsclass ,
int type , ares_callback callback , void * arg ) ;
void ares_search ( ares_channel channel , const char * name , int dnsclass ,
int type , ares_callback callback , void * arg ) ;
void ares_gethostbyname ( ares_channel channel , const char * name , int family ,
ares_host_callback callback , void * arg ) ;
int ares_gethostbyname_file ( ares_channel channel , const char * name ,
int family , struct hostent * * host ) ;
void ares_gethostbyaddr ( ares_channel channel , const void * addr , int addrlen ,
int family , ares_host_callback callback , void * arg ) ;
void ares_getnameinfo ( ares_channel channel , const struct sockaddr * sa ,
ares_socklen_t salen , int flags ,
ares_nameinfo_callback callback ,
void * arg ) ;
int ares_fds ( ares_channel channel , fd_set * read_fds , fd_set * write_fds ) ;
int ares_getsock ( ares_channel channel , int * socks , int numsocks ) ;
struct timeval * ares_timeout ( ares_channel channel , struct timeval * maxtv ,
struct timeval * tv ) ;
void ares_process ( ares_channel channel , fd_set * read_fds , fd_set * write_fds ) ;
void ares_process_fd ( ares_channel channel , ares_socket_t read_fd ,
ares_socket_t write_fd ) ;
int ares_mkquery ( const char * name , int dnsclass , int type , unsigned short id ,
int rd , unsigned char * * buf , int * buflen ) ;
int ares_expand_name ( const unsigned char * encoded , const unsigned char * abuf ,
int alen , char * * s , long * enclen ) ;
int ares_expand_string ( const unsigned char * encoded , const unsigned char * abuf ,
int alen , unsigned char * * s , long * enclen ) ;
CARES_EXTERN void ares_send ( ares_channel channel ,
const unsigned char * qbuf ,
int qlen ,
ares_callback callback ,
void * arg ) ;
CARES_EXTERN void ares_query ( ares_channel channel ,
const char * name ,
int dnsclass ,
int type ,
ares_callback callback ,
void * arg ) ;
CARES_EXTERN void ares_search ( ares_channel channel ,
const char * name ,
int dnsclass ,
int type ,
ares_callback callback ,
void * arg ) ;
CARES_EXTERN void ares_gethostbyname ( ares_channel channel ,
const char * name ,
int family ,
ares_host_callback callback ,
void * arg ) ;
CARES_EXTERN int ares_gethostbyname_file ( ares_channel channel ,
const char * name ,
int family ,
struct hostent * * host ) ;
CARES_EXTERN void ares_gethostbyaddr ( ares_channel channel ,
const void * addr ,
int addrlen ,
int family ,
ares_host_callback callback ,
void * arg ) ;
CARES_EXTERN void ares_getnameinfo ( ares_channel channel ,
const struct sockaddr * sa ,
ares_socklen_t salen ,
int flags ,
ares_nameinfo_callback callback ,
void * arg ) ;
CARES_EXTERN int ares_fds ( ares_channel channel ,
fd_set * read_fds ,
fd_set * write_fds ) ;
CARES_EXTERN int ares_getsock ( ares_channel channel ,
int * socks ,
int numsocks ) ;
CARES_EXTERN struct timeval * ares_timeout ( ares_channel channel ,
struct timeval * maxtv ,
struct timeval * tv ) ;
CARES_EXTERN void ares_process ( ares_channel channel ,
fd_set * read_fds ,
fd_set * write_fds ) ;
CARES_EXTERN void ares_process_fd ( ares_channel channel ,
ares_socket_t read_fd ,
ares_socket_t write_fd ) ;
CARES_EXTERN int ares_mkquery ( const char * name ,
int dnsclass ,
int type ,
unsigned short id ,
int rd ,
unsigned char * * buf ,
int * buflen ) ;
CARES_EXTERN int ares_expand_name ( const unsigned char * encoded ,
const unsigned char * abuf ,
int alen ,
char * * s ,
long * enclen ) ;
CARES_EXTERN int ares_expand_string ( const unsigned char * encoded ,
const unsigned char * abuf ,
int alen ,
unsigned char * * s ,
long * enclen ) ;
/*
* NOTE : before c - ares 1.6 .1 we would most often use the system in6_addr
@ -338,21 +441,40 @@ struct srv_reply {
* * their TTLs in that array , and set * naddrttls to the number of addresses
* * so written .
*/
int ares_parse_a_reply ( const unsigned char * abuf , int alen ,
struct hostent * * host ,
struct addrttl * addrttls , int * naddrttls ) ;
int ares_parse_aaaa_reply ( const unsigned char * abuf , int alen ,
struct hostent * * host ,
struct addr6ttl * addrttls , int * naddrttls ) ;
int ares_parse_ptr_reply ( const unsigned char * abuf , int alen , const void * addr ,
int addrlen , int family , struct hostent * * host ) ;
int ares_parse_ns_reply ( const unsigned char * abuf , int alen ,
struct hostent * * host ) ;
int ares_parse_srv_reply ( const unsigned char * abuf , int alen ,
struct srv_reply * * srv_out , int * nsrvreply ) ;
void ares_free_string ( void * str ) ;
void ares_free_hostent ( struct hostent * host ) ;
const char * ares_strerror ( int code ) ;
CARES_EXTERN int ares_parse_a_reply ( const unsigned char * abuf ,
int alen ,
struct hostent * * host ,
struct addrttl * addrttls ,
int * naddrttls ) ;
CARES_EXTERN int ares_parse_aaaa_reply ( const unsigned char * abuf ,
int alen ,
struct hostent * * host ,
struct addr6ttl * addrttls ,
int * naddrttls ) ;
CARES_EXTERN int ares_parse_ptr_reply ( const unsigned char * abuf ,
int alen ,
const void * addr ,
int addrlen ,
int family ,
struct hostent * * host ) ;
CARES_EXTERN int ares_parse_ns_reply ( const unsigned char * abuf ,
int alen ,
struct hostent * * host ) ;
CARES_EXTERN int ares_parse_srv_reply ( const unsigned char * abuf ,
int alen ,
struct srv_reply * * srv_out ,
int * nsrvreply ) ;
CARES_EXTERN void ares_free_string ( void * str ) ;
CARES_EXTERN void ares_free_hostent ( struct hostent * host ) ;
CARES_EXTERN const char * ares_strerror ( int code ) ;
# ifdef __cplusplus
}