xref: /dragonfly/contrib/ldns/drill/drill.h (revision c6f73aab)
1 /*
2  * drill.h
3  * the main header file of drill
4  * (c) 2005, 2006 NLnet Labs
5  *
6  * See the file LICENSE for the license
7  *
8  */
9 #ifndef _DRILL_H_
10 #define _DRILL_H_
11 #include "config.h"
12 
13 #include "drill_util.h"
14 
15 #define DRILL_VERSION PACKAGE_VERSION
16 
17 /* what kind of stuff do we allow */
18 #define DRILL_QUERY	0
19 #define DRILL_TRACE	1
20 #define DRILL_CHASE	2
21 #define DRILL_AFROMFILE 3
22 #define DRILL_QTOFILE 	4
23 #define DRILL_NSEC	5
24 #define DRILL_REVERSE	6
25 #define DRILL_SECTRACE 	7
26 
27 #define DRILL_ON(VAR, BIT) \
28 (VAR) = (VAR) | (BIT)
29 #define DRILL_OFF(VAR, BIT) \
30 (VAR) = (VAR) & ~(BIT)
31 
32 extern ldns_rr_list *global_dns_root;
33 extern bool qds;
34 extern int verbosity;
35 
36 ldns_pkt *do_trace(ldns_resolver *res,
37 			    ldns_rdf *name,
38 			    ldns_rr_type type,
39 			    ldns_rr_class c);
40 ldns_status do_chase(ldns_resolver *res,
41 				 ldns_rdf *name,
42 				 ldns_rr_type type,
43 				 ldns_rr_class c,
44 				 ldns_rr_list *trusted_keys,
45 				 ldns_pkt *pkt_o,
46 				 uint16_t qflags,
47 				 ldns_rr_list *prev_key_list,
48 				 int verbosity);
49 int do_secure_trace(ldns_resolver *res,
50 				ldns_rdf *name,
51 				ldns_rr_type type,
52 				ldns_rr_class c,
53 				ldns_rr_list *trusted_keys,
54 				ldns_rdf *start_name);
55 
56 ldns_rr_list *	get_rr(ldns_resolver *res,
57 				  ldns_rdf *zname,
58 				  ldns_rr_type t,
59 				  ldns_rr_class c);
60 
61 void drill_pkt_print(FILE *fd, ldns_resolver *r, ldns_pkt *p);
62 void drill_pkt_print_footer(FILE *fd, ldns_resolver *r, ldns_pkt *p);
63 
64 ldns_pkt_type get_dnssec_rr(ldns_pkt *p,
65 					   ldns_rdf *name,
66 					   ldns_rr_type t,
67 					   ldns_rr_list **rrlist,
68 					   ldns_rr_list **sig);
69 
70 ldns_rr *ldns_nsec3_exact_match(ldns_rdf *qname,
71 						  ldns_rr_type qtype,
72 						  ldns_rr_list *nsec3s);
73 
74 ldns_rdf *ldns_nsec3_closest_encloser(ldns_rdf *qname,
75 							   ldns_rr_type qtype,
76 							   ldns_rr_list *nsec3s);
77 
78 /* verifies denial of existence of *name in *pkt (must contain NSEC or NSEC3 records
79  * if *nsec_rrs and *nsec_rr_sigs are given, pointers to the relevant nsecs and their signatures are
80  * placed there
81  */
82 ldns_status ldns_verify_denial(ldns_pkt *pkt,
83 						 ldns_rdf *name,
84 						 ldns_rr_type type,
85 						 ldns_rr_list **nsec_rrs,
86 						 ldns_rr_list **nsec_rr_sigs);
87 
88 ldns_pkt *read_hex_pkt(char *filename);
89 ldns_buffer *read_hex_buffer(char *filename);
90 void	init_root(void);
91 ldns_rr_list *read_root_hints(const char *filename);
92 void clear_root(void);
93 void	dump_hex(const ldns_pkt *pkt, const char *file);
94 void warning(const char *fmt, ...);
95 void	error(const char *fmt, ...);
96 void	mesg(const char *fmt, ...);
97 
98 /* screen.c */
99 void resolver_print_nameservers(ldns_resolver *r);
100 void print_dnskey(ldns_rr_list *key_list);
101 void print_ds(ldns_rr_list *ds_list);
102 
103 #endif /* _DRILL_H_ */
104