dnssec_zone.h
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/ldns.h>
00012 #include <ldns/rbtree.h>
00013 #include <ldns/host2str.h>
00014
00015 #ifdef __cplusplus
00016 extern "C" {
00017 #endif
00018
00022 typedef struct ldns_struct_dnssec_rrs ldns_dnssec_rrs;
00023 struct ldns_struct_dnssec_rrs
00024 {
00025 ldns_rr *rr;
00026 ldns_dnssec_rrs *next;
00027 };
00028
00032 typedef struct ldns_struct_dnssec_rrsets ldns_dnssec_rrsets;
00033 struct ldns_struct_dnssec_rrsets
00034 {
00035 ldns_dnssec_rrs *rrs;
00036 ldns_rr_type type;
00037 ldns_dnssec_rrs *signatures;
00038 ldns_dnssec_rrsets *next;
00039 };
00040
00045 typedef struct ldns_struct_dnssec_name ldns_dnssec_name;
00046 struct ldns_struct_dnssec_name
00047 {
00052 ldns_rdf *name;
00060 bool name_alloced;
00064 ldns_dnssec_rrsets *rrsets;
00068 ldns_rr *nsec;
00072 ldns_dnssec_rrs *nsec_signatures;
00082 bool is_glue;
00086 ldns_rdf *hashed_name;
00087 };
00088
00092 struct ldns_struct_dnssec_zone {
00094 ldns_dnssec_name *soa;
00096 ldns_rbtree_t *names;
00097 };
00098 typedef struct ldns_struct_dnssec_zone ldns_dnssec_zone;
00099
00104 ldns_dnssec_rrs *ldns_dnssec_rrs_new();
00105
00112 void ldns_dnssec_rrs_free(ldns_dnssec_rrs *rrs);
00113
00120 void ldns_dnssec_rrs_deep_free(ldns_dnssec_rrs *rrs);
00121
00129 ldns_status ldns_dnssec_rrs_add_rr(ldns_dnssec_rrs *rrs, ldns_rr *rr);
00130
00137 void ldns_dnssec_rrs_print(FILE *out, ldns_dnssec_rrs *rrs);
00138
00146 void ldns_dnssec_rrs_print_fmt(FILE *out,
00147 const ldns_output_format *fmt, ldns_dnssec_rrs *rrs);
00148
00153 ldns_dnssec_rrsets *ldns_dnssec_rrsets_new();
00154
00161 void ldns_dnssec_rrsets_free(ldns_dnssec_rrsets *rrsets);
00162
00169 void ldns_dnssec_rrsets_deep_free(ldns_dnssec_rrsets *rrsets);
00170
00177 ldns_rr_type ldns_dnssec_rrsets_type(ldns_dnssec_rrsets *rrsets);
00178
00186 ldns_status ldns_dnssec_rrsets_set_type(ldns_dnssec_rrsets *rrsets,
00187 ldns_rr_type type);
00188
00197 ldns_status ldns_dnssec_rrsets_add_rr(ldns_dnssec_rrsets *rrsets, ldns_rr *rr);
00198
00206 void ldns_dnssec_rrsets_print(FILE *out,
00207 ldns_dnssec_rrsets *rrsets,
00208 bool follow);
00209
00218 void ldns_dnssec_rrsets_print_fmt(FILE *out,
00219 const ldns_output_format *fmt,
00220 ldns_dnssec_rrsets *rrsets,
00221 bool follow);
00222
00223
00228 ldns_dnssec_name *ldns_dnssec_name_new();
00229
00235 ldns_dnssec_name *ldns_dnssec_name_new_frm_rr(ldns_rr *rr);
00236
00243 void ldns_dnssec_name_free(ldns_dnssec_name *name);
00244
00251 void ldns_dnssec_name_deep_free(ldns_dnssec_name *name);
00252
00259 ldns_rdf *ldns_dnssec_name_name(ldns_dnssec_name *name);
00260
00261
00268 void ldns_dnssec_name_set_name(ldns_dnssec_name *name,
00269 ldns_rdf *dname);
00281 bool ldns_dnssec_name_is_glue(ldns_dnssec_name *name);
00282
00289 void ldns_dnssec_name_set_nsec(ldns_dnssec_name *name, ldns_rr *nsec);
00290
00301 int ldns_dnssec_name_cmp(const void *a, const void *b);
00302
00311 ldns_status ldns_dnssec_name_add_rr(ldns_dnssec_name *name,
00312 ldns_rr *rr);
00313
00321 ldns_dnssec_rrsets *ldns_dnssec_name_find_rrset(ldns_dnssec_name *name,
00322 ldns_rr_type type);
00323
00332 ldns_dnssec_rrsets *ldns_dnssec_zone_find_rrset(ldns_dnssec_zone *zone,
00333 ldns_rdf *dname,
00334 ldns_rr_type type);
00335
00343 void ldns_dnssec_name_print(FILE *out, ldns_dnssec_name *name);
00344
00353 void ldns_dnssec_name_print_fmt(FILE *out,
00354 const ldns_output_format *fmt, ldns_dnssec_name *name);
00355
00360 ldns_dnssec_zone *ldns_dnssec_zone_new();
00361
00372 ldns_status ldns_dnssec_zone_new_frm_fp(ldns_dnssec_zone** z, FILE* fp,
00373 ldns_rdf* origin, uint32_t ttl, ldns_rr_class c);
00374
00386 ldns_status ldns_dnssec_zone_new_frm_fp_l(ldns_dnssec_zone** z, FILE* fp,
00387 ldns_rdf* origin, uint32_t ttl, ldns_rr_class c, int* line_nr);
00388
00394 void ldns_dnssec_zone_free(ldns_dnssec_zone *zone);
00395
00401 void ldns_dnssec_zone_deep_free(ldns_dnssec_zone *zone);
00402
00413 ldns_status ldns_dnssec_zone_add_rr(ldns_dnssec_zone *zone,
00414 ldns_rr *rr);
00415
00423 void ldns_dnssec_zone_names_print(FILE *out, ldns_rbtree_t *tree, bool print_soa);
00424
00433 void ldns_dnssec_zone_names_print_fmt(FILE *out, const ldns_output_format *fmt,
00434 ldns_rbtree_t *tree, bool print_soa);
00435
00442 void ldns_dnssec_zone_print(FILE *out, ldns_dnssec_zone *zone);
00443
00451 void ldns_dnssec_zone_print_fmt(FILE *out,
00452 const ldns_output_format *fmt, ldns_dnssec_zone *zone);
00453
00461 ldns_status ldns_dnssec_zone_add_empty_nonterminals(ldns_dnssec_zone *zone);
00462
00470 bool ldns_dnssec_zone_is_nsec3_optout(ldns_dnssec_zone* zone);
00471
00472 #ifdef __cplusplus
00473 }
00474 #endif
00475
00476 #endif