146283Sdfr/* 246283Sdfr * drill.h 398944Sobrien * the main header file of drill 498944Sobrien * (c) 2005, 2006 NLnet Labs 546283Sdfr * 698944Sobrien * See the file LICENSE for the license 746283Sdfr * 898944Sobrien */ 998944Sobrien#ifndef _DRILL_H_ 1098944Sobrien#define _DRILL_H_ 1198944Sobrien#include "config.h" 1246283Sdfr 1398944Sobrien#include "drill_util.h" 1498944Sobrien 1598944Sobrien#define DRILL_VERSION PACKAGE_VERSION 1698944Sobrien 1746283Sdfr/* what kind of stuff do we allow */ 1898944Sobrien#define DRILL_QUERY 0 1998944Sobrien#define DRILL_TRACE 1 2098944Sobrien#define DRILL_CHASE 2 2198944Sobrien#define DRILL_AFROMFILE 3 2246283Sdfr#define DRILL_QTOFILE 4 2346283Sdfr#define DRILL_NSEC 5 2446283Sdfr#define DRILL_REVERSE 6 2546283Sdfr#define DRILL_SECTRACE 7 2646283Sdfr 2746283Sdfr#define DRILL_ON(VAR, BIT) \ 2846283Sdfr(VAR) = (VAR) | (BIT) 2946283Sdfr#define DRILL_OFF(VAR, BIT) \ 3046283Sdfr(VAR) = (VAR) & ~(BIT) 3146283Sdfr 3246283Sdfrextern ldns_rr_list *global_dns_root; 3346283Sdfrextern bool qds; 3446283Sdfrextern int verbosity; 3546283Sdfr 3646283Sdfrldns_pkt *do_trace(ldns_resolver *res, 3746283Sdfr ldns_rdf *name, 3898944Sobrien ldns_rr_type type, 3998944Sobrien ldns_rr_class c); 4046283Sdfrldns_status do_chase(ldns_resolver *res, 4198944Sobrien ldns_rdf *name, 4246283Sdfr ldns_rr_type type, 4398944Sobrien ldns_rr_class c, 4498944Sobrien ldns_rr_list *trusted_keys, 4546283Sdfr ldns_pkt *pkt_o, 4698944Sobrien uint16_t qflags, 4746283Sdfr ldns_rr_list *prev_key_list, 4898944Sobrien int verbosity); 4946283Sdfrint do_secure_trace(ldns_resolver *res, 5046283Sdfr ldns_rdf *name, 5146283Sdfr ldns_rr_type type, 5298944Sobrien ldns_rr_class c, 5346283Sdfr ldns_rr_list *trusted_keys, 5446283Sdfr ldns_rdf *start_name); 5546283Sdfr 5646283Sdfrldns_rr_list * get_rr(ldns_resolver *res, 5746283Sdfr ldns_rdf *zname, 5846283Sdfr ldns_rr_type t, 5946283Sdfr ldns_rr_class c); 6046283Sdfr 6146283Sdfrvoid drill_pkt_print(FILE *fd, ldns_resolver *r, ldns_pkt *p); 6246283Sdfrvoid drill_pkt_print_footer(FILE *fd, ldns_resolver *r, ldns_pkt *p); 6346283Sdfr 6446283Sdfrldns_pkt_type get_dnssec_rr(ldns_pkt *p, 6546283Sdfr ldns_rdf *name, 6646283Sdfr ldns_rr_type t, 6746283Sdfr ldns_rr_list **rrlist, 6846283Sdfr ldns_rr_list **sig); 6946283Sdfr 7046283Sdfrldns_rr *ldns_nsec3_exact_match(ldns_rdf *qname, 7146283Sdfr ldns_rr_type qtype, 7298944Sobrien ldns_rr_list *nsec3s); 7346283Sdfr 7446283Sdfrldns_rdf *ldns_nsec3_closest_encloser(ldns_rdf *qname, 7598944Sobrien ldns_rr_type qtype, 7698944Sobrien ldns_rr_list *nsec3s); 7798944Sobrien 7846283Sdfr/* verifies denial of existence of *name in *pkt (must contain NSEC or NSEC3 records 7946283Sdfr * if *nsec_rrs and *nsec_rr_sigs are given, pointers to the relevant nsecs and their signatures are 8046283Sdfr * placed there 8146283Sdfr */ 8298944Sobrienldns_status ldns_verify_denial(ldns_pkt *pkt, 8346283Sdfr ldns_rdf *name, 8446283Sdfr ldns_rr_type type, 8546283Sdfr ldns_rr_list **nsec_rrs, 8646283Sdfr ldns_rr_list **nsec_rr_sigs); 8746283Sdfr 8846283Sdfrldns_pkt *read_hex_pkt(char *filename); 8946283Sdfrldns_buffer *read_hex_buffer(char *filename); 9046283Sdfrvoid init_root(void); 9146283Sdfrldns_rr_list *read_root_hints(const char *filename); 9246283Sdfrvoid clear_root(void); 9346283Sdfrvoid dump_hex(const ldns_pkt *pkt, const char *file); 9446283Sdfrvoid warning(const char *fmt, ...); 9546283Sdfrvoid error(const char *fmt, ...); 9646283Sdfrvoid mesg(const char *fmt, ...); 9746283Sdfr 9846283Sdfr/* screen.c */ 9946283Sdfrvoid resolver_print_nameservers(ldns_resolver *r); 10046283Sdfrvoid print_dnskey(ldns_rr_list *key_list); 10198944Sobrienvoid print_ds(ldns_rr_list *ds_list); 10298944Sobrien 10346283Sdfr#endif /* _DRILL_H_ */ 10446283Sdfr