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