OpenDNSSEC-signer  1.4.9
Data Structures | Typedefs | Enumerations | Functions
zone.h File Reference
#include "config.h"
#include "adapter/adapter.h"
#include "scheduler/schedule.h"
#include "shared/allocator.h"
#include "shared/locks.h"
#include "shared/status.h"
#include "signer/ixfr.h"
#include "signer/namedb.h"
#include "signer/signconf.h"
#include "signer/stats.h"
#include "wire/buffer.h"
#include "wire/notify.h"
#include "wire/xfrd.h"
#include <ldns/ldns.h>
Include dependency graph for zone.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  zone_struct
 

Typedefs

typedef enum zone_zl_status_enum zone_zl_status
 
typedef struct zone_struct zone_type
 

Enumerations

enum  zone_zl_status_enum { ZONE_ZL_OK = 0, ZONE_ZL_ADDED, ZONE_ZL_UPDATED, ZONE_ZL_REMOVED }
 

Functions

zone_typezone_create (char *name, ldns_rr_class klass)
 
ods_status zone_load_signconf (zone_type *zone, signconf_type **new_signconf)
 
ods_status zone_reschedule_task (zone_type *zone, schedule_type *taskq, task_id what)
 
ods_status zone_publish_dnskeys (zone_type *zone)
 
void zone_rollback_dnskeys (zone_type *zone)
 
ods_status zone_publish_nsec3param (zone_type *zone)
 
void zone_rollback_nsec3param (zone_type *zone)
 
ods_status zone_prepare_keys (zone_type *zone)
 
ods_status zone_update_serial (zone_type *zone)
 
rrset_typezone_lookup_rrset (zone_type *zone, ldns_rdf *owner, ldns_rr_type type)
 
ods_status zone_add_rr (zone_type *zone, ldns_rr *rr, int do_stats)
 
ods_status zone_del_rr (zone_type *zone, ldns_rr *rr, int do_stats)
 
void zone_merge (zone_type *z1, zone_type *z2)
 
void zone_cleanup (zone_type *zone)
 
ods_status zone_backup2 (zone_type *zone)
 
ods_status zone_recover2 (zone_type *zone)
 

Typedef Documentation

typedef struct zone_struct zone_type

Zone.

Definition at line 65 of file zone.h.

Definition at line 59 of file zone.h.

Enumeration Type Documentation

Enumerator
ZONE_ZL_OK 
ZONE_ZL_ADDED 
ZONE_ZL_UPDATED 
ZONE_ZL_REMOVED 

Definition at line 53 of file zone.h.

Function Documentation

ods_status zone_add_rr ( zone_type zone,
ldns_rr *  rr,
int  do_stats 
)

Add RR.

Parameters
[in]zonezone
[in]rrrr
[in]do_statstrue if we need to maintain statistics
Returns
ods_status status ODS_STATUS_OK: rr to be added to zone ODS_STATUS_UNCHANGED: rr not added to zone, rr already exists other: rr not added to zone, error occurred

Add RR.

Definition at line 564 of file zone.c.

References zone_struct::apex, zone_struct::db, domain_struct::dname, domain_add_rrset(), domain_lookup_rrset(), rr_struct::is_added, domain_struct::is_apex, rr_struct::is_removed, zone_struct::name, namedb_add_domain(), namedb_domain_entize(), namedb_lookup_domain(), rrset_struct::needs_signing, ods_log_assert, ods_log_error(), ODS_STATUS_ERR, ODS_STATUS_OK, ODS_STATUS_UNCHANGED, rr_struct::rr, rrset_add_rr(), rrset_create(), rrset_lookup_rr(), zone_struct::signconf, stats_struct::sort_count, zone_struct::stats, and domain_struct::zone.

Referenced by adapi_trans_diff(), zone_publish_dnskeys(), and zone_publish_nsec3param().

ods_status zone_backup2 ( zone_type zone)
void zone_cleanup ( zone_type zone)
zone_type* zone_create ( char *  name,
ldns_rr_class  klass 
)
ods_status zone_del_rr ( zone_type zone,
ldns_rr *  rr,
int  do_stats 
)

Delete RR.

Parameters
[in]zonezone
[in]rrrr
[in]do_statstrue if we need to maintain statistics
Returns
ods_status status ODS_STATUS_OK: rr to be removed from zone ODS_STATUS_UNCHANGED: rr not removed from zone, rr does not exist other: rr not removed from zone, error occurred

Delete RR.

Definition at line 634 of file zone.c.

References zone_struct::db, domain_lookup_rrset(), rr_struct::is_added, rr_struct::is_removed, zone_struct::name, namedb_lookup_domain(), ods_log_assert, ods_log_error(), ods_log_warning(), ODS_STATUS_OK, ODS_STATUS_UNCHANGED, rrset_lookup_rr(), zone_struct::signconf, stats_struct::sort_count, and zone_struct::stats.

Referenced by adapi_trans_diff().

ods_status zone_load_signconf ( zone_type zone,
signconf_type **  new_signconf 
)

Load signer configuration for zone.

Parameters
[in]zonezone
[out]new_signconfnew signer configuration
Returns
ods_status status ODS_STATUS_OK: new signer configuration loaded ODS_STATUS_UNCHANGED: signer configuration has not changed other: signer configuration not loaded, error occurred

Load signer configuration for zone.

Definition at line 136 of file zone.c.

References signconf_struct::last_modified, zone_struct::name, ods_log_alert(), ods_log_debug(), ods_log_error(), ods_log_verbose(), ods_log_warning(), ods_status2str(), ODS_STATUS_ASSERT_ERR, ODS_STATUS_INSECURE, ODS_STATUS_OK, ODS_STATUS_UNCHANGED, zone_struct::signconf, zone_struct::signconf_filename, signconf_update(), and time_datestamp().

Referenced by tools_signconf().

rrset_type* zone_lookup_rrset ( zone_type zone,
ldns_rdf *  owner,
ldns_rr_type  type 
)

Lookup RRset.

Parameters
[in]zonezone
[in]ownerRRset owner
[in]typeRRtype
Returns
rrset_type* RRset, if found

Lookup RRset.

Definition at line 545 of file zone.c.

References zone_struct::db, domain_lookup_rrset(), and namedb_lookup_domain().

Referenced by adapi_printaxfr(), adapi_printixfr(), backup_read_namedb(), dnsout_update(), query_reset(), zone_publish_dnskeys(), zone_publish_nsec3param(), zone_rollback_dnskeys(), zone_rollback_nsec3param(), and zone_update_serial().

void zone_merge ( zone_type z1,
zone_type z2 
)

Merge zones. Values that are merged:

  • policy name
  • signconf filename
  • input and output adapter
Parameters
[in]z1zone
[in]z2zone with new values

Merge zones.

Definition at line 678 of file zone.c.

References adapter_compare(), zone_struct::adinbound, zone_struct::adoutbound, zone_struct::name, ods_log_error(), ods_strcmp(), zone_struct::policy_name, zone_struct::signconf_filename, zone_struct::zl_status, and ZONE_ZL_UPDATED.

Referenced by zonelist_del_zone().

ods_status zone_prepare_keys ( zone_type zone)
ods_status zone_publish_dnskeys ( zone_type zone)
ods_status zone_publish_nsec3param ( zone_type zone)

Publish the NSEC3 parameters as indicated by the signer configuration.

Parameters
[in]zonezone
Returns
ods_status status

Publish the NSEC3 parameters as indicated by the signer configuration.

Always set bit 7 of the flags to zero, according to rfc5155 section 11

Definition at line 335 of file zone.c.

References nsec3params_struct::algorithm, zone_struct::apex, zone_struct::db, duration2time(), nsec3params_struct::iterations, zone_struct::klass, zone_struct::name, signconf_struct::nsec3param_ttl, signconf_struct::nsec3params, signconf_struct::nsec_type, ods_log_assert, ods_log_error(), ods_status2str(), ODS_STATUS_ASSERT_ERR, ODS_STATUS_MALLOC_ERR, ODS_STATUS_OK, ODS_STATUS_UNCHANGED, rr_struct::rr, nsec3params_struct::rr, rrset_lookup_rr(), nsec3params_struct::salt_data, nsec3params_struct::salt_len, zone_struct::signconf, zone_add_rr(), and zone_lookup_rrset().

Referenced by tools_input(), and zone_recover2().

ods_status zone_recover2 ( zone_type zone)

Recover zone from backup.

Parameters
[in]zonecorresponding zone

Recover zone from backup.

Definition at line 782 of file zone.c.

References signconf_struct::allocator, allocator_strdup(), backup_read_check_str(), backup_read_duration(), backup_read_int(), backup_read_ixfr(), backup_read_namedb(), backup_read_rr_type(), backup_read_str(), backup_read_time_t(), backup_read_uint32_t(), zone_struct::db, zone_struct::default_ttl, signconf_struct::dnskey_ttl, duration2time(), namedb_struct::have_serial, namedb_struct::inbserial, namedb_struct::intserial, namedb_struct::is_initialized, zone_struct::ixfr, ixfr_cleanup(), ixfr_create(), ixfr_struct::ixfr_lock, ixfr_purge(), key_recover2(), keylist_create(), signconf_struct::keys, zone_struct::klass, signconf_struct::last_modified, lock_basic_lock, lock_basic_unlock, zone_struct::name, namedb_cleanup(), namedb_create(), signconf_struct::nsec3_algo, signconf_struct::nsec3_iterations, signconf_struct::nsec3_optout, signconf_struct::nsec3_salt, signconf_struct::nsec3params, nsec3params_create(), signconf_struct::nsec_type, ods_build_path(), ods_fclose(), ods_fopen(), ods_log_assert, ods_log_error(), ods_log_warning(), ods_status2str(), ODS_STATUS_ERR, ODS_STATUS_MALLOC_ERR, ODS_STATUS_OK, ODS_STATUS_UNCHANGED, ods_strcmp(), namedb_struct::outserial, signconf_struct::sig_inception_offset, signconf_struct::sig_jitter, signconf_struct::sig_refresh_interval, signconf_struct::sig_resign_interval, signconf_struct::sig_validity_default, signconf_struct::sig_validity_denial, zone_struct::signconf, signconf_cleanup(), signconf_create(), signconf_struct::soa_min, signconf_struct::soa_serial, signconf_struct::soa_ttl, zone_struct::stats, stats_clear(), stats_struct::stats_lock, zone_struct::task, task_create(), TASK_SIGN, zone_publish_dnskeys(), and zone_publish_nsec3param().

Referenced by engine_update_zones().

ods_status zone_reschedule_task ( zone_type zone,
schedule_type taskq,
task_id  what 
)

Reschedule task for zone.

Parameters
[in]zonezone
[in]taskqtask queue
[in]whatnew task identifier
Returns
ods_status status

Reschedule task for zone.

Only reschedule if what to do is lower than what was scheduled.

Definition at line 187 of file zone.c.

References task_struct::halted, task_struct::halted_when, task_struct::interrupt, lock_basic_lock, lock_basic_unlock, zone_struct::name, ods_log_assert, ods_log_debug(), ods_log_verbose(), ODS_STATUS_OK, schedule_struct::schedule_lock, schedule_task(), zone_struct::task, time_now(), unschedule_task(), task_struct::what, and task_struct::when.

Referenced by engine_update_zones(), and xfrd_acl_sockaddr_to().

void zone_rollback_dnskeys ( zone_type zone)

Unlink DNSKEY RRs.

Parameters
[in]zonezone

Unlink DNSKEY RRs.

Definition at line 305 of file zone.c.

References zone_struct::apex, keylist_struct::count, key_struct::dnskey, rr_struct::exists, signconf_struct::keys, keylist_struct::keys, rr_struct::rr, rrset_lookup_rr(), zone_struct::signconf, and zone_lookup_rrset().

Referenced by tools_input().

void zone_rollback_nsec3param ( zone_type zone)

Unlink NSEC3PARAM RR.

Parameters
[in]zonezone

Unlink NSEC3PARAM RR.

Definition at line 403 of file zone.c.

References zone_struct::apex, rr_struct::exists, signconf_struct::nsec3params, rr_struct::rr, nsec3params_struct::rr, rrset_lookup_rr(), zone_struct::signconf, and zone_lookup_rrset().

Referenced by tools_input().

ods_status zone_update_serial ( zone_type zone)