OpenDNSSEC-signer 1.2.1
Data Structures | Typedefs | Functions

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

#include "config.h"
#include "signer/denial.h"
#include "signer/domain.h"
#include "signer/signconf.h"
#include "signer/stats.h"
#include <ldns/ldns.h>
Include dependency graph for zonedata.h:

Go to the source code of this file.

Data Structures

struct  zonedata_struct

Typedefs

typedef struct zonedata_struct zonedata_type

Functions

zonedata_typezonedata_create (void)
int zonedata_recover_from_backup (zonedata_type *zd, FILE *fd)
domain_typezonedata_lookup_domain (zonedata_type *zd, ldns_rdf *name)
domain_typezonedata_add_domain (zonedata_type *zd, domain_type *domain)
domain_typezonedata_del_domain (zonedata_type *zd, domain_type *domain)
denial_typezonedata_lookup_denial (zonedata_type *zd, ldns_rdf *name)
int zonedata_add_denial (zonedata_type *zd, domain_type *domain, ldns_rdf *apex, nsec3params_type *nsec3params)
denial_typezonedata_del_denial (zonedata_type *zd, denial_type *denial)
int zonedata_entize (zonedata_type *zd, ldns_rdf *apex)
int zonedata_nsecify (zonedata_type *zd, ldns_rr_class klass, stats_type *stats)
int zonedata_nsecify3 (zonedata_type *zd, ldns_rr_class klass, nsec3params_type *nsec3params, stats_type *stats)
int zonedata_sign (zonedata_type *zd, ldns_rdf *owner, signconf_type *sc, stats_type *stats)
int zonedata_examine (zonedata_type *zd, ldns_rdf *apex, int is_file)
int zonedata_update (zonedata_type *zd, signconf_type *sc)
void zonedata_cancel_update (zonedata_type *zd)
int zonedata_add_rr (zonedata_type *zd, ldns_rr *rr, int at_apex)
int zonedata_recover_rr_from_backup (zonedata_type *zd, ldns_rr *rr)
int zonedata_recover_rrsig_from_backup (zonedata_type *zd, ldns_rr *rrsig, const char *locator, uint32_t flags)
int zonedata_del_rr (zonedata_type *zd, ldns_rr *rr)
int zonedata_del_rrs (zonedata_type *zd)
void zonedata_cleanup_domains (ldns_rbtree_t *domain_tree)
void zonedata_cleanup_denials (ldns_rbtree_t *denial_tree)
void zonedata_cleanup (zonedata_type *zonedata)
void zonedata_print (FILE *fd, zonedata_type *zd)
void zonedata_print_nsec (FILE *fd, zonedata_type *zd)
void zonedata_print_rrsig (FILE *fd, zonedata_type *zd)

Typedef Documentation

Zone data. Zone data.

Definition at line 49 of file zonedata.h.


Function Documentation

int zonedata_add_denial ( zonedata_type zd,
domain_type domain,
ldns_rdf *  apex,
nsec3params_type nsec3params 
)

Add denial of existence data point to zone data.

Parameters:
[in]zdzone data
[in]domaincorresponding domain
[in]apexapex
[in]nsec3paramsNSEC3 parameters
Returns:
int 0 if ok, 1 on error

Add denial of existence data point to the zone data.

Definition at line 500 of file zonedata.c.

References denial_struct::bitmap_changed, domain_struct::denial, zonedata_struct::denial_chain, denial_cleanup(), denial_create(), denial_struct::domain, domain_struct::name, denial_struct::nxt_changed, se_log_assert, se_log_error(), and zonedata_lookup_denial().

Referenced by zonedata_nsecify(), and zonedata_nsecify3().

domain_type* zonedata_add_domain ( zonedata_type zd,
domain_type domain 
)

Add domain to zone data.

Parameters:
[in]zdzone data
[in]domaindomain to add
Returns:
domain_type* added domain

Add a domain to the zone data.

Definition at line 291 of file zonedata.c.

References zonedata_struct::domains, domain_struct::name, domain_struct::rrsets, se_free(), se_log_assert, se_log_debug(), and se_log_error().

Referenced by zonedata_add_rr().

int zonedata_add_rr ( zonedata_type zd,
ldns_rr *  rr,
int  at_apex 
)

Add RR to zone data.

Parameters:
[in]zdzone data
[in]rrRR to add
[in]at_apexif is at apex of the zone
Returns:
int 0 on success, 1 on false

Add RR to the zone data.

Definition at line 1460 of file zonedata.c.

References domain_add_rr(), domain_create(), domain_struct::domain_status, DOMAIN_STATUS_APEX, zonedata_struct::domains, se_log_assert, se_log_error(), zonedata_add_domain(), and zonedata_lookup_domain().

Referenced by zone_add_rr().

void zonedata_cancel_update ( zonedata_type zd)

Cancel update.

Parameters:
[in]zdzone data

Cancel update.

Definition at line 1435 of file zonedata.c.

References domain_cancel_update(), zonedata_struct::domains, and se_log_assert.

Referenced by tools_add_dnskeys(), tools_read_input(), zone_update_zonedata(), and zonedata_update().

void zonedata_cleanup ( zonedata_type zonedata)

Clean up zone data.

Parameters:
[in]zonedatazone data to cleanup

Clean up zone data.

Definition at line 1656 of file zonedata.c.

References zonedata_struct::denial_chain, zonedata_struct::domains, se_free(), se_log_warning(), zonedata_cleanup_denials(), and zonedata_cleanup_domains().

Referenced by zone_cleanup(), and zone_recover_from_backup().

void zonedata_cleanup_denials ( ldns_rbtree_t *  denial_tree)

Clean up denial of existence in zone data tree.

Parameters:
[in]denial_treetree of denials to cleanup

Clean up denial of existence in zone data.

Definition at line 1628 of file zonedata.c.

References denial_cleanup(), and se_rbnode_free().

Referenced by zone_update_signconf(), and zonedata_cleanup().

void zonedata_cleanup_domains ( ldns_rbtree_t *  domain_tree)

Clean up domains in zone data tree.

Parameters:
[in]domain_treetree of domains to cleanup

Clean up domains in zone data.

Definition at line 1600 of file zonedata.c.

References domain_cleanup(), and se_rbnode_free().

Referenced by zonedata_cleanup().

zonedata_type* zonedata_create ( void  )
denial_type* zonedata_del_denial ( zonedata_type zd,
denial_type denial 
)

Delete denial of existence data point from zone data.

Parameters:
[in]zdzone data
[in]denialdenial of existence data point
Returns:
denial_type* denial of existence data point if failed

Delete denial of existence data point from the zone data.

Definition at line 658 of file zonedata.c.

References zonedata_struct::denial_chain, denial_struct::owner, se_log_assert, and se_log_error().

Referenced by zonedata_del_domain(), zonedata_nsecify(), and zonedata_nsecify3().

domain_type* zonedata_del_domain ( zonedata_type zd,
domain_type domain 
)

Delete domain from zone data.

Parameters:
[in]zdzone data
[in]domaindomain to delete
Returns:
domain_type* domain if failed

Delete a domain from the zone data.

Definition at line 366 of file zonedata.c.

References domain_struct::denial, zonedata_struct::domains, domain_struct::name, se_log_assert, se_log_deeebug(), se_log_error(), and zonedata_del_denial().

Referenced by zonedata_update().

int zonedata_del_rr ( zonedata_type zd,
ldns_rr *  rr 
)

Delete RR from zone data.

Parameters:
[in]zdzone data
[in]rrRR to delete
Returns:
int 0 on success, 1 on false

Delete RR from the zone data.

Definition at line 1550 of file zonedata.c.

References domain_del_rr(), zonedata_struct::domains, se_log_assert, se_log_warning(), and zonedata_lookup_domain().

Referenced by zone_del_rr().

int zonedata_del_rrs ( zonedata_type zd)

Delete all current RRs from zone data.

Parameters:
[in]zdzone data
Returns:
int 0 on success, 1 on false

Delete all current RRs from the zone data.

Definition at line 1573 of file zonedata.c.

References domain_del_rrs(), zonedata_struct::domains, and se_log_assert.

Referenced by adfile_read().

int zonedata_entize ( zonedata_type zd,
ldns_rdf *  apex 
)

Add empty non-terminals to zone data.

Parameters:
[in]zdzone data
[in]apexapex domain name
Returns:
int 0 on success, 1 on false

Add empty non-terminals to zone data.

Definition at line 809 of file zonedata.c.

References domain_struct::domain_status, DOMAIN_STATUS_ENT_GLUE, DOMAIN_STATUS_NONE, DOMAIN_STATUS_OCCLUDED, domain_update_status(), zonedata_struct::domains, se_log_assert, and se_log_error().

Referenced by zone_nsecify().

int zonedata_examine ( zonedata_type zd,
ldns_rdf *  apex,
int  is_file 
)

Add empty non-terminals to zone data.

Parameters:
[in]zdzone data
[in]apexapex domain name
[in]is_fileif the inbound adapter is a zone file (if so, additional checking is required)
Returns:
int 0 if no error examined, 1 otherwise

Examine zone data.

Definition at line 1311 of file zonedata.c.

References domain_examine_rrset_is_alone(), domain_examine_rrset_is_singleton(), zonedata_struct::domains, and se_log_assert.

Referenced by zone_update_zonedata().

denial_type* zonedata_lookup_denial ( zonedata_type zd,
ldns_rdf *  dname 
)

Look up denial of existence data point.

Parameters:
[in]zdzone data
[in]namedomain name to look for
Returns:
domain_type* domain, if found

Lookup denial of existence data point.

Definition at line 443 of file zonedata.c.

References zonedata_struct::denial_chain.

Referenced by zonedata_add_denial(), and zonedata_recover_rrsig_from_backup().

domain_type* zonedata_lookup_domain ( zonedata_type zd,
ldns_rdf *  name 
)

Look up domain in zone data.

Parameters:
[in]zdzone data
[in]namedomain name to look for
Returns:
domain_type* domain, if found

Lookup domain.

Definition at line 277 of file zonedata.c.

References zonedata_struct::domains.

Referenced by zonedata_add_rr(), zonedata_del_rr(), zonedata_recover_from_backup(), zonedata_recover_rr_from_backup(), and zonedata_recover_rrsig_from_backup().

int zonedata_nsecify ( zonedata_type zd,
ldns_rr_class  klass,
stats_type stats 
)

Add NSEC records to zone data.

Parameters:
[in]zdzone data
[in]klassclass of zone
[out]statsupdate statistics
Returns:
int 0 on success, 1 on false

Add NSEC records to zonedata.

Now we have the complete denial of existence chain

Definition at line 843 of file zonedata.c.

References zonedata_struct::default_ttl, domain_struct::denial, zonedata_struct::denial_chain, denial_nsecify(), domain_count_rrset(), domain_struct::domain_status, DOMAIN_STATUS_APEX, DOMAIN_STATUS_NONE, DOMAIN_STATUS_OCCLUDED, zonedata_struct::domains, domain_struct::name, stats_struct::nsec_count, se_log_alert(), se_log_assert, se_log_error(), se_log_warning(), zonedata_add_denial(), and zonedata_del_denial().

Referenced by zone_nsecify().

int zonedata_nsecify3 ( zonedata_type zd,
ldns_rr_class  klass,
nsec3params_type nsec3params,
stats_type stats 
)

Add NSEC3 records to zone data.

Parameters:
[in]zdzone data
[in]klassclass of zone
[in]nsec3paramsNSEC3 paramaters
[out]statsupdate statistics
Returns:
int 0 on success, 1 on false

Add NSEC3 records to zonedata.

Additionally, for collision detection purposes, optionally create an additional NSEC3 RR corresponding to the original owner name with the asterisk label prepended (i.e., as if a wildcard existed as a child of this owner name) and keep track of this original owner name. Mark this NSEC3 RR as temporary.

pseudo: wildcard_name = *.domain->name; hashed_ownername = ldns_nsec3_hash_name(domain->name, nsec3params->algorithm, nsec3params->iterations, nsec3params->salt_len, nsec3params->salt); domain->nsec3_wildcard = denial_create(hashed_ownername);

In each NSEC3 RR, insert the next hashed owner name by using the value of the next NSEC3 RR in hash order. The next hashed owner name of the last NSEC3 RR in the zone contains the value of the hashed owner name of the first NSEC3 RR in the hash order.

Definition at line 928 of file zonedata.c.

References zonedata_struct::default_ttl, domain_struct::denial, zonedata_struct::denial_chain, denial_nsecify3(), domain_struct::domain_status, DOMAIN_STATUS_APEX, DOMAIN_STATUS_ENT_GLUE, DOMAIN_STATUS_ENT_NS, DOMAIN_STATUS_NONE, DOMAIN_STATUS_NS, DOMAIN_STATUS_OCCLUDED, zonedata_struct::domains, nsec3params_struct::flags, domain_struct::name, stats_struct::nsec_count, se_free(), se_log_alert(), se_log_assert, se_log_debug(), se_log_error(), zonedata_add_denial(), and zonedata_del_denial().

Referenced by zone_nsecify().

void zonedata_print ( FILE *  fd,
zonedata_type zd 
)

Print zone data.

Parameters:
[in]outfile descriptor
[in]zdzone data to print

Print zone data.

Definition at line 1681 of file zonedata.c.

References domain_print(), zonedata_struct::domains, and se_log_assert.

Referenced by zone_print().

void zonedata_print_nsec ( FILE *  fd,
zonedata_type zd 
)

Print NSEC(3)s in zone data.

Parameters:
[in]outfile descriptor
[in]zdzone data to print

Print NSEC(3)s in zone data.

Definition at line 1710 of file zonedata.c.

References domain_print_nsec(), zonedata_struct::domains, and se_log_assert.

Referenced by zone_nsecify().

void zonedata_print_rrsig ( FILE *  fd,
zonedata_type zd 
)

Print RRSIGs in zone data.

Parameters:
[in]outfile descriptor
[in]zdzone data to print

Print RRSIGs zone data.

Definition at line 1739 of file zonedata.c.

References domain_print_rrsig(), zonedata_struct::domains, and se_log_assert.

Referenced by zone_sign().

int zonedata_recover_from_backup ( zonedata_type zd,
FILE *  fd 
)
int zonedata_recover_rr_from_backup ( zonedata_type zd,
ldns_rr *  rr 
)

Recover RR from backup.

Parameters:
[in]zdzone data
[in]rrRR to add
Returns:
int 0 on success, 1 on false

Recover RR from backup.

Definition at line 1491 of file zonedata.c.

References domain_recover_rr_from_backup(), zonedata_struct::domains, se_log_assert, se_log_error(), and zonedata_lookup_domain().

Referenced by zone_add_rr().

int zonedata_recover_rrsig_from_backup ( zonedata_type zd,
ldns_rr *  rrsig,
const char *  locator,
uint32_t  flags 
)

Recover RRSIG from backup.

Parameters:
[in]zdzone data
[in]rrsigRRSIG to add
[in]locatorkey locaotor
[in]flagskey flags
Returns:
int 0 on success, 1 on false

Recover RRSIG from backup.

Definition at line 1514 of file zonedata.c.

References denial_recover_rrsig_from_backup(), domain_recover_rrsig_from_backup(), zonedata_struct::domains, se_log_assert, se_log_error(), zonedata_lookup_denial(), and zonedata_lookup_domain().

int zonedata_sign ( zonedata_type zd,
ldns_rdf *  owner,
signconf_type sc,
stats_type stats 
)

Add RRSIG records to zone data.

Parameters:
[in]zdzone data
[in]ownerzone owner
[in]scsigner configuration
[out]statsupdate statistics
Returns:
int 0 on success, 1 on false

Add RRSIG records to zonedata.

Definition at line 1170 of file zonedata.c.

References DNS_SERIAL_GT, domain_sign(), zonedata_struct::domains, duration2time(), zonedata_struct::internal_serial, zonedata_struct::outbound_serial, se_log_assert, se_log_debug(), se_log_error(), signconf_struct::sig_inception_offset, signconf_struct::sig_jitter, signconf_struct::sig_validity_denial, and time_now().

Referenced by zone_sign().

int zonedata_update ( zonedata_type zd,
signconf_type sc 
)

Update zone data with pending changes.

Parameters:
[in]zdzone data
[in]scsigner configuration
Returns:
int 0 on success, 1 on false

Update zone data with pending changes.

Definition at line 1358 of file zonedata.c.

References domain_count_rrset(), domain_struct::domain_status, DOMAIN_STATUS_ENT_AUTH, DOMAIN_STATUS_ENT_GLUE, DOMAIN_STATUS_ENT_NS, domain_update(), zonedata_struct::domains, zonedata_struct::internal_serial, domain_struct::parent, se_log_assert, se_log_crit(), se_log_deeebug(), se_log_error(), domain_struct::subdomain_count, zonedata_cancel_update(), and zonedata_del_domain().

Referenced by zone_update_zonedata().