xref: /freebsd/contrib/ldns/drill/drill.h (revision 5afab0e5e56fe90a378fb57249600e7924e1cab2)
17b5038d7SDag-Erling Smørgrav /*
27b5038d7SDag-Erling Smørgrav  * drill.h
37b5038d7SDag-Erling Smørgrav  * the main header file of drill
47b5038d7SDag-Erling Smørgrav  * (c) 2005, 2006 NLnet Labs
57b5038d7SDag-Erling Smørgrav  *
67b5038d7SDag-Erling Smørgrav  * See the file LICENSE for the license
77b5038d7SDag-Erling Smørgrav  *
87b5038d7SDag-Erling Smørgrav  */
97b5038d7SDag-Erling Smørgrav #ifndef _DRILL_H_
107b5038d7SDag-Erling Smørgrav #define _DRILL_H_
117b5038d7SDag-Erling Smørgrav #include "config.h"
127b5038d7SDag-Erling Smørgrav 
137b5038d7SDag-Erling Smørgrav #include "drill_util.h"
147b5038d7SDag-Erling Smørgrav 
157b5038d7SDag-Erling Smørgrav #define DRILL_VERSION PACKAGE_VERSION
167b5038d7SDag-Erling Smørgrav 
177b5038d7SDag-Erling Smørgrav /* what kind of stuff do we allow */
187b5038d7SDag-Erling Smørgrav #define DRILL_QUERY	0
197b5038d7SDag-Erling Smørgrav #define DRILL_TRACE	1
207b5038d7SDag-Erling Smørgrav #define DRILL_CHASE	2
217b5038d7SDag-Erling Smørgrav #define DRILL_AFROMFILE 3
227b5038d7SDag-Erling Smørgrav #define DRILL_QTOFILE 	4
237b5038d7SDag-Erling Smørgrav #define DRILL_NSEC	5
247b5038d7SDag-Erling Smørgrav #define DRILL_SECTRACE 	7
257b5038d7SDag-Erling Smørgrav 
267b5038d7SDag-Erling Smørgrav #define DRILL_ON(VAR, BIT) \
277b5038d7SDag-Erling Smørgrav (VAR) = (VAR) | (BIT)
287b5038d7SDag-Erling Smørgrav #define DRILL_OFF(VAR, BIT) \
297b5038d7SDag-Erling Smørgrav (VAR) = (VAR) & ~(BIT)
307b5038d7SDag-Erling Smørgrav 
317b5038d7SDag-Erling Smørgrav extern ldns_rr_list *global_dns_root;
327b5038d7SDag-Erling Smørgrav extern int verbosity;
337b5038d7SDag-Erling Smørgrav 
34*986ba33cSDag-Erling Smørgrav void do_trace(ldns_resolver *res,
357b5038d7SDag-Erling Smørgrav 			    ldns_rdf *name,
367b5038d7SDag-Erling Smørgrav 			    ldns_rr_type type,
377b5038d7SDag-Erling Smørgrav 			    ldns_rr_class c);
387b5038d7SDag-Erling Smørgrav ldns_status do_chase(ldns_resolver *res,
397b5038d7SDag-Erling Smørgrav 				 ldns_rdf *name,
407b5038d7SDag-Erling Smørgrav 				 ldns_rr_type type,
417b5038d7SDag-Erling Smørgrav 				 ldns_rr_class c,
427b5038d7SDag-Erling Smørgrav 				 ldns_rr_list *trusted_keys,
437b5038d7SDag-Erling Smørgrav 				 ldns_pkt *pkt_o,
447b5038d7SDag-Erling Smørgrav 				 uint16_t qflags,
45*986ba33cSDag-Erling Smørgrav 				 ldns_rr_list *prev_key_list);
467b5038d7SDag-Erling Smørgrav int do_secure_trace(ldns_resolver *res,
477b5038d7SDag-Erling Smørgrav 				ldns_rdf *name,
487b5038d7SDag-Erling Smørgrav 				ldns_rr_type type,
497b5038d7SDag-Erling Smørgrav 				ldns_rr_class c,
507b5038d7SDag-Erling Smørgrav 				ldns_rr_list *trusted_keys,
517b5038d7SDag-Erling Smørgrav 				ldns_rdf *start_name);
527b5038d7SDag-Erling Smørgrav 
537b5038d7SDag-Erling Smørgrav ldns_rr_list *	get_rr(ldns_resolver *res,
547b5038d7SDag-Erling Smørgrav 				  ldns_rdf *zname,
557b5038d7SDag-Erling Smørgrav 				  ldns_rr_type t,
567b5038d7SDag-Erling Smørgrav 				  ldns_rr_class c);
577b5038d7SDag-Erling Smørgrav 
587b5038d7SDag-Erling Smørgrav void drill_pkt_print(FILE *fd, ldns_resolver *r, ldns_pkt *p);
597b5038d7SDag-Erling Smørgrav void drill_pkt_print_footer(FILE *fd, ldns_resolver *r, ldns_pkt *p);
607b5038d7SDag-Erling Smørgrav 
617b5038d7SDag-Erling Smørgrav ldns_pkt_type get_dnssec_rr(ldns_pkt *p,
627b5038d7SDag-Erling Smørgrav 					   ldns_rdf *name,
637b5038d7SDag-Erling Smørgrav 					   ldns_rr_type t,
647b5038d7SDag-Erling Smørgrav 					   ldns_rr_list **rrlist,
657b5038d7SDag-Erling Smørgrav 					   ldns_rr_list **sig);
667b5038d7SDag-Erling Smørgrav 
677b5038d7SDag-Erling Smørgrav ldns_rr *ldns_nsec3_exact_match(ldns_rdf *qname,
687b5038d7SDag-Erling Smørgrav 						  ldns_rr_type qtype,
697b5038d7SDag-Erling Smørgrav 						  ldns_rr_list *nsec3s);
707b5038d7SDag-Erling Smørgrav 
717b5038d7SDag-Erling Smørgrav ldns_rdf *ldns_nsec3_closest_encloser(ldns_rdf *qname,
727b5038d7SDag-Erling Smørgrav 							   ldns_rr_type qtype,
737b5038d7SDag-Erling Smørgrav 							   ldns_rr_list *nsec3s);
747b5038d7SDag-Erling Smørgrav 
757b5038d7SDag-Erling Smørgrav /* verifies denial of existence of *name in *pkt (must contain NSEC or NSEC3 records
767b5038d7SDag-Erling Smørgrav  * if *nsec_rrs and *nsec_rr_sigs are given, pointers to the relevant nsecs and their signatures are
777b5038d7SDag-Erling Smørgrav  * placed there
787b5038d7SDag-Erling Smørgrav  */
797b5038d7SDag-Erling Smørgrav ldns_status ldns_verify_denial(ldns_pkt *pkt,
807b5038d7SDag-Erling Smørgrav 						 ldns_rdf *name,
817b5038d7SDag-Erling Smørgrav 						 ldns_rr_type type,
827b5038d7SDag-Erling Smørgrav 						 ldns_rr_list **nsec_rrs,
837b5038d7SDag-Erling Smørgrav 						 ldns_rr_list **nsec_rr_sigs);
847b5038d7SDag-Erling Smørgrav 
857b5038d7SDag-Erling Smørgrav ldns_pkt *read_hex_pkt(char *filename);
867b5038d7SDag-Erling Smørgrav ldns_buffer *read_hex_buffer(char *filename);
877b5038d7SDag-Erling Smørgrav void	init_root(void);
887b5038d7SDag-Erling Smørgrav ldns_rr_list *read_root_hints(const char *filename);
897b5038d7SDag-Erling Smørgrav void clear_root(void);
907b5038d7SDag-Erling Smørgrav void	dump_hex(const ldns_pkt *pkt, const char *file);
917b5038d7SDag-Erling Smørgrav void warning(const char *fmt, ...);
927b5038d7SDag-Erling Smørgrav void	error(const char *fmt, ...);
937b5038d7SDag-Erling Smørgrav void	mesg(const char *fmt, ...);
947b5038d7SDag-Erling Smørgrav 
957b5038d7SDag-Erling Smørgrav /* screen.c */
967b5038d7SDag-Erling Smørgrav void resolver_print_nameservers(ldns_resolver *r);
977b5038d7SDag-Erling Smørgrav void print_dnskey(ldns_rr_list *key_list);
987b5038d7SDag-Erling Smørgrav void print_ds(ldns_rr_list *ds_list);
997b5038d7SDag-Erling Smørgrav 
1007b5038d7SDag-Erling Smørgrav #endif /* _DRILL_H_ */
101