Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef LDNS_DNSSEC_ZONE_H
00009 #define LDNS_DNSSEC_ZONE_H
00010
00011 #include <ldns/rbtree.h>
00012 #include <ldns/host2str.h>
00013
00014 #ifdef __cplusplus
00015 extern "C" {
00016 #endif
00017
00021 typedef struct ldns_struct_dnssec_rrs ldns_dnssec_rrs;
00022 struct ldns_struct_dnssec_rrs
00023 {
00024 ldns_rr *rr;
00025 ldns_dnssec_rrs *next;
00026 };
00027
00031 typedef struct ldns_struct_dnssec_rrsets ldns_dnssec_rrsets;
00032 struct ldns_struct_dnssec_rrsets
00033 {
00034 ldns_dnssec_rrs *rrs;
00035 ldns_rr_type type;
00036 ldns_dnssec_rrs *signatures;
00037 ldns_dnssec_rrsets *next;
00038 };
00039
00044 typedef struct ldns_struct_dnssec_name ldns_dnssec_name;
00045 struct ldns_struct_dnssec_name
00046 {
00051 ldns_rdf *name;
00059 bool name_alloced;
00063 ldns_dnssec_rrsets *rrsets;
00067 ldns_rr *nsec;
00071 ldns_dnssec_rrs *nsec_signatures;
00081 bool is_glue;
00085 ldns_rdf *hashed_name;
00086 };
00087
00091 struct ldns_struct_dnssec_zone {
00093 ldns_dnssec_name *soa;
00095 ldns_rbtree_t *names;
00097 ldns_rbtree_t *hashed_names;
00102 ldns_rr *_nsec3params;
00103 };
00104 typedef struct ldns_struct_dnssec_zone ldns_dnssec_zone;
00105
00110 ldns_dnssec_rrs *ldns_dnssec_rrs_new(void);
00111
00118 void ldns_dnssec_rrs_free(ldns_dnssec_rrs *rrs);
00119
00126 void ldns_dnssec_rrs_deep_free(ldns_dnssec_rrs *rrs);
00127
00136 ldns_status ldns_dnssec_rrs_add_rr(ldns_dnssec_rrs *rrs, ldns_rr *rr);
00137
00144 void ldns_dnssec_rrs_print(FILE *out, ldns_dnssec_rrs *rrs);
00145
00153 void ldns_dnssec_rrs_print_fmt(FILE *out,
00154 const ldns_output_format *fmt, ldns_dnssec_rrs *rrs);
00155
00160 ldns_dnssec_rrsets *ldns_dnssec_rrsets_new(void);
00161
00168 void ldns_dnssec_rrsets_free(ldns_dnssec_rrsets *rrsets);
00169
00176 void ldns_dnssec_rrsets_deep_free(ldns_dnssec_rrsets *rrsets);
00177
00184 ldns_rr_type ldns_dnssec_rrsets_type(ldns_dnssec_rrsets *rrsets);
00185
00193 ldns_status ldns_dnssec_rrsets_set_type(ldns_dnssec_rrsets *rrsets,
00194 ldns_rr_type type);
00195
00204 ldns_status ldns_dnssec_rrsets_add_rr(ldns_dnssec_rrsets *rrsets, ldns_rr *rr);
00205
00213 void ldns_dnssec_rrsets_print(FILE *out,
00214 ldns_dnssec_rrsets *rrsets,
00215 bool follow);
00216
00225 void ldns_dnssec_rrsets_print_fmt(FILE *out,
00226 const ldns_output_format *fmt,
00227 ldns_dnssec_rrsets *rrsets,
00228 bool follow);
00229
00230
00235 ldns_dnssec_name *ldns_dnssec_name_new(void);
00236
00242 ldns_dnssec_name *ldns_dnssec_name_new_frm_rr(ldns_rr *rr);
00243
00250 void ldns_dnssec_name_free(ldns_dnssec_name *name);
00251
00258 void ldns_dnssec_name_deep_free(ldns_dnssec_name *name);
00259
00266 ldns_rdf *ldns_dnssec_name_name(ldns_dnssec_name *name);
00267
00268
00275 void ldns_dnssec_name_set_name(ldns_dnssec_name *name,
00276 ldns_rdf *dname);
00288 bool ldns_dnssec_name_is_glue(ldns_dnssec_name *name);
00289
00296 void ldns_dnssec_name_set_nsec(ldns_dnssec_name *name, ldns_rr *nsec);
00297
00308 int ldns_dnssec_name_cmp(const void *a, const void *b);
00309
00318 ldns_status ldns_dnssec_name_add_rr(ldns_dnssec_name *name,
00319 ldns_rr *rr);
00320
00328 ldns_dnssec_rrsets *ldns_dnssec_name_find_rrset(ldns_dnssec_name *name,
00329 ldns_rr_type type);
00330
00339 ldns_dnssec_rrsets *ldns_dnssec_zone_find_rrset(ldns_dnssec_zone *zone,
00340 ldns_rdf *dname,
00341 ldns_rr_type type);
00342
00350 void ldns_dnssec_name_print(FILE *out, ldns_dnssec_name *name);
00351
00360 void ldns_dnssec_name_print_fmt(FILE *out,
00361 const ldns_output_format *fmt, ldns_dnssec_name *name);
00362
00367 ldns_dnssec_zone *ldns_dnssec_zone_new(void);
00368
00379 ldns_status ldns_dnssec_zone_new_frm_fp(ldns_dnssec_zone** z, FILE* fp,
00380 ldns_rdf* origin, uint32_t ttl, ldns_rr_class c);
00381
00393 ldns_status ldns_dnssec_zone_new_frm_fp_l(ldns_dnssec_zone** z, FILE* fp,
00394 ldns_rdf* origin, uint32_t ttl, ldns_rr_class c, int* line_nr);
00395
00401 void ldns_dnssec_zone_free(ldns_dnssec_zone *zone);
00402
00408 void ldns_dnssec_zone_deep_free(ldns_dnssec_zone *zone);
00409
00420 ldns_status ldns_dnssec_zone_add_rr(ldns_dnssec_zone *zone,
00421 ldns_rr *rr);
00422
00430 void ldns_dnssec_zone_names_print(FILE *out, ldns_rbtree_t *tree, bool print_soa);
00431
00440 void ldns_dnssec_zone_names_print_fmt(FILE *out, const ldns_output_format *fmt,
00441 ldns_rbtree_t *tree, bool print_soa);
00442
00449 void ldns_dnssec_zone_print(FILE *out, ldns_dnssec_zone *zone);
00450
00458 void ldns_dnssec_zone_print_fmt(FILE *out,
00459 const ldns_output_format *fmt, ldns_dnssec_zone *zone);
00460
00468 ldns_status ldns_dnssec_zone_add_empty_nonterminals(ldns_dnssec_zone *zone);
00469
00477 bool ldns_dnssec_zone_is_nsec3_optout(ldns_dnssec_zone* zone);
00478
00479 #ifdef __cplusplus
00480 }
00481 #endif
00482
00483 #endif