1 #ifndef _DNS_H_INCLUDED_
2 #define _DNS_H_INCLUDED_
17 #include <netinet/in.h>
18 #include <arpa/nameser.h>
19 #ifdef RESOLVE_H_NEEDS_STDIO_H
22 #ifdef RESOLVE_H_NEEDS_NAMESER8_COMPAT_H
23 #include <nameser8_compat.h>
25 #ifdef RESOLVE_H_NEEDS_ARPA_NAMESER_COMPAT_H
26 #include <arpa/nameser_compat.h>
37 #define GETSHORT(s, cp) { \
38 unsigned char *t_cp = (u_char *)(cp); \
39 (s) = ((unsigned)t_cp[0] << 8) \
40 | ((unsigned)t_cp[1]) \
45 #define GETLONG(l, cp) { \
46 unsigned char *t_cp = (u_char *)(cp); \
47 (l) = ((unsigned)t_cp[0] << 24) \
48 | ((unsigned)t_cp[1] << 16) \
49 | ((unsigned)t_cp[2] << 8) \
50 | ((unsigned)t_cp[3]) \
67 #ifndef RES_USE_DNSSEC
68 #define RES_USE_DNSSEC 0
71 #define RES_USE_EDNS0 0
93 #define DNS_TLSA_USAGE_CA_CONSTRAINT 0
94 #define DNS_TLSA_USAGE_SERVICE_CERTIFICATE_CONSTRAINT 1
95 #define DNS_TLSA_USAGE_TRUST_ANCHOR_ASSERTION 2
96 #define DNS_TLSA_USAGE_DOMAIN_ISSUED_CERTIFICATE 3
101 #define DNS_TLSA_SELECTOR_FULL_CERTIFICATE 0
102 #define DNS_TLSA_SELECTOR_SUBJECTPUBLICKEYINFO 1
107 #define DNS_TLSA_MATCHING_TYPE_NO_HASH_USED 0
108 #define DNS_TLSA_MATCHING_TYPE_SHA256 1
109 #define DNS_TLSA_MATCHING_TYPE_SHA512 2
130 unsigned short class;
143 unsigned short class;
161 extern unsigned dns_type(
const char *);
174 const char *,
size_t);
207 #define DNS_RR_EQ_SA(rr, sa) \
208 ((SOCK_ADDR_IN_FAMILY(sa) == AF_INET && (rr)->type == T_A \
209 && SOCK_ADDR_IN_ADDR(sa).s_addr == IN_ADDR((rr)->data).s_addr) \
210 || (SOCK_ADDR_IN_FAMILY(sa) == AF_INET6 && (rr)->type == T_AAAA \
211 && memcmp((char *) &(SOCK_ADDR_IN6_ADDR(sa)), \
212 (rr)->data, (rr)->data_len) == 0))
214 #define DNS_RR_EQ_SA(rr, sa) \
215 (SOCK_ADDR_IN_FAMILY(sa) == AF_INET && (rr)->type == T_A \
216 && SOCK_ADDR_IN_ADDR(sa).s_addr == IN_ADDR((rr)->data).s_addr)
227 VSTRING *,
int *,
int,
unsigned *);
229 #define dns_lookup(name, type, rflags, list, fqdn, why) \
230 dns_lookup_x((name), (type), (rflags), (list), (fqdn), (why), (int *) 0, \
232 #define dns_lookup_r(name, type, rflags, list, fqdn, why, rcode) \
233 dns_lookup_x((name), (type), (rflags), (list), (fqdn), (why), (rcode), \
235 #define dns_lookup_l(name, rflags, list, fqdn, why, lflags, ...) \
236 dns_lookup_rl((name), (rflags), (list), (fqdn), (why), (int *) 0, \
237 (lflags), __VA_ARGS__)
238 #define dns_lookup_v(name, rflags, list, fqdn, why, lflags, ltype) \
239 dns_lookup_rv((name), (rflags), (list), (fqdn), (why), (int *) 0, \
245 #define DNS_REQ_FLAG_STOP_OK (1<<0)
246 #define DNS_REQ_FLAG_STOP_INVAL (1<<1)
247 #define DNS_REQ_FLAG_STOP_NULLMX (1<<2)
248 #define DNS_REQ_FLAG_STOP_MX_POLICY (1<<3)
249 #define DNS_REQ_FLAG_NCACHE_TTL (1<<4)
250 #define DNS_REQ_FLAG_NONE (0)
277 #define DNS_RECURSE (-7)
278 #define DNS_NOTFOUND (-6)
279 #define DNS_NULLMX (-5)
280 #define DNS_FAIL (-4)
281 #define DNS_INVAL (-3)
282 #define DNS_RETRY (-2)
283 #define DNS_POLICY (-1)
289 #define DNS_NAME_LEN 1024
296 #ifdef LIBDNS_INTERNAL
const char * dns_strtype(unsigned)
const char * dns_str_resflags(unsigned long)
int dns_rr_compare_pref_ipv4(DNS_RR *, DNS_RR *)
int dns_rr_compare_pref(DNS_RR *, DNS_RR *)
int dns_lookup_rl(const char *, unsigned, DNS_RR **, VSTRING *, VSTRING *, int *, int,...)
const char * dns_rr_to_pa(DNS_RR *, MAI_HOSTADDR_STR *)
DNS_RR * dns_rr_create(const char *, const char *, ushort, ushort, unsigned, unsigned, const char *, size_t)
const char * dns_strerror(unsigned)
int dns_lookup_x(const char *, unsigned, unsigned, DNS_RR **, VSTRING *, VSTRING *, int *, unsigned)
DNS_RR * dns_rr_remove(DNS_RR *, DNS_RR *)
MAPS * dns_rr_filter_maps
int dns_rr_to_sa(DNS_RR *, unsigned, struct sockaddr *, SOCKADDR_SIZE *)
DNS_RR * dns_rr_shuffle(DNS_RR *)
DNS_RR * dns_rr_copy(DNS_RR *)
DNS_RR * dns_sa_to_rr(const char *, unsigned, struct sockaddr *)
struct DNS_FIXED DNS_FIXED
int dns_rr_compare_pref_any(DNS_RR *, DNS_RR *)
DNS_RR * dns_rr_append(DNS_RR *, DNS_RR *)
int dns_rr_eq_sa(DNS_RR *, struct sockaddr *)
unsigned dns_type(const char *)
unsigned int dnssec_valid
DNS_RR * dns_rr_sort(DNS_RR *, int(*)(DNS_RR *, DNS_RR *))
int dns_lookup_rv(const char *, unsigned, DNS_RR **, VSTRING *, VSTRING *, int *, int, unsigned *)
int dns_rr_filter_execute(DNS_RR **rrlist)
char * dns_strrecord(VSTRING *, DNS_RR *)
int dns_rr_compare_pref_ipv6(DNS_RR *, DNS_RR *)
void dns_rr_free(DNS_RR *)
void dns_rr_filter_compile(const char *, const char *)