OpenDNSSEC-signer 1.2.1

/build/buildd-opendnssec_1.2.1.dfsg-1-ia64-j6OroR/opendnssec-1.2.1.dfsg/signer/src/signer/zonedata.h

Go to the documentation of this file.
00001 /*
00002  * $Id: zonedata.h 4521 2011-03-01 14:56:15Z matthijs $
00003  *
00004  * Copyright (c) 2009 NLNet Labs. All rights reserved.
00005  *
00006  * Redistribution and use in source and binary forms, with or without
00007  * modification, are permitted provided that the following conditions
00008  * are met:
00009  * 1. Redistributions of source code must retain the above copyright
00010  *    notice, this list of conditions and the following disclaimer.
00011  * 2. Redistributions in binary form must reproduce the above copyright
00012  *    notice, this list of conditions and the following disclaimer in the
00013  *    documentation and/or other materials provided with the distribution.
00014  *
00015  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
00016  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00017  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00018  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
00019  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00020  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
00021  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00022  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
00023  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
00024  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
00025  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00026  *
00027  */
00028 
00034 #ifndef SIGNER_ZONEDATA_H
00035 #define SIGNER_ZONEDATA_H
00036 
00037 #include "config.h"
00038 #include "signer/denial.h"
00039 #include "signer/domain.h"
00040 #include "signer/signconf.h"
00041 #include "signer/stats.h"
00042 
00043 #include <ldns/ldns.h>
00044 
00049 typedef struct zonedata_struct zonedata_type;
00050 struct zonedata_struct {
00051     ldns_rbtree_t* domains;
00052     ldns_rbtree_t* denial_chain;
00053     int initialized;
00054     uint32_t default_ttl; /* fallback ttl */
00055     uint32_t inbound_serial; /* last seen inbound soa serial */
00056     uint32_t internal_serial; /* latest internal soa serial */
00057     uint32_t outbound_serial; /* last written outbound soa serial */
00058 };
00059 
00065 zonedata_type* zonedata_create(void);
00066 
00074 int zonedata_recover_from_backup(zonedata_type* zd, FILE* fd);
00075 
00083 domain_type* zonedata_lookup_domain(zonedata_type* zd, ldns_rdf* name);
00084 
00092 domain_type* zonedata_add_domain(zonedata_type* zd, domain_type* domain);
00093 
00101 domain_type* zonedata_del_domain(zonedata_type* zd, domain_type* domain);
00102 
00110 denial_type* zonedata_lookup_denial(zonedata_type* zd, ldns_rdf* name);
00111 
00121 int zonedata_add_denial(zonedata_type* zd, domain_type* domain,
00122     ldns_rdf* apex, nsec3params_type* nsec3params);
00123 
00131 denial_type* zonedata_del_denial(zonedata_type* zd, denial_type* denial);
00132 
00140 int zonedata_entize(zonedata_type* zd, ldns_rdf* apex);
00141 
00150 int zonedata_nsecify(zonedata_type* zd, ldns_rr_class klass, stats_type* stats);
00151 
00161 int zonedata_nsecify3(zonedata_type* zd, ldns_rr_class klass,
00162     nsec3params_type* nsec3params, stats_type* stats);
00163 
00173 int zonedata_sign(zonedata_type* zd, ldns_rdf* owner, signconf_type* sc,
00174     stats_type* stats);
00175 
00185 int zonedata_examine(zonedata_type* zd, ldns_rdf* apex, int is_file);
00186 
00194 int zonedata_update(zonedata_type* zd, signconf_type* sc);
00195 
00201 void zonedata_cancel_update(zonedata_type* zd);
00202 
00211 int zonedata_add_rr(zonedata_type* zd, ldns_rr* rr, int at_apex);
00212 
00220 int zonedata_recover_rr_from_backup(zonedata_type* zd, ldns_rr* rr);
00221 
00231 int zonedata_recover_rrsig_from_backup(zonedata_type* zd, ldns_rr* rrsig,
00232     const char* locator, uint32_t flags);
00233 
00241 int zonedata_del_rr(zonedata_type* zd, ldns_rr* rr);
00242 
00249 int zonedata_del_rrs(zonedata_type* zd);
00250 
00256 void zonedata_cleanup_domains(ldns_rbtree_t* domain_tree);
00257 
00263 void zonedata_cleanup_denials(ldns_rbtree_t* denial_tree);
00264 
00270 void zonedata_cleanup(zonedata_type* zonedata);
00271 
00278 void zonedata_print(FILE* fd, zonedata_type* zd);
00279 
00286 void zonedata_print_nsec(FILE* fd, zonedata_type* zd);
00287 
00294 void zonedata_print_rrsig(FILE* fd, zonedata_type* zd);
00295 
00296 #endif /* SIGNER_ZONEDATA_H */