xref: /dragonfly/contrib/ldns/drill/drill.h (revision 819dec7191f8dd05a4f5fef9b139185f95acbafd)
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_SECTRACE        7
25 
26 #define DRILL_ON(VAR, BIT) \
27 (VAR) = (VAR) | (BIT)
28 #define DRILL_OFF(VAR, BIT) \
29 (VAR) = (VAR) & ~(BIT)
30 
31 extern ldns_rr_list *global_dns_root;
32 extern int verbosity;
33 
34 void do_trace(ldns_resolver *res,
35                                   ldns_rdf *name,
36                                   ldns_rr_type type,
37                                   ldns_rr_class c);
38 ldns_status do_chase(ldns_resolver *res,
39                                          ldns_rdf *name,
40                                          ldns_rr_type type,
41                                          ldns_rr_class c,
42                                          ldns_rr_list *trusted_keys,
43                                          ldns_pkt *pkt_o,
44                                          uint16_t qflags,
45                                          ldns_rr_list *prev_key_list);
46 int do_secure_trace(ldns_resolver *res,
47                                         ldns_rdf *name,
48                                         ldns_rr_type type,
49                                         ldns_rr_class c,
50                                         ldns_rr_list *trusted_keys,
51                                         ldns_rdf *start_name);
52 
53 ldns_rr_list *      get_rr(ldns_resolver *res,
54                                           ldns_rdf *zname,
55                                           ldns_rr_type t,
56                                           ldns_rr_class c);
57 
58 void drill_pkt_print(FILE *fd, ldns_resolver *r, ldns_pkt *p);
59 void drill_pkt_print_footer(FILE *fd, ldns_resolver *r, ldns_pkt *p);
60 
61 ldns_pkt_type get_dnssec_rr(ldns_pkt *p,
62                                                      ldns_rdf *name,
63                                                      ldns_rr_type t,
64                                                      ldns_rr_list **rrlist,
65                                                      ldns_rr_list **sig);
66 
67 ldns_rr *ldns_nsec3_exact_match(ldns_rdf *qname,
68                                                               ldns_rr_type qtype,
69                                                               ldns_rr_list *nsec3s);
70 
71 ldns_rdf *ldns_nsec3_closest_encloser(ldns_rdf *qname,
72                                                                          ldns_rr_type qtype,
73                                                                          ldns_rr_list *nsec3s);
74 
75 /* verifies denial of existence of *name in *pkt (must contain NSEC or NSEC3 records
76  * if *nsec_rrs and *nsec_rr_sigs are given, pointers to the relevant nsecs and their signatures are
77  * placed there
78  */
79 ldns_status ldns_verify_denial(ldns_pkt *pkt,
80                                                              ldns_rdf *name,
81                                                              ldns_rr_type type,
82                                                              ldns_rr_list **nsec_rrs,
83                                                              ldns_rr_list **nsec_rr_sigs);
84 
85 ldns_pkt *read_hex_pkt(char *filename);
86 ldns_buffer *read_hex_buffer(char *filename);
87 void      init_root(void);
88 ldns_rr_list *read_root_hints(const char *filename);
89 void clear_root(void);
90 void      dump_hex(const ldns_pkt *pkt, const char *file);
91 void warning(const char *fmt, ...);
92 void      error(const char *fmt, ...);
93 void      mesg(const char *fmt, ...);
94 
95 /* screen.c */
96 void resolver_print_nameservers(ldns_resolver *r);
97 void print_dnskey(ldns_rr_list *key_list);
98 void print_ds(ldns_rr_list *ds_list);
99 
100 #endif /* _DRILL_H_ */
101