2014-02-19 08:09:44 -06:00
/* Created at 2014-02-19-15-06-22*/
2013-11-05 10:28:10 -06:00
# ifndef GETDNS_H
# define GETDNS_H
# include <stdint.h>
# include <stdlib.h>
2014-01-22 03:42:01 -06:00
# ifdef __cplusplus
extern " C " {
# endif
2013-11-05 10:28:10 -06:00
# define GETDNS_COMPILATION_COMMENT The API implementation should fill in something here, such as a compilation version string and date, and change it each time the API is compiled.
/* Return values */
2014-02-05 17:25:26 -06:00
typedef enum getdns_return_t {
GETDNS_RETURN_GOOD = 0 ,
GETDNS_RETURN_GENERIC_ERROR = 1 ,
GETDNS_RETURN_BAD_DOMAIN_NAME = 300 ,
GETDNS_RETURN_BAD_CONTEXT = 301 ,
GETDNS_RETURN_CONTEXT_UPDATE_FAIL = 302 ,
GETDNS_RETURN_UNKNOWN_TRANSACTION = 303 ,
GETDNS_RETURN_NO_SUCH_LIST_ITEM = 304 ,
GETDNS_RETURN_NO_SUCH_DICT_NAME = 305 ,
GETDNS_RETURN_WRONG_TYPE_REQUESTED = 306 ,
GETDNS_RETURN_NO_SUCH_EXTENSION = 307 ,
GETDNS_RETURN_EXTENSION_MISFORMAT = 308 ,
GETDNS_RETURN_DNSSEC_WITH_STUB_DISALLOWED = 309 ,
GETDNS_RETURN_MEMORY_ERROR = 310 ,
GETDNS_RETURN_INVALID_PARAMETER = 311
} getdns_return_t ;
2013-12-04 09:43:57 -06:00
# define GETDNS_RETURN_GOOD_TEXT "Good"
# define GETDNS_RETURN_GENERIC_ERROR_TEXT "Generic error"
# define GETDNS_RETURN_BAD_DOMAIN_NAME_TEXT "Badly-formed domain name in first argument"
2014-02-09 15:07:53 -06:00
# define GETDNS_RETURN_BAD_CONTEXT_TEXT "The context has internal deficiencies"
2013-12-04 09:43:57 -06:00
# define GETDNS_RETURN_CONTEXT_UPDATE_FAIL_TEXT "Did not update the context"
# define GETDNS_RETURN_UNKNOWN_TRANSACTION_TEXT "An attempt was made to cancel a callback with a transaction_id that is not recognized"
# define GETDNS_RETURN_NO_SUCH_LIST_ITEM_TEXT "A helper function for lists had an index argument that was too high."
# define GETDNS_RETURN_NO_SUCH_DICT_NAME_TEXT "A helper function for dicts had a name argument that for a name that is not in the dict."
# define GETDNS_RETURN_WRONG_TYPE_REQUESTED_TEXT "A helper function was supposed to return a certain type for an item, but the wrong type was given."
# define GETDNS_RETURN_NO_SUCH_EXTENSION_TEXT "A name in the extensions dict is not a valid extension."
# define GETDNS_RETURN_EXTENSION_MISFORMAT_TEXT "One or more of the extensions have a bad format."
# define GETDNS_RETURN_DNSSEC_WITH_STUB_DISALLOWED_TEXT "A query was made with a context that is using stub resolution and a DNSSEC extension specified."
2013-12-04 09:45:17 -06:00
# define GETDNS_RETURN_MEMORY_ERROR_TEXT "Unable to allocate the memory required."
2014-01-14 08:22:03 -06:00
# define GETDNS_RETURN_INVALID_PARAMETER_TEXT "A required parameter had an invalid value."
2013-11-05 10:28:10 -06:00
/* DNSSEC values */
# define GETDNS_DNSSEC_SECURE 400
2013-12-04 09:43:57 -06:00
# define GETDNS_DNSSEC_SECURE_TEXT "The record was determined to be secure in DNSSEC"
2013-11-05 10:28:10 -06:00
# define GETDNS_DNSSEC_BOGUS 401
2013-12-04 09:43:57 -06:00
# define GETDNS_DNSSEC_BOGUS_TEXT "The record was determined to be bogus in DNSSEC"
2013-11-05 10:28:10 -06:00
# define GETDNS_DNSSEC_INDETERMINATE 402
2013-12-04 09:43:57 -06:00
# define GETDNS_DNSSEC_INDETERMINATE_TEXT "The record was not determined to be any state in DNSSEC"
2013-11-05 10:28:10 -06:00
# define GETDNS_DNSSEC_INSECURE 403
2013-12-04 09:43:57 -06:00
# define GETDNS_DNSSEC_INSECURE_TEXT "The record was determined to be insecure in DNSSEC"
2013-11-05 10:28:10 -06:00
# define GETDNS_DNSSEC_NOT_PERFORMED 404
2013-12-04 09:43:57 -06:00
# define GETDNS_DNSSEC_NOT_PERFORMED_TEXT "DNSSEC validation was not performed (only used for debugging)"
2013-11-05 10:28:10 -06:00
2014-02-05 17:25:26 -06:00
/* Namespace types */
typedef enum getdns_namespace_t {
GETDNS_NAMESPACE_DNS = 500 ,
GETDNS_NAMESPACE_LOCALNAMES = 501 ,
GETDNS_NAMESPACE_NETBIOS = 502 ,
GETDNS_NAMESPACE_MDNS = 503 ,
GETDNS_NAMESPACE_NIS = 504
} getdns_namespace_t ;
# define GETDNS_NAMESPACE_DNS_TEXT "See getdns_context_set_namespaces()"
# define GETDNS_NAMESPACE_LOCALNAMES_TEXT "See getdns_context_set_namespaces()"
# define GETDNS_NAMESPACE_NETBIOS_TEXT "See getdns_context_set_namespaces()"
# define GETDNS_NAMESPACE_MDNS_TEXT "See getdns_context_set_namespaces()"
# define GETDNS_NAMESPACE_NIS_TEXT "See getdns_context_set_namespaces()"
/* Resolution types */
typedef enum getdns_resolution_t {
GETDNS_RESOLUTION_STUB = 520 ,
GETDNS_RESOLUTION_RECURSING = 521
} getdns_resolution_t ;
# define GETDNS_RESOLUTION_STUB_TEXT "See getdns_context_set_resolution_type()"
# define GETDNS_RESOLUTION_RECURSING_TEXT "See getdns_context_set_resolution_type()"
/* Redirect policies */
typedef enum getdns_redirects_t {
GETDNS_REDIRECTS_FOLLOW = 530 ,
GETDNS_REDIRECTS_DO_NOT_FOLLOW = 531
} getdns_redirects_t ;
# define GETDNS_REDIRECTS_FOLLOW_TEXT "See getdns_context_set_follow_redirects()"
# define GETDNS_REDIRECTS_DO_NOT_FOLLOW_TEXT "See getdns_context_set_follow_redirects()"
/* Transport arrangements */
typedef enum getdns_transport_t {
GETDNS_TRANSPORT_UDP_FIRST_AND_FALL_BACK_TO_TCP = 540 ,
GETDNS_TRANSPORT_UDP_ONLY = 541 ,
GETDNS_TRANSPORT_TCP_ONLY = 542 ,
GETDNS_TRANSPORT_TCP_ONLY_KEEP_CONNECTIONS_OPEN = 543
} getdns_transport_t ;
# define GETDNS_TRANSPORT_UDP_FIRST_AND_FALL_BACK_TO_TCP_TEXT "See getdns_context_set_dns_transport()"
# define GETDNS_TRANSPORT_UDP_ONLY_TEXT "See getdns_context_set_dns_transport()"
# define GETDNS_TRANSPORT_TCP_ONLY_TEXT "See getdns_context_set_dns_transport()"
# define GETDNS_TRANSPORT_TCP_ONLY_KEEP_CONNECTIONS_OPEN_TEXT "See getdns_context_set_dns_transport()"
/* Suffix appending methods */
typedef enum getdns_append_name_t {
GETDNS_APPEND_NAME_ALWAYS = 550 ,
GETDNS_APPEND_NAME_ONLY_TO_SINGLE_LABEL_AFTER_FAILURE = 551 ,
GETDNS_APPEND_NAME_ONLY_TO_MULTIPLE_LABEL_NAME_AFTER_FAILURE = 552 ,
GETDNS_APPEND_NAME_NEVER = 553
} getdns_append_name_t ;
# define GETDNS_APPEND_NAME_ALWAYS_TEXT "See getdns_context_set_append_name()"
# define GETDNS_APPEND_NAME_ONLY_TO_SINGLE_LABEL_AFTER_FAILURE_TEXT "See getdns_context_set_append_name()"
# define GETDNS_APPEND_NAME_ONLY_TO_MULTIPLE_LABEL_NAME_AFTER_FAILURE_TEXT "See getdns_context_set_append_name()"
# define GETDNS_APPEND_NAME_NEVER_TEXT "See getdns_context_set_append_name()"
2013-11-05 10:28:10 -06:00
/* Context codes */
2014-02-05 17:25:26 -06:00
typedef enum getdns_context_code_t {
GETDNS_CONTEXT_CODE_NAMESPACES = 600 ,
GETDNS_CONTEXT_CODE_RESOLUTION_TYPE = 601 ,
GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS = 602 ,
GETDNS_CONTEXT_CODE_UPSTREAM_RECURSIVE_SERVERS = 603 ,
GETDNS_CONTEXT_CODE_DNS_ROOT_SERVERS = 604 ,
GETDNS_CONTEXT_CODE_DNS_TRANSPORT = 605 ,
GETDNS_CONTEXT_CODE_LIMIT_OUTSTANDING_QUERIES = 606 ,
GETDNS_CONTEXT_CODE_APPEND_NAME = 607 ,
GETDNS_CONTEXT_CODE_SUFFIX = 608 ,
GETDNS_CONTEXT_CODE_DNSSEC_TRUST_ANCHORS = 609 ,
GETDNS_CONTEXT_CODE_EDNS_MAXIMUM_UDP_PAYLOAD_SIZE = 610 ,
GETDNS_CONTEXT_CODE_EDNS_EXTENDED_RCODE = 611 ,
GETDNS_CONTEXT_CODE_EDNS_VERSION = 612 ,
GETDNS_CONTEXT_CODE_EDNS_DO_BIT = 613 ,
GETDNS_CONTEXT_CODE_DNSSEC_ALLOWED_SKEW = 614 ,
GETDNS_CONTEXT_CODE_MEMORY_FUNCTIONS = 615 ,
GETDNS_CONTEXT_CODE_TIMEOUT = 616
} getdns_context_code_t ;
2013-12-04 09:43:57 -06:00
# define GETDNS_CONTEXT_CODE_NAMESPACES_TEXT "Change related to getdns_context_set_namespaces"
# define GETDNS_CONTEXT_CODE_RESOLUTION_TYPE_TEXT "Change related to getdns_context_set_resolution_type"
# define GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS_TEXT "Change related to getdns_context_set_follow_redirects"
# define GETDNS_CONTEXT_CODE_UPSTREAM_RECURSIVE_SERVERS_TEXT "Change related to getdns_context_set_upstream_recursive_servers"
# define GETDNS_CONTEXT_CODE_DNS_ROOT_SERVERS_TEXT "Change related to getdns_context_set_dns_root_servers"
# define GETDNS_CONTEXT_CODE_DNS_TRANSPORT_TEXT "Change related to getdns_context_set_dns_transport"
# define GETDNS_CONTEXT_CODE_LIMIT_OUTSTANDING_QUERIES_TEXT "Change related to getdns_context_set_limit_outstanding_queries"
# define GETDNS_CONTEXT_CODE_APPEND_NAME_TEXT "Change related to getdns_context_set_append_name"
# define GETDNS_CONTEXT_CODE_SUFFIX_TEXT "Change related to getdns_context_set_suffix"
# define GETDNS_CONTEXT_CODE_DNSSEC_TRUST_ANCHORS_TEXT "Change related to getdns_context_set_dnssec_trust_anchors"
# define GETDNS_CONTEXT_CODE_EDNS_MAXIMUM_UDP_PAYLOAD_SIZE_TEXT "Change related to getdns_context_set_edns_maximum_udp_payload_size"
# define GETDNS_CONTEXT_CODE_EDNS_EXTENDED_RCODE_TEXT "Change related to getdns_context_set_edns_extended_rcode"
# define GETDNS_CONTEXT_CODE_EDNS_VERSION_TEXT "Change related to getdns_context_set_edns_version"
# define GETDNS_CONTEXT_CODE_EDNS_DO_BIT_TEXT "Change related to getdns_context_set_edns_do_bit"
# define GETDNS_CONTEXT_CODE_DNSSEC_ALLOWED_SKEW_TEXT "Change related to getdns_context_set_dnssec_allowed_skew"
2013-12-06 09:02:32 -06:00
# define GETDNS_CONTEXT_CODE_MEMORY_FUNCTIONS_TEXT "Change related to getdns_context_set_memory_functions"
2013-12-06 07:46:34 -06:00
# define GETDNS_CONTEXT_CODE_TIMEOUT_TEXT "Change related to getdns_context_set_timeout"
2013-11-05 10:28:10 -06:00
/* Callback Type Variables */
2014-02-05 17:25:26 -06:00
typedef enum getdns_callback_type_t {
GETDNS_CALLBACK_COMPLETE = 700 ,
GETDNS_CALLBACK_CANCEL = 701 ,
GETDNS_CALLBACK_TIMEOUT = 702 ,
GETDNS_CALLBACK_ERROR = 703
} getdns_callback_type_t ;
2013-12-04 09:43:57 -06:00
# define GETDNS_CALLBACK_COMPLETE_TEXT "The response has the requested data in it"
# define GETDNS_CALLBACK_CANCEL_TEXT "The calling program cancelled the callback; response is NULL"
# define GETDNS_CALLBACK_TIMEOUT_TEXT "The requested action timed out; response is NULL"
# define GETDNS_CALLBACK_ERROR_TEXT "The requested action had an error; response is NULL"
2013-11-05 10:28:10 -06:00
/* Type Of Name Services */
# define GETDNS_NAMETYPE_DNS 800
2013-12-04 09:43:57 -06:00
# define GETDNS_NAMETYPE_DNS_TEXT "Normal DNS (RFC 1035)"
2013-11-05 10:28:10 -06:00
# define GETDNS_NAMETYPE_WINS 801
2013-12-04 09:43:57 -06:00
# define GETDNS_NAMETYPE_WINS_TEXT "The WINS name service (some reference needed)"
2013-11-05 10:28:10 -06:00
/* Status Codes for Responses */
# define GETDNS_RESPSTATUS_GOOD 900
2013-12-04 09:43:57 -06:00
# define GETDNS_RESPSTATUS_GOOD_TEXT "At least one response was returned"
2013-11-05 10:28:10 -06:00
# define GETDNS_RESPSTATUS_NO_NAME 901
2013-12-04 09:43:57 -06:00
# define GETDNS_RESPSTATUS_NO_NAME_TEXT "Queries for the name yielded all negative responses"
2013-11-05 10:28:10 -06:00
# define GETDNS_RESPSTATUS_ALL_TIMEOUT 902
2013-12-04 09:43:57 -06:00
# define GETDNS_RESPSTATUS_ALL_TIMEOUT_TEXT "All queries for the name timed out"
2013-11-05 10:28:10 -06:00
# define GETDNS_RESPSTATUS_NO_SECURE_ANSWERS 903
2013-12-04 09:43:57 -06:00
# define GETDNS_RESPSTATUS_NO_SECURE_ANSWERS_TEXT "The context setting for getting only secure responses was specified, and at least one DNS response was received, but no DNS response was determined to be secure through DNSSEC."
2013-11-05 10:28:10 -06:00
/* Values Associated With Extensions */
# define GETDNS_EXTENSION_TRUE 1000
2013-12-04 09:43:57 -06:00
# define GETDNS_EXTENSION_TRUE_TEXT "Turn on the extension"
2013-11-05 10:28:10 -06:00
# define GETDNS_EXTENSION_FALSE 1001
2013-12-04 09:43:57 -06:00
# define GETDNS_EXTENSION_FALSE_TEXT "Do not turn on the extension"
2013-11-05 10:28:10 -06:00
/* Values Associated With DNS Errors Found By The API */
# define GETDNS_BAD_DNS_CNAME_IN_TARGET 1100
2013-12-04 09:43:57 -06:00
# define GETDNS_BAD_DNS_CNAME_IN_TARGET_TEXT "A DNS query type that does not allow a target to be a CNAME pointed to a CNAME"
2013-11-05 10:28:10 -06:00
# define GETDNS_BAD_DNS_ALL_NUMERIC_LABEL 1101
2013-12-04 09:43:57 -06:00
# define GETDNS_BAD_DNS_ALL_NUMERIC_LABEL_TEXT "One or more labels in a returned domain name is all-numeric; this is not legal for a hostname"
2013-11-05 10:28:10 -06:00
# define GETDNS_BAD_DNS_CNAME_RETURNED_FOR_OTHER_TYPE 1102
2013-12-04 09:43:57 -06:00
# define GETDNS_BAD_DNS_CNAME_RETURNED_FOR_OTHER_TYPE_TEXT "A DNS query for a type other than CNAME returned a CNAME response"
2013-11-05 10:28:10 -06:00
2014-02-18 07:50:27 -06:00
2014-02-05 17:25:26 -06:00
/* Defines for RRtypes (from 2014-02) */
2013-11-05 10:28:10 -06:00
# define GETDNS_RRTYPE_A 1
# define GETDNS_RRTYPE_NS 2
# define GETDNS_RRTYPE_MD 3
# define GETDNS_RRTYPE_MF 4
# define GETDNS_RRTYPE_CNAME 5
# define GETDNS_RRTYPE_SOA 6
# define GETDNS_RRTYPE_MB 7
# define GETDNS_RRTYPE_MG 8
# define GETDNS_RRTYPE_MR 9
# define GETDNS_RRTYPE_NULL 10
# define GETDNS_RRTYPE_WKS 11
# define GETDNS_RRTYPE_PTR 12
# define GETDNS_RRTYPE_HINFO 13
# define GETDNS_RRTYPE_MINFO 14
# define GETDNS_RRTYPE_MX 15
# define GETDNS_RRTYPE_TXT 16
# define GETDNS_RRTYPE_RP 17
# define GETDNS_RRTYPE_AFSDB 18
# define GETDNS_RRTYPE_X25 19
# define GETDNS_RRTYPE_ISDN 20
# define GETDNS_RRTYPE_RT 21
# define GETDNS_RRTYPE_NSAP 22
# define GETDNS_RRTYPE_SIG 24
# define GETDNS_RRTYPE_KEY 25
# define GETDNS_RRTYPE_PX 26
# define GETDNS_RRTYPE_GPOS 27
# define GETDNS_RRTYPE_AAAA 28
# define GETDNS_RRTYPE_LOC 29
# define GETDNS_RRTYPE_NXT 30
# define GETDNS_RRTYPE_EID 31
# define GETDNS_RRTYPE_NIMLOC 32
# define GETDNS_RRTYPE_SRV 33
# define GETDNS_RRTYPE_ATMA 34
# define GETDNS_RRTYPE_NAPTR 35
# define GETDNS_RRTYPE_KX 36
# define GETDNS_RRTYPE_CERT 37
# define GETDNS_RRTYPE_A6 38
# define GETDNS_RRTYPE_DNAME 39
# define GETDNS_RRTYPE_SINK 40
# define GETDNS_RRTYPE_OPT 41
# define GETDNS_RRTYPE_APL 42
# define GETDNS_RRTYPE_DS 43
# define GETDNS_RRTYPE_SSHFP 44
# define GETDNS_RRTYPE_IPSECKEY 45
# define GETDNS_RRTYPE_RRSIG 46
# define GETDNS_RRTYPE_NSEC 47
# define GETDNS_RRTYPE_DNSKEY 48
# define GETDNS_RRTYPE_DHCID 49
# define GETDNS_RRTYPE_NSEC3 50
# define GETDNS_RRTYPE_NSEC3PARAM 51
# define GETDNS_RRTYPE_TLSA 52
# define GETDNS_RRTYPE_HIP 55
# define GETDNS_RRTYPE_NINFO 56
# define GETDNS_RRTYPE_RKEY 57
# define GETDNS_RRTYPE_TALINK 58
# define GETDNS_RRTYPE_CDS 59
# define GETDNS_RRTYPE_SPF 99
# define GETDNS_RRTYPE_UINFO 100
# define GETDNS_RRTYPE_UID 101
# define GETDNS_RRTYPE_GID 102
# define GETDNS_RRTYPE_UNSPEC 103
# define GETDNS_RRTYPE_NID 104
# define GETDNS_RRTYPE_L32 105
# define GETDNS_RRTYPE_L64 106
# define GETDNS_RRTYPE_LP 107
2013-12-04 09:42:50 -06:00
# define GETDNS_RRTYPE_EUI48 108
# define GETDNS_RRTYPE_EUI64 109
2013-11-05 10:28:10 -06:00
# define GETDNS_RRTYPE_TKEY 249
# define GETDNS_RRTYPE_TSIG 250
# define GETDNS_RRTYPE_IXFR 251
# define GETDNS_RRTYPE_AXFR 252
# define GETDNS_RRTYPE_MAILB 253
# define GETDNS_RRTYPE_MAILA 254
2014-02-09 15:08:36 -06:00
# define GETDNS_RRTYPE_ANY 255
2013-11-05 10:28:10 -06:00
# define GETDNS_RRTYPE_URI 256
# define GETDNS_RRTYPE_CAA 257
# define GETDNS_RRTYPE_TA 32768
# define GETDNS_RRTYPE_DLV 32769
2014-02-18 07:50:27 -06:00
/* Defines for RRclasses (from 2014-02) */
2014-02-18 08:49:42 -06:00
# define GETDNS_RRCLASS_IN 1
# define GETDNS_RRCLASS_CH 3
# define GETDNS_RRCLASS_HS 4
# define GETDNS_RRCLASS_NONE 254
# define GETDNS_RRCLASS_ANY 255
2014-02-18 07:50:27 -06:00
/* Defines for Opcodes (from 2014-02) */
# define GETDNS_OPCODE_QUERY 0
# define GETDNS_OPCODE_IQUERY 1
# define GETDNS_OPCODE_STATUS 2
# define GETDNS_OPCODE_NOTIFY 4
# define GETDNS_OPCODE_UPDATE 5
/* Defines for Rcodes (from 2014-02) */
2014-02-19 04:03:48 -06:00
# define GETDNS_RCODE_NOERROR 0
# define GETDNS_RCODE_FORMERR 1
# define GETDNS_RCODE_SERVFAIL 2
# define GETDNS_RCODE_NXDOMAIN 3
# define GETDNS_RCODE_NOTIMP 4
# define GETDNS_RCODE_REFUSED 5
# define GETDNS_RCODE_YXDOMAIN 6
# define GETDNS_RCODE_YXRRSET 7
# define GETDNS_RCODE_NXRRSET 8
# define GETDNS_RCODE_NOTAUTH 9
# define GETDNS_RCODE_NOTZONE 10
# define GETDNS_RCODE_BADVERS 16
# define GETDNS_RCODE_BADSIG 16
# define GETDNS_RCODE_BADKEY 17
# define GETDNS_RCODE_BADTIME 18
# define GETDNS_RCODE_BADMODE 19
# define GETDNS_RCODE_BADNAME 20
# define GETDNS_RCODE_BADALG 21
# define GETDNS_RCODE_BADTRUNC 22
2014-02-18 07:50:27 -06:00
2013-11-05 10:28:10 -06:00
/* Various typedefs */
2014-02-19 08:09:44 -06:00
typedef struct getdns_context getdns_context ;
2013-11-05 10:28:10 -06:00
typedef uint64_t getdns_transaction_t ;
2013-12-03 07:36:06 -06:00
typedef enum getdns_data_type {
2013-11-05 10:28:10 -06:00
t_dict , t_list , t_int , t_bindata
} getdns_data_type ;
2014-02-19 08:09:44 -06:00
typedef struct getdns_bindata {
2013-11-05 10:28:10 -06:00
size_t size ;
2013-12-03 07:36:06 -06:00
uint8_t * data ;
2014-02-19 08:09:44 -06:00
} getdns_bindata ;
typedef struct getdns_dict getdns_dict ;
typedef struct getdns_list getdns_list ;
2013-11-05 10:28:10 -06:00
/* Helper functions for data structures */
/* Lists: get the length, get the data_type of the value at a given
position , and get the data at a given position */
2014-02-19 08:09:44 -06:00
getdns_return_t getdns_list_get_length ( const getdns_list * this_list , size_t * answer ) ;
getdns_return_t getdns_list_get_data_type ( const getdns_list * this_list , size_t index , getdns_data_type * answer ) ;
getdns_return_t getdns_list_get_dict ( const getdns_list * this_list , size_t index , getdns_dict * * answer ) ;
getdns_return_t getdns_list_get_list ( const getdns_list * this_list , size_t index , getdns_list * * answer ) ;
getdns_return_t getdns_list_get_bindata ( const getdns_list * this_list , size_t index , getdns_bindata * * answer ) ;
getdns_return_t getdns_list_get_int ( const getdns_list * this_list , size_t index , uint32_t * answer ) ;
2013-11-05 10:28:10 -06:00
/* Dicts: get the list of names, get the data_type of the
value at a given name , and get the data at a given name */
2014-02-19 08:09:44 -06:00
getdns_return_t getdns_dict_get_names ( const getdns_dict * this_dict , getdns_list * * answer ) ;
getdns_return_t getdns_dict_get_data_type ( const getdns_dict * this_dict , const char * name , getdns_data_type * answer ) ;
getdns_return_t getdns_dict_get_dict ( const getdns_dict * this_dict , const char * name , getdns_dict * * answer ) ;
getdns_return_t getdns_dict_get_list ( const getdns_dict * this_dict , const char * name , getdns_list * * answer ) ;
getdns_return_t getdns_dict_get_bindata ( const getdns_dict * this_dict , const char * name , getdns_bindata * * answer ) ;
getdns_return_t getdns_dict_get_int ( const getdns_dict * this_dict , const char * name , uint32_t * answer ) ;
2013-11-05 10:28:10 -06:00
/* Lists: create, destroy, and set the data at a given position */
2014-02-19 08:09:44 -06:00
getdns_list * getdns_list_create ( ) ;
getdns_list * getdns_list_create_with_context (
getdns_context * context
2013-12-04 09:47:46 -06:00
) ;
2014-02-19 08:09:44 -06:00
getdns_list * getdns_list_create_with_memory_functions (
2013-12-04 09:47:46 -06:00
void * ( * malloc ) ( size_t ) ,
void * ( * realloc ) ( void * , size_t ) ,
void ( * free ) ( void * )
) ;
2014-02-19 08:09:44 -06:00
getdns_list * getdns_list_create_with_extended_memory_functions (
2013-12-04 09:47:46 -06:00
void * userarg ,
void * ( * malloc ) ( void * userarg , size_t ) ,
void * ( * realloc ) ( void * userarg , void * , size_t ) ,
void ( * free ) ( void * userarg , void * )
) ;
2014-02-19 08:09:44 -06:00
void getdns_list_destroy ( getdns_list * this_list ) ;
getdns_return_t getdns_list_set_dict ( getdns_list * this_list , size_t index , const getdns_dict * child_dict ) ;
getdns_return_t getdns_list_set_list ( getdns_list * this_list , size_t index , const getdns_list * child_list ) ;
getdns_return_t getdns_list_set_bindata ( getdns_list * this_list , size_t index , const getdns_bindata * child_bindata ) ;
getdns_return_t getdns_list_set_int ( getdns_list * this_list , size_t index , uint32_t child_uint32 ) ;
2013-11-05 10:28:10 -06:00
/* Dicts: create, destroy, and set the data at a given name */
2014-02-19 08:09:44 -06:00
getdns_dict * getdns_dict_create ( ) ;
getdns_dict * getdns_dict_create_with_context (
getdns_context * context
2013-12-04 09:47:46 -06:00
) ;
2014-02-19 08:09:44 -06:00
getdns_dict * getdns_dict_create_with_memory_functions (
2013-12-04 09:47:46 -06:00
void * ( * malloc ) ( size_t ) ,
void * ( * realloc ) ( void * , size_t ) ,
void ( * free ) ( void * )
) ;
2014-02-19 08:09:44 -06:00
getdns_dict * getdns_dict_create_with_extended_memory_functions (
2013-12-04 09:47:46 -06:00
void * userarg ,
void * ( * malloc ) ( void * userarg , size_t ) ,
void * ( * realloc ) ( void * userarg , void * , size_t ) ,
void ( * free ) ( void * userarg , void * )
) ;
2014-02-19 08:09:44 -06:00
void getdns_dict_destroy ( getdns_dict * this_dict ) ;
getdns_return_t getdns_dict_set_dict ( getdns_dict * this_dict , const char * name , const getdns_dict * child_dict ) ;
getdns_return_t getdns_dict_set_list ( getdns_dict * this_dict , const char * name , const getdns_list * child_list ) ;
getdns_return_t getdns_dict_set_bindata ( getdns_dict * this_dict , const char * name , const getdns_bindata * child_bindata ) ;
getdns_return_t getdns_dict_set_int ( getdns_dict * this_dict , const char * name , uint32_t child_uint32 ) ;
getdns_return_t getdns_dict_remove_name ( getdns_dict * this_dict , const char * name ) ;
2013-11-05 10:28:10 -06:00
/* Callback arguments */
typedef void ( * getdns_callback_t ) (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
2014-02-05 17:25:26 -06:00
getdns_callback_type_t callback_type ,
2014-02-19 08:09:44 -06:00
getdns_dict * response ,
2013-11-05 10:28:10 -06:00
void * userarg ,
getdns_transaction_t transaction_id ) ;
/* Function definitions */
getdns_return_t
getdns_general (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
const char * name ,
uint16_t request_type ,
getdns_dict * extensions ,
void * userarg ,
getdns_transaction_t * transaction_id ,
getdns_callback_t callbackfn
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_address (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
const char * name ,
getdns_dict * extensions ,
void * userarg ,
getdns_transaction_t * transaction_id ,
getdns_callback_t callbackfn
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_hostname (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
getdns_dict * address ,
getdns_dict * extensions ,
void * userarg ,
getdns_transaction_t * transaction_id ,
getdns_callback_t callbackfn
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_service (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
const char * name ,
getdns_dict * extensions ,
void * userarg ,
getdns_transaction_t * transaction_id ,
getdns_callback_t callbackfn
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_create (
2014-02-19 08:09:44 -06:00
getdns_context * * context ,
int set_from_os
2013-11-05 10:28:10 -06:00
) ;
2013-12-04 09:47:46 -06:00
getdns_return_t
getdns_context_create_with_memory_functions (
2014-02-19 08:09:44 -06:00
getdns_context * * context ,
int set_from_os ,
void * ( * malloc ) ( size_t ) ,
void * ( * realloc ) ( void * , size_t ) ,
void ( * free ) ( void * )
2013-12-04 09:47:46 -06:00
) ;
getdns_return_t
getdns_context_create_with_extended_memory_functions (
2014-02-19 08:09:44 -06:00
getdns_context * * context ,
int set_from_os ,
void * userarg ,
void * ( * malloc ) ( void * userarg , size_t ) ,
void * ( * realloc ) ( void * userarg , void * , size_t ) ,
void ( * free ) ( void * userarg , void * )
2013-12-04 09:47:46 -06:00
) ;
2013-11-05 10:28:10 -06:00
void
getdns_context_destroy (
2014-02-19 08:09:44 -06:00
getdns_context * context
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_cancel_callback (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
getdns_transaction_t transaction_id
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_general_sync (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
const char * name ,
uint16_t request_type ,
getdns_dict * extensions ,
getdns_dict * * response
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_address_sync (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
const char * name ,
getdns_dict * extensions ,
getdns_dict * * response
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_hostname_sync (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
getdns_dict * address ,
getdns_dict * extensions ,
getdns_dict * * response
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_service_sync (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
const char * name ,
getdns_dict * extensions ,
getdns_dict * * response
2013-11-05 10:28:10 -06:00
) ;
2014-02-18 07:47:35 -06:00
getdns_return_t
2013-11-05 10:28:10 -06:00
getdns_convert_dns_name_to_fqdn (
2014-02-19 08:09:44 -06:00
const getdns_bindata * dns_name_wire_fmt ,
2014-02-18 07:47:35 -06:00
char * * fqdn_as_string
2013-11-05 10:28:10 -06:00
) ;
2014-02-18 07:47:35 -06:00
getdns_return_t
2013-11-05 10:28:10 -06:00
getdns_convert_fqdn_to_dns_name (
2014-02-18 07:47:35 -06:00
const char * fqdn_as_string ,
2014-02-19 08:09:44 -06:00
getdns_bindata * * dns_name_wire_fmt
2013-11-05 10:28:10 -06:00
) ;
char *
getdns_convert_ulabel_to_alabel (
2014-01-14 08:37:33 -06:00
const char * ulabel
2013-11-05 10:28:10 -06:00
) ;
char *
getdns_convert_alabel_to_ulabel (
2014-01-14 08:37:33 -06:00
const char * alabel
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_validate_dnssec (
2014-02-19 08:09:44 -06:00
getdns_list * record_to_validate ,
getdns_list * bundle_of_support_records ,
getdns_list * trust_anchor_records
2013-11-05 10:28:10 -06:00
) ;
char *
getdns_pretty_print_dict (
2014-02-19 08:09:44 -06:00
const getdns_dict * some_dict
2013-11-05 10:28:10 -06:00
) ;
char *
getdns_display_ip_address (
2014-02-19 08:09:44 -06:00
const getdns_bindata * bindata_of_ipv4_or_ipv6_address
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_context_update_callback (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
void ( * value ) ( getdns_context * context , getdns_context_code_t changed_item )
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_resolution_type (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
getdns_resolution_t value
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_namespaces (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
size_t namespace_count ,
getdns_namespace_t * namespaces
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_dns_transport (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
getdns_transport_t value
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_limit_outstanding_queries (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
uint16_t limit
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_timeout (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
uint64_t timeout
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_follow_redirects (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
getdns_redirects_t value
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_dns_root_servers (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
getdns_list * addresses
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_append_name (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
getdns_append_name_t value
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_suffix (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
getdns_list * value
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_dnssec_trust_anchors (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
getdns_list * value
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_dnssec_allowed_skew (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
uint32_t value
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
2014-01-20 09:18:14 -06:00
getdns_context_set_upstream_recursive_servers (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
getdns_list * upstream_list
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_edns_maximum_udp_payload_size (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
uint16_t value
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_edns_extended_rcode (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
uint8_t value
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_edns_version (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
uint8_t value
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
getdns_context_set_edns_do_bit (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
uint8_t value
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
2013-12-04 09:47:46 -06:00
getdns_context_set_memory_functions (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
void * ( * malloc ) ( size_t ) ,
void * ( * realloc ) ( void * , size_t ) ,
void ( * free ) ( void * )
2013-11-05 10:28:10 -06:00
) ;
getdns_return_t
2013-12-04 09:47:46 -06:00
getdns_context_set_extended_memory_functions (
2014-02-19 08:09:44 -06:00
getdns_context * context ,
void * userarg ,
void * ( * malloc ) ( void * userarg , size_t sz ) ,
void * ( * realloc ) ( void * userarg , void * ptr , size_t sz ) ,
void ( * free ) ( void * userarg , void * ptr )
2013-11-05 10:28:10 -06:00
) ;
2014-01-22 03:42:01 -06:00
# ifdef __cplusplus
}
# endif
2013-11-05 10:28:10 -06:00
# endif /* GETDNS_H */