dnssec_zone.h

Go to the documentation of this file.
00001 /*
00002  * special zone file structures and functions for better dnssec handling
00003  *
00004  * A zone contains a SOA dnssec_zone_rrset, and an AVL tree of 'normal'
00005  * dnssec_zone_rrsets, indexed by name and type
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 
00017 typedef struct ldns_struct_dnssec_rrs ldns_dnssec_rrs;
00018 struct ldns_struct_dnssec_rrs
00019 {
00020         ldns_rr *rr;
00021         ldns_dnssec_rrs *next;
00022 };
00023 
00027 typedef struct ldns_struct_dnssec_rrsets ldns_dnssec_rrsets;
00028 struct ldns_struct_dnssec_rrsets
00029 {
00030         ldns_dnssec_rrs *rrs;
00031         ldns_rr_type type;
00032         ldns_dnssec_rrs *signatures;
00033         ldns_dnssec_rrsets *next;
00034 };
00035 
00040 typedef struct ldns_struct_dnssec_name ldns_dnssec_name;
00041 struct ldns_struct_dnssec_name
00042 {
00047         ldns_rdf *name;
00055         bool name_alloced;
00059         ldns_dnssec_rrsets *rrsets;
00063         ldns_rr *nsec;
00067         ldns_dnssec_rrs *nsec_signatures;
00068 };
00069 
00073 struct ldns_struct_dnssec_zone {
00075         ldns_dnssec_name *soa;
00077         ldns_rbtree_t *names;
00078 };
00079 typedef struct ldns_struct_dnssec_zone ldns_dnssec_zone;
00080 
00085 ldns_dnssec_rrs *
00086 ldns_dnssec_rrs_new();
00087 
00093 void
00094 ldns_dnssec_rrs_free(ldns_dnssec_rrs *rrs);
00095 
00103 ldns_status
00104 ldns_dnssec_rrs_add_rr(ldns_dnssec_rrs *rrs, ldns_rr *rr);
00105 
00112 void
00113 ldns_dnssec_rrs_print(FILE *out, ldns_dnssec_rrs *rrs);
00114 
00119 ldns_dnssec_rrsets *
00120 ldns_dnssec_rrsets_new();
00121 
00127 void
00128 ldns_dnssec_rrsets_free(ldns_dnssec_rrsets *rrsets);
00129 
00136 ldns_rr_type
00137 ldns_dnssec_rrsets_type(ldns_dnssec_rrsets *rrsets);
00138 
00146 ldns_status
00147 ldns_dnssec_rrsets_set_type(ldns_dnssec_rrsets *rrsets,
00148                                            ldns_rr_type type);
00149 
00158 ldns_status
00159 ldns_dnssec_rrsets_add_rr(ldns_dnssec_rrsets *rrsets, ldns_rr *rr);
00160 
00168 void
00169 ldns_dnssec_rrsets_print(FILE *out, ldns_dnssec_rrsets *rrsets, bool follow);
00170 
00175 ldns_dnssec_name *
00176 ldns_dnssec_name_new();
00177 
00183 ldns_dnssec_name *
00184 ldns_dnssec_name_new_frm_rr(ldns_rr *rr);
00185 
00192 void
00193 ldns_dnssec_name_free(ldns_dnssec_name *name);
00194 
00201 ldns_rdf *
00202 ldns_dnssec_name_name(ldns_dnssec_name *name);
00203 
00204 
00211 void
00212 ldns_dnssec_name_set_name(ldns_dnssec_name *name,
00213                                                   ldns_rdf *dname);
00214 
00221 void
00222 ldns_dnssec_name_set_nsec(ldns_dnssec_name *name, ldns_rr *nsec);
00223 
00234 int
00235 ldns_dnssec_name_cmp(const void *a, const void *b);
00236 
00245 ldns_status
00246 ldns_dnssec_name_add_rr(ldns_dnssec_name *name,
00247                                                 ldns_rr *rr);
00248 
00256 ldns_dnssec_rrsets *
00257 ldns_dnssec_name_find_rrset(ldns_dnssec_name *name,
00258                                            ldns_rr_type type);
00259 
00268 ldns_dnssec_rrsets *
00269 ldns_dnssec_zone_find_rrset(ldns_dnssec_zone *zone,
00270                                            ldns_rdf *dname,
00271                                            ldns_rr_type type);
00272 
00280 void
00281 ldns_dnssec_name_print(FILE *out, ldns_dnssec_name *name);
00282 
00287 ldns_dnssec_zone *
00288 ldns_dnssec_zone_new();
00289 
00296 void
00297 ldns_dnssec_zone_free(ldns_dnssec_zone *zone);
00298 
00309 ldns_status
00310 ldns_dnssec_zone_add_rr(ldns_dnssec_zone *zone, ldns_rr *rr);
00311 
00319 void
00320 ldns_dnssec_zone_names_print(FILE *out, ldns_rbtree_t *tree, bool print_soa);
00321 
00328 void
00329 ldns_dnssec_zone_print(FILE *out, ldns_dnssec_zone *zone);
00330 
00338 ldns_status
00339 ldns_dnssec_zone_add_empty_nonterminals(ldns_dnssec_zone *zone);
00340 
00341 #endif

Generated on Fri Aug 8 03:40:19 2008 for ldns by  doxygen 1.5.6