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