zone.c File Reference

#include <config.h>
#include <errno.h>
#include <isc/file.h>
#include <isc/hex.h>
#include <isc/mutex.h>
#include <isc/pool.h>
#include <isc/print.h>
#include <isc/random.h>
#include <isc/ratelimiter.h>
#include <isc/refcount.h>
#include <isc/rwlock.h>
#include <isc/serial.h>
#include <isc/stats.h>
#include <isc/stdtime.h>
#include <isc/strerror.h>
#include <isc/string.h>
#include <isc/taskpool.h>
#include <isc/thread.h>
#include <isc/timer.h>
#include <isc/util.h>
#include <dns/acache.h>
#include <dns/acl.h>
#include <dns/adb.h>
#include <dns/callbacks.h>
#include <dns/db.h>
#include <dns/dbiterator.h>
#include <dns/dlz.h>
#include <dns/dnssec.h>
#include <dns/events.h>
#include <dns/journal.h>
#include <dns/keydata.h>
#include <dns/keytable.h>
#include <dns/keyvalues.h>
#include <dns/log.h>
#include <dns/master.h>
#include <dns/masterdump.h>
#include <dns/message.h>
#include <dns/name.h>
#include <dns/nsec.h>
#include <dns/nsec3.h>
#include <dns/peer.h>
#include <dns/private.h>
#include <dns/rbt.h>
#include <dns/rcode.h>
#include <dns/rdata.h>
#include <dns/rdataclass.h>
#include <dns/rdatalist.h>
#include <dns/rdataset.h>
#include <dns/rdatasetiter.h>
#include <dns/rdatastruct.h>
#include <dns/rdatatype.h>
#include <dns/request.h>
#include <dns/resolver.h>
#include <dns/result.h>
#include <dns/rriterator.h>
#include <dns/soa.h>
#include <dns/ssu.h>
#include <dns/stats.h>
#include <dns/time.h>
#include <dns/tsig.h>
#include <dns/update.h>
#include <dns/xfrin.h>
#include <dns/zone.h>
#include <dns/zt.h>
#include <dst/dst.h>

Go to the source code of this file.

Data Structures

struct  zonediff_t
struct  dns_unreachable
struct  dns_zonemgr
struct  dns_notify
 Hold notify state. More...
struct  dns_stub
 dns_stub holds state while performing a 'stub' transfer. 'db' is the zone's 'db' or a new one if this is the initial transfer. More...
struct  dns_load
 Hold load state. More...
struct  dns_forward
 Hold forward state. More...
struct  dns_io
 Hold IO request state. More...
struct  dns_signing
 Hold state for when we are signing a zone with a new DNSKEY as result of an update. More...
struct  dns_nsec3chain
struct  dns_keyfetch
struct  dns_asyncload
 Hold state for an asynchronous load. More...
struct  dns_include
 Reference to an include file encountered during loading. More...
struct  nsec3param
struct  ssevent
struct  secure_event
struct  keydone

Defines

#define ZONE_MAGIC   ISC_MAGIC('Z', 'O', 'N', 'E')
#define DNS_ZONE_VALID(zone)   ISC_MAGIC_VALID(zone, ZONE_MAGIC)
#define NOTIFY_MAGIC   ISC_MAGIC('N', 't', 'f', 'y')
#define DNS_NOTIFY_VALID(notify)   ISC_MAGIC_VALID(notify, NOTIFY_MAGIC)
#define STUB_MAGIC   ISC_MAGIC('S', 't', 'u', 'b')
#define DNS_STUB_VALID(stub)   ISC_MAGIC_VALID(stub, STUB_MAGIC)
#define ZONEMGR_MAGIC   ISC_MAGIC('Z', 'm', 'g', 'r')
#define DNS_ZONEMGR_VALID(stub)   ISC_MAGIC_VALID(stub, ZONEMGR_MAGIC)
#define LOAD_MAGIC   ISC_MAGIC('L', 'o', 'a', 'd')
#define DNS_LOAD_VALID(load)   ISC_MAGIC_VALID(load, LOAD_MAGIC)
#define FORWARD_MAGIC   ISC_MAGIC('F', 'o', 'r', 'w')
#define DNS_FORWARD_VALID(load)   ISC_MAGIC_VALID(load, FORWARD_MAGIC)
#define IO_MAGIC   ISC_MAGIC('Z', 'm', 'I', 'O')
#define DNS_IO_VALID(load)   ISC_MAGIC_VALID(load, IO_MAGIC)
#define RANGE(a, min, max)   (((a) < (min)) ? (min) : ((a) < (max) ? (a) : (max)))
 Ensure 'a' is at least 'min' but not more than 'max'.
#define NSEC3REMOVE(x)   (((x) & DNS_NSEC3FLAG_REMOVE) != 0)
#define REVOKE(x)   ((dst_key_flags(x) & DNS_KEYFLAG_REVOKE) != 0)
 Key flags.
#define KSK(x)   ((dst_key_flags(x) & DNS_KEYFLAG_KSK) != 0)
#define ALG(x)   dst_key_alg(x)
#define DNS_DEFAULT_IDLEIN   3600
 1 hour
#define DNS_DEFAULT_IDLEOUT   3600
 1 hour
#define MAX_XFER_TIME   (2*3600)
 Documented default is 2 hours.
#define RESIGN_DELAY   3600
 1 hour
#define DNS_MAX_EXPIRE   14515200
 24 weeks
#define DNS_DUMP_DELAY   900
 15 minutes
#define DNS_ZONE_CHECKLOCK
#define LOCK_ZONE(z)
#define UNLOCK_ZONE(z)   do { (z)->locked = ISC_FALSE; UNLOCK(&(z)->lock); } while (0)
#define LOCKED_ZONE(z)   ((z)->locked)
#define TRYLOCK_ZONE(result, z)
#define ZONEDB_INITLOCK(l)   isc_mutex_init(l)
#define ZONEDB_DESTROYLOCK(l)   DESTROYLOCK(l)
#define ZONEDB_LOCK(l, t)   LOCK(l)
#define ZONEDB_UNLOCK(l, t)   UNLOCK(l)
#define zonediff_init(z, d)
#define DNS_ZONE_FLAG(z, f)   (ISC_TF(((z)->flags & (f)) != 0))
#define DNS_ZONE_SETFLAG(z, f)
#define DNS_ZONE_CLRFLAG(z, f)
#define DNS_ZONEFLG_REFRESH   0x00000001U
 refresh check in progress
#define DNS_ZONEFLG_NEEDDUMP   0x00000002U
 zone need consolidation
#define DNS_ZONEFLG_USEVC   0x00000004U
 use tcp for refresh query
#define DNS_ZONEFLG_DUMPING   0x00000008U
 a dump is in progress
#define DNS_ZONEFLG_HASINCLUDE   0x00000010U
 $INCLUDE in zone file
#define DNS_ZONEFLG_LOADED   0x00000020U
 database has loaded
#define DNS_ZONEFLG_EXITING   0x00000040U
 zone is being destroyed
#define DNS_ZONEFLG_EXPIRED   0x00000080U
 zone has expired
#define DNS_ZONEFLG_NEEDREFRESH   0x00000100U
 refresh check needed
#define DNS_ZONEFLG_UPTODATE   0x00000200U
 zone contents are uptodate
#define DNS_ZONEFLG_NEEDNOTIFY   0x00000400U
 need to send out notify messages
#define DNS_ZONEFLG_DIFFONRELOAD   0x00000800U
 generate a journal diff on reload
#define DNS_ZONEFLG_NOMASTERS   0x00001000U
 an attempt to refresh a zone with no masters occurred
#define DNS_ZONEFLG_LOADING   0x00002000U
 load from disk in progress
#define DNS_ZONEFLG_HAVETIMERS   0x00004000U
 timer values have been set from SOA (if not set, we are still using default timer values)
#define DNS_ZONEFLG_FORCEXFER   0x00008000U
 Force a zone xfer.
#define DNS_ZONEFLG_NOREFRESH   0x00010000U
#define DNS_ZONEFLG_DIALNOTIFY   0x00020000U
#define DNS_ZONEFLG_DIALREFRESH   0x00040000U
#define DNS_ZONEFLG_SHUTDOWN   0x00080000U
#define DNS_ZONEFLAG_NOIXFR   0x00100000U
 IXFR failed, force AXFR.
#define DNS_ZONEFLG_FLUSH   0x00200000U
#define DNS_ZONEFLG_NOEDNS   0x00400000U
#define DNS_ZONEFLG_USEALTXFRSRC   0x00800000U
#define DNS_ZONEFLG_SOABEFOREAXFR   0x01000000U
#define DNS_ZONEFLG_NEEDCOMPACT   0x02000000U
#define DNS_ZONEFLG_REFRESHING   0x04000000U
 Refreshing keydata.
#define DNS_ZONEFLG_THAW   0x08000000U
#define DNS_ZONEFLG_LOADPENDING   0x10000000U
 Loading scheduled.
#define DNS_ZONEFLG_NODELAY   0x20000000U
#define DNS_ZONEFLG_SENDSECURE   0x40000000U
#define DNS_ZONEFLG_NEEDSTARTUPNOTIFY   0x80000000U
 need to send out notify due to the zone just being loaded for the first time.
#define DNS_ZONE_OPTION(z, o)   (((z)->options & (o)) != 0)
#define DNS_ZONE_OPTION2(z, o)   (((z)->options2 & (o)) != 0)
#define DNS_ZONEKEY_OPTION(z, o)   (((z)->keyopts & (o)) != 0)
#define DNS_ZONELOADFLAG_NOSTAT   0x00000001U
#define DNS_ZONELOADFLAG_THAW   0x00000002U
#define UNREACH_CHACHE_SIZE   10U
#define UNREACH_HOLD_TIME   600
#define CHECK(op)
#define DNS_NOTIFY_NOSOA   0x0001U
#define DNS_NOTIFY_STARTUP   0x0002U
#define HOUR   3600
#define DAY   (24*HOUR)
#define MONTH   (30*DAY)
#define SEND_BUFFER_SIZE   2048
#define ENTER   zone_debuglog(zone, me, 1, "enter")
#define DNS_ZONE_JITTER_ADD(a, b, c)
#define DNS_ZONE_TIME_ADD(a, b, c)
#define ZONES_PER_TASK   100
#define ZONES_PER_MCTX   1000
#define PENDINGFLAGS   (DNS_NSEC3FLAG_CREATE|DNS_NSEC3FLAG_INITIAL)

Typedefs

typedef struct dns_notify dns_notify_t
typedef struct dns_stub dns_stub_t
typedef struct dns_load dns_load_t
typedef struct dns_forward dns_forward_t
typedef struct nsec3param nsec3param_t

Functions

typedef ISC_LIST (dns_forward_t)
static void zone_settimer (dns_zone_t *, isc_time_t *)
static void cancel_refresh (dns_zone_t *)
static void zone_debuglog (dns_zone_t *zone, const char *, int debuglevel, const char *msg,...) ISC_FORMAT_PRINTF(4
static void static void notify_log (dns_zone_t *zone, int level, const char *fmt,...) ISC_FORMAT_PRINTF(3
static void static void static void queue_xfrin (dns_zone_t *zone)
static isc_result_t update_one_rr (dns_db_t *db, dns_dbversion_t *ver, dns_diff_t *diff, dns_diffop_t op, dns_name_t *name, dns_ttl_t ttl, dns_rdata_t *rdata)
static void zone_unload (dns_zone_t *zone)
static void zone_expire (dns_zone_t *zone)
static void zone_iattach (dns_zone_t *source, dns_zone_t **target)
static void zone_idetach (dns_zone_t **zonep)
static isc_result_t zone_replacedb (dns_zone_t *zone, dns_db_t *db, isc_boolean_t dump)
static void zone_attachdb (dns_zone_t *zone, dns_db_t *db)
static void zone_detachdb (dns_zone_t *zone)
static isc_result_t default_journal (dns_zone_t *zone)
static void zone_xfrdone (dns_zone_t *zone, isc_result_t result)
static isc_result_t zone_postload (dns_zone_t *zone, dns_db_t *db, isc_time_t loadtime, isc_result_t result)
static void zone_needdump (dns_zone_t *zone, unsigned int delay)
static void zone_shutdown (isc_task_t *, isc_event_t *)
static void zone_loaddone (void *arg, isc_result_t result)
static isc_result_t zone_startload (dns_db_t *db, dns_zone_t *zone, isc_time_t loadtime)
static void zone_namerd_tostr (dns_zone_t *zone, char *buf, size_t length)
static void zone_name_tostr (dns_zone_t *zone, char *buf, size_t length)
static void zone_rdclass_tostr (dns_zone_t *zone, char *buf, size_t length)
static void zone_viewname_tostr (dns_zone_t *zone, char *buf, size_t length)
static isc_result_t zone_send_secureserial (dns_zone_t *zone, isc_uint32_t serial)
static void refresh_callback (isc_task_t *, isc_event_t *)
static void stub_callback (isc_task_t *, isc_event_t *)
static void queue_soa_query (dns_zone_t *zone)
static void soa_query (isc_task_t *, isc_event_t *)
static void ns_query (dns_zone_t *zone, dns_rdataset_t *soardataset, dns_stub_t *stub)
static int message_count (dns_message_t *msg, dns_section_t section, dns_rdatatype_t type)
static void notify_cancel (dns_zone_t *zone)
static void notify_find_address (dns_notify_t *notify)
static void notify_send (dns_notify_t *notify)
static isc_result_t notify_createmessage (dns_zone_t *zone, unsigned int flags, dns_message_t **messagep)
static void notify_done (isc_task_t *task, isc_event_t *event)
static void notify_send_toaddr (isc_task_t *task, isc_event_t *event)
static isc_result_t zone_dump (dns_zone_t *, isc_boolean_t)
static void got_transfer_quota (isc_task_t *task, isc_event_t *event)
static isc_result_t zmgr_start_xfrin_ifquota (dns_zonemgr_t *zmgr, dns_zone_t *zone)
static void zmgr_resume_xfrs (dns_zonemgr_t *zmgr, isc_boolean_t multi)
static void zonemgr_free (dns_zonemgr_t *zmgr)
static isc_result_t zonemgr_getio (dns_zonemgr_t *zmgr, isc_boolean_t high, isc_task_t *task, isc_taskaction_t action, void *arg, dns_io_t **iop)
static void zonemgr_putio (dns_io_t **iop)
static void zonemgr_cancelio (dns_io_t *io)
static isc_result_t zone_get_from_db (dns_zone_t *zone, dns_db_t *db, unsigned int *nscount, unsigned int *soacount, isc_uint32_t *serial, isc_uint32_t *refresh, isc_uint32_t *retry, isc_uint32_t *expire, isc_uint32_t *minimum, unsigned int *errors)
static void zone_freedbargs (dns_zone_t *zone)
static void forward_callback (isc_task_t *task, isc_event_t *event)
static void zone_saveunique (dns_zone_t *zone, const char *path, const char *templat)
static void zone_maintenance (dns_zone_t *zone)
static void zone_notify (dns_zone_t *zone, isc_time_t *now)
static void dump_done (void *arg, isc_result_t result)
static isc_result_t zone_signwithkey (dns_zone_t *zone, dns_secalg_t algorithm, isc_uint16_t keyid, isc_boolean_t delete)
static isc_result_t delete_nsec (dns_db_t *db, dns_dbversion_t *ver, dns_dbnode_t *node, dns_name_t *name, dns_diff_t *diff)
static void zone_rekey (dns_zone_t *zone)
static isc_result_t zone_send_securedb (dns_zone_t *zone, dns_db_t *db)
static void setrl (isc_ratelimiter_t *rl, unsigned int *rate, unsigned int value)
typedef ISC_LIST (nsec3param_t)
static void inc_stats (dns_zone_t *zone, isc_statscounter_t counter)
 Increment resolver-related statistics counters. Zone must be locked.
isc_result_t dns_zone_create (dns_zone_t **zonep, isc_mem_t *mctx)
 Creates a new empty zone and attach '*zonep' to it.
static void zone_free (dns_zone_t *zone)
static isc_boolean_t inline_secure (dns_zone_t *zone)
static isc_boolean_t inline_raw (dns_zone_t *zone)
void dns_zone_setclass (dns_zone_t *zone, dns_rdataclass_t rdclass)
 Sets the class of a zone. This operation can only be performed once on a zone.
dns_rdataclass_t dns_zone_getclass (dns_zone_t *zone)
 Returns the current zone class.
void dns_zone_setnotifytype (dns_zone_t *zone, dns_notifytype_t notifytype)
 Sets zone notify method to "notifytype".
isc_result_t dns_zone_getserial2 (dns_zone_t *zone, isc_uint32_t *serialp)
isc_uint32_t dns_zone_getserial (dns_zone_t *zone)
 Returns the current serial number of the zone. On success, the SOA serial of the zone will be copied into '*serialp'. dns_zone_getserial() cannot catch failure cases and is deprecated by dns_zone_getserial2().
void dns_zone_settype (dns_zone_t *zone, dns_zonetype_t type)
 Sets the zone type. This operation can only be performed once on a zone.
isc_result_t dns_zone_getdbtype (dns_zone_t *zone, char ***argv, isc_mem_t *mctx)
 Returns the current dbtype. isc_mem_free() should be used to free 'argv' after use.
isc_result_t dns_zone_setdbtype (dns_zone_t *zone, unsigned int dbargc, const char *const *dbargv)
 Sets the database type to dbargv[0] and database arguments to subsequent dbargv elements. 'db_type' is not checked to see if it is a valid database type.
void dns_zone_setview (dns_zone_t *zone, dns_view_t *view)
 Associate the zone with a view.
dns_view_tdns_zone_getview (dns_zone_t *zone)
 Returns the zone's associated view.
isc_result_t dns_zone_setorigin (dns_zone_t *zone, const dns_name_t *origin)
 Sets the zones origin to 'origin'.
void dns_zone_setacache (dns_zone_t *zone, dns_acache_t *acache)
 Associate the zone with an additional cache.
static isc_result_t dns_zone_setstring (dns_zone_t *zone, char **field, const char *value)
isc_result_t dns_zone_setfile (dns_zone_t *zone, const char *file)
isc_result_t dns_zone_setfile2 (dns_zone_t *zone, const char *file, dns_masterformat_t format)
isc_result_t dns_zone_setfile3 (dns_zone_t *zone, const char *file, dns_masterformat_t format, const dns_master_style_t *style)
 Sets the name of the master file in the format of 'format' from which the zone loads its database to 'file'.
const char * dns_zone_getfile (dns_zone_t *zone)
 Gets the name of the zone's master file, if any.
dns_ttl_t dns_zone_getmaxttl (dns_zone_t *zone)
 Gets the max ttl of the zone.
void dns_zone_setmaxttl (dns_zone_t *zone, dns_ttl_t maxttl)
isc_result_t dns_zone_setjournal (dns_zone_t *zone, const char *myjournal)
 Sets the filename used for journaling updates / IXFR transfers. The default journal name is set by dns_zone_setfile() to be "file.jnl". If 'myjournal' is NULL, the zone will have no journal name.
char * dns_zone_getjournal (dns_zone_t *zone)
 Returns the journal name associated with this zone. If no journal has been set this will be NULL.
isc_boolean_t dns_zone_isdynamic (dns_zone_t *zone, isc_boolean_t ignore_freeze)
 Load the origin names for a writeable DLZ database.
isc_result_t dns_zone_rpz_enable (dns_zone_t *zone, dns_rpz_zones_t *rpzs, dns_rpz_num_t rpz_num)
 Return the number include files that were encountered during load. If the number is greater than zero, 'includesp' will point to an array containing the filenames.
dns_rpz_num_t dns_zone_get_rpz_num (dns_zone_t *zone)
 If a zone is a response policy zone, mark its new database.
void dns_zone_rpz_enable_db (dns_zone_t *zone, dns_db_t *db)
 Set the response policy associated with a zone.
static isc_boolean_t zone_touched (dns_zone_t *zone)
static isc_result_t zone_load (dns_zone_t *zone, unsigned int flags, isc_boolean_t locked)
isc_result_t dns_zone_load (dns_zone_t *zone)
isc_result_t dns_zone_loadnew (dns_zone_t *zone)
static void zone_asyncload (isc_task_t *task, isc_event_t *event)
isc_result_t dns_zone_asyncload (dns_zone_t *zone, dns_zt_zoneloaded_t done, void *arg)
 Cause the database to be loaded from its backing store asynchronously. Other zone maintenance functions are suspended until this is complete. When finished, 'done' is called to inform the caller, with 'arg' as its first argument and 'zone' as its second. (Normally, 'arg' is expected to point to the zone table but is left undefined for testing purposes.).
isc_boolean_t dns__zone_loadpending (dns_zone_t *zone)
 Indicates whether the zone is waiting to be loaded asynchronously. (Not currently intended for use outside of this module and associated tests.).
isc_result_t dns_zone_loadandthaw (dns_zone_t *zone)
 Cause the database to be loaded from its backing store. Confirm that the minimum requirements for the zone type are met, otherwise DNS_R_BADZONE is returned.
static unsigned int get_master_options (dns_zone_t *zone)
static void zone_registerinclude (const char *filename, void *arg)
static void zone_gotreadhandle (isc_task_t *task, isc_event_t *event)
static void get_raw_serial (dns_zone_t *raw, dns_masterrawheader_t *rawdata)
static void zone_gotwritehandle (isc_task_t *task, isc_event_t *event)
static void zone_setrawdata (dns_zone_t *zone, dns_masterrawheader_t *header)
void dns_zone_setrawdata (dns_zone_t *zone, dns_masterrawheader_t *header)
 Set the NSEC3 parameters for the zone.
static isc_boolean_t zone_check_mx (dns_zone_t *zone, dns_db_t *db, dns_name_t *name, dns_name_t *owner)
static isc_boolean_t zone_check_srv (dns_zone_t *zone, dns_db_t *db, dns_name_t *name, dns_name_t *owner)
static isc_boolean_t zone_check_glue (dns_zone_t *zone, dns_db_t *db, dns_name_t *name, dns_name_t *owner)
static isc_boolean_t zone_rrset_check_dup (dns_zone_t *zone, dns_name_t *owner, dns_rdataset_t *rdataset)
static isc_boolean_t zone_check_dup (dns_zone_t *zone, dns_db_t *db)
static isc_boolean_t isspf (const dns_rdata_t *rdata)
static isc_boolean_t integrity_checks (dns_zone_t *zone, dns_db_t *db)
static void zone_check_dnskeys (dns_zone_t *zone, dns_db_t *db)
static void resume_signingwithkey (dns_zone_t *zone)
static isc_result_t zone_addnsec3chain (dns_zone_t *zone, dns_rdata_nsec3param_t *nsec3param)
static void resume_addnsec3chain (dns_zone_t *zone)
static void set_resigntime (dns_zone_t *zone)
static isc_result_t check_nsec3param (dns_zone_t *zone, dns_db_t *db)
static void set_refreshkeytimer (dns_zone_t *zone, dns_rdata_keydata_t *key, isc_stdtime_t now, isc_boolean_t force)
static isc_result_t create_keydata (dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_diff_t *diff, dns_keytable_t *keytable, dns_keynode_t **keynodep, isc_boolean_t *changed)
static isc_result_t delete_keydata (dns_db_t *db, dns_dbversion_t *ver, dns_diff_t *diff, dns_name_t *name, dns_rdataset_t *rdataset)
static isc_result_t compute_tag (dns_name_t *name, dns_rdata_dnskey_t *dnskey, isc_mem_t *mctx, dns_keytag_t *tag)
static void trust_key (dns_zone_t *zone, dns_name_t *keyname, dns_rdata_dnskey_t *dnskey, isc_mem_t *mctx)
static void fail_secure (dns_zone_t *zone, dns_name_t *keyname)
static void load_secroots (dns_zone_t *zone, dns_name_t *name, dns_rdataset_t *rdataset)
static isc_result_t do_one_tuple (dns_difftuple_t **tuple, dns_db_t *db, dns_dbversion_t *ver, dns_diff_t *diff)
static isc_result_t update_soa_serial (dns_db_t *db, dns_dbversion_t *ver, dns_diff_t *diff, isc_mem_t *mctx, dns_updatemethod_t method)
static isc_result_t zone_journal (dns_zone_t *zone, dns_diff_t *diff, isc_uint32_t *sourceserial, const char *caller)
static isc_result_t add_soa (dns_zone_t *zone, dns_db_t *db)
static isc_result_t sync_keyzone (dns_zone_t *zone, dns_db_t *db)
isc_result_t dns_zone_synckeyzone (dns_zone_t *zone)
 Set the data to be included in the header when the zone is dumped in binary format.
static void maybe_send_secure (dns_zone_t *zone)
static isc_boolean_t zone_unchanged (dns_db_t *db1, dns_db_t *db2, isc_mem_t *mctx)
static isc_boolean_t exit_check (dns_zone_t *zone)
static isc_boolean_t zone_check_ns (dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *version, dns_name_t *name, isc_boolean_t logit)
static isc_result_t zone_count_ns_rr (dns_zone_t *zone, dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, unsigned int *nscount, unsigned int *errors, isc_boolean_t logit)
static isc_result_t zone_load_soa_rr (dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, unsigned int *soacount, isc_uint32_t *serial, isc_uint32_t *refresh, isc_uint32_t *retry, isc_uint32_t *expire, isc_uint32_t *minimum)
void dns_zone_attach (dns_zone_t *source, dns_zone_t **target)
 Attach '*target' to 'source' incrementing its external reference count.
void dns_zone_detach (dns_zone_t **zonep)
 Detach from a zone decrementing its external reference count. If this was the last external reference to the zone it will be shut down and eventually freed.
void dns_zone_iattach (dns_zone_t *source, dns_zone_t **target)
 Attach '*target' to 'source' incrementing its internal reference count. This is intended for use by operations such as zone transfers that need to prevent the zone object from being freed but not from shutting down.
void dns_zone_idetach (dns_zone_t **zonep)
 Detach from a zone decrementing its internal reference count. If there are no more internal or external references to the zone, it will be freed.
isc_mem_tdns_zone_getmctx (dns_zone_t *zone)
 Get the memory context of a zone.
dns_zonemgr_tdns_zone_getmgr (dns_zone_t *zone)
 If 'zone' is managed return the zone manager otherwise NULL.
void dns_zone_setflag (dns_zone_t *zone, unsigned int flags, isc_boolean_t value)
 Sets ('value' == 'ISC_TRUE') / clears ('value' == 'IS_FALSE') zone flags. Valid flag bits are DNS_ZONE_F_*.
void dns_zone_setoption (dns_zone_t *zone, unsigned int option, isc_boolean_t value)
void dns_zone_setoption2 (dns_zone_t *zone, unsigned int option, isc_boolean_t value)
 Set the given options on ('value' == ISC_TRUE) or off ('value' == ISC_FALSE).
unsigned int dns_zone_getoptions (dns_zone_t *zone)
unsigned int dns_zone_getoptions2 (dns_zone_t *zone)
 Returns the current zone options.
void dns_zone_setkeyopt (dns_zone_t *zone, unsigned int keyopt, isc_boolean_t value)
 Set key options on ('value' == ISC_TRUE) or off ('value' == ISC_FALSE).
unsigned int dns_zone_getkeyopts (dns_zone_t *zone)
 Returns the current zone key options.
isc_result_t dns_zone_setxfrsource4 (dns_zone_t *zone, const isc_sockaddr_t *xfrsource)
isc_sockaddr_tdns_zone_getxfrsource4 (dns_zone_t *zone)
isc_result_t dns_zone_setxfrsource4dscp (dns_zone_t *zone, isc_dscp_t dscp)
isc_dscp_t dns_zone_getxfrsource4dscp (dns_zone_t *zone)
isc_result_t dns_zone_setxfrsource6 (dns_zone_t *zone, const isc_sockaddr_t *xfrsource)
 / Get the DSCP value associated with the transfer/alt-transfer source.
isc_sockaddr_tdns_zone_getxfrsource6 (dns_zone_t *zone)
isc_dscp_t dns_zone_getxfrsource6dscp (dns_zone_t *zone)
isc_result_t dns_zone_setxfrsource6dscp (dns_zone_t *zone, isc_dscp_t dscp)
 / Get the DSCP value associated with the transfer/alt-transfer source.
isc_result_t dns_zone_setaltxfrsource4 (dns_zone_t *zone, const isc_sockaddr_t *altxfrsource)
 Set the source address to be used in IPv4 zone transfers.
isc_sockaddr_tdns_zone_getaltxfrsource4 (dns_zone_t *zone)
 Returns the source address set by a previous dns_zone_setxfrsource4 call, or the default of inaddr_any, port 0.
isc_result_t dns_zone_setaltxfrsource4dscp (dns_zone_t *zone, isc_dscp_t dscp)
 Set the DSCP value associated with the transfer/alt-transfer source.
isc_dscp_t dns_zone_getaltxfrsource4dscp (dns_zone_t *zone)
isc_result_t dns_zone_setaltxfrsource6 (dns_zone_t *zone, const isc_sockaddr_t *altxfrsource)
 Set the source address to be used in IPv6 zone transfers.
isc_sockaddr_tdns_zone_getaltxfrsource6 (dns_zone_t *zone)
 Returns the source address set by a previous dns_zone_setxfrsource6 call, or the default of in6addr_any, port 0.
isc_result_t dns_zone_setaltxfrsource6dscp (dns_zone_t *zone, isc_dscp_t dscp)
 Set the DSCP value associated with the transfer/alt-transfer source.
isc_dscp_t dns_zone_getaltxfrsource6dscp (dns_zone_t *zone)
isc_result_t dns_zone_setnotifysrc4 (dns_zone_t *zone, const isc_sockaddr_t *notifysrc)
 Set the source address to be used with IPv4 NOTIFY messages.
isc_sockaddr_tdns_zone_getnotifysrc4 (dns_zone_t *zone)
 Returns the source address set by a previous dns_zone_setnotifysrc4 call, or the default of inaddr_any, port 0.
isc_result_t dns_zone_setnotifysrc4dscp (dns_zone_t *zone, isc_dscp_t dscp)
 / Get the DCSP value associated with the notify source.
isc_dscp_t dns_zone_getnotifysrc4dscp (dns_zone_t *zone)
isc_result_t dns_zone_setnotifysrc6 (dns_zone_t *zone, const isc_sockaddr_t *notifysrc)
 / Get the DSCP value associated with the notify source.
isc_sockaddr_tdns_zone_getnotifysrc6 (dns_zone_t *zone)
 Returns the source address set by a previous dns_zone_setnotifysrc6 call, or the default of in6addr_any, port 0.
static isc_boolean_t same_addrs (const isc_sockaddr_t *old, const isc_sockaddr_t *new, isc_uint32_t count)
static isc_boolean_t same_keynames (dns_name_t **old, dns_name_t **new, isc_uint32_t count)
static void clear_addresskeylist (isc_sockaddr_t **addrsp, isc_dscp_t **dscpsp, dns_name_t ***keynamesp, unsigned int *countp, isc_mem_t *mctx)
static isc_result_t set_addrkeylist (unsigned int count, const isc_sockaddr_t *addrs, isc_sockaddr_t **newaddrsp, const isc_dscp_t *dscp, isc_dscp_t **newdscpp, dns_name_t **names, dns_name_t ***newnamesp, isc_mem_t *mctx)
isc_result_t dns_zone_setnotifysrc6dscp (dns_zone_t *zone, isc_dscp_t dscp)
 / Get the DCSP value associated with the notify source.
isc_dscp_t dns_zone_getnotifysrc6dscp (dns_zone_t *zone)
isc_result_t dns_zone_setalsonotify (dns_zone_t *zone, const isc_sockaddr_t *notify, isc_uint32_t count)
isc_result_t dns_zone_setalsonotifywithkeys (dns_zone_t *zone, const isc_sockaddr_t *notify, dns_name_t **keynames, isc_uint32_t count)
isc_result_t dns_zone_setalsonotifydscpkeys (dns_zone_t *zone, const isc_sockaddr_t *notify, const isc_dscp_t *dscps, dns_name_t **keynames, isc_uint32_t count)
 Set the list of additional servers to be notified when a zone changes. To clear the list use 'count = 0'.
isc_result_t dns_zone_setmasters (dns_zone_t *zone, const isc_sockaddr_t *masters, isc_uint32_t count)
isc_result_t dns_zone_setmasterswithkeys (dns_zone_t *zone, const isc_sockaddr_t *masters, dns_name_t **keynames, isc_uint32_t count)
 Set the list of master servers for the zone.
isc_result_t dns_zone_getdb (dns_zone_t *zone, dns_db_t **dpb)
 Attach '*dbp' to the database to if it exists otherwise return DNS_R_NOTLOADED.
void dns_zone_setdb (dns_zone_t *zone, dns_db_t *db)
 Sets the zone database to 'db'.
void dns_zone_maintenance (dns_zone_t *zone)
 Perform regular maintenance on the zone. This is called as a result of a zone being managed.
static isc_boolean_t was_dumping (dns_zone_t *zone)
static isc_result_t find_zone_keys (dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, isc_mem_t *mctx, unsigned int maxkeys, dst_key_t **keys, unsigned int *nkeys)
static isc_result_t offline (dns_db_t *db, dns_dbversion_t *ver, zonediff_t *zonediff, dns_name_t *name, dns_ttl_t ttl, dns_rdata_t *rdata)
static void set_key_expiry_warning (dns_zone_t *zone, isc_stdtime_t when, isc_stdtime_t now)
static isc_boolean_t delsig_ok (dns_rdata_rrsig_t *rrsig_ptr, dst_key_t **keys, unsigned int nkeys, isc_boolean_t *warn)
static isc_result_t del_sigs (dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, dns_rdatatype_t type, zonediff_t *zonediff, dst_key_t **keys, unsigned int nkeys, isc_stdtime_t now, isc_boolean_t incremental)
static isc_result_t add_sigs (dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, dns_rdatatype_t type, dns_diff_t *diff, dst_key_t **keys, unsigned int nkeys, isc_mem_t *mctx, isc_stdtime_t inception, isc_stdtime_t expire, isc_boolean_t check_ksk, isc_boolean_t keyset_kskonly)
static void zone_resigninc (dns_zone_t *zone)
static isc_result_t next_active (dns_db_t *db, dns_dbversion_t *version, dns_name_t *oldname, dns_name_t *newname, isc_boolean_t bottom)
static isc_boolean_t signed_with_key (dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, dns_rdatatype_t type, dst_key_t *key)
static isc_result_t add_nsec (dns_db_t *db, dns_dbversion_t *version, dns_name_t *name, dns_dbnode_t *node, dns_ttl_t ttl, isc_boolean_t bottom, dns_diff_t *diff)
static isc_result_t sign_a_node (dns_db_t *db, dns_name_t *name, dns_dbnode_t *node, dns_dbversion_t *version, isc_boolean_t build_nsec3, isc_boolean_t build_nsec, dst_key_t *key, isc_stdtime_t inception, isc_stdtime_t expire, unsigned int minimum, isc_boolean_t is_ksk, isc_boolean_t keyset_kskonly, isc_boolean_t *delegation, dns_diff_t *diff, isc_int32_t *signatures, isc_mem_t *mctx)
static isc_result_t updatesecure (dns_db_t *db, dns_dbversion_t *version, dns_name_t *name, dns_ttl_t minimum, isc_boolean_t update_only, dns_diff_t *diff)
static isc_result_t updatesignwithkey (dns_zone_t *zone, dns_signing_t *signing, dns_dbversion_t *version, isc_boolean_t build_nsec3, dns_ttl_t minimum, dns_diff_t *diff)
static isc_result_t fixup_nsec3param (dns_db_t *db, dns_dbversion_t *ver, dns_nsec3chain_t *chain, isc_boolean_t active, dns_rdatatype_t privatetype, dns_diff_t *diff)
static isc_result_t deletematchingnsec3 (dns_db_t *db, dns_dbversion_t *ver, dns_dbnode_t *node, dns_name_t *name, const dns_rdata_nsec3param_t *param, dns_diff_t *diff)
static isc_result_t need_nsec_chain (dns_db_t *db, dns_dbversion_t *ver, const dns_rdata_nsec3param_t *param, isc_boolean_t *answer)
static isc_result_t update_sigs (dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *version, dst_key_t *zone_keys[], unsigned int nkeys, dns_zone_t *zone, isc_stdtime_t inception, isc_stdtime_t expire, isc_stdtime_t now, isc_boolean_t check_ksk, isc_boolean_t keyset_kskonly, zonediff_t *zonediff)
static void zone_nsec3chain (dns_zone_t *zone)
static isc_result_t del_sig (dns_db_t *db, dns_dbversion_t *version, dns_name_t *name, dns_dbnode_t *node, unsigned int nkeys, dns_secalg_t algorithm, isc_uint16_t keyid, dns_diff_t *diff)
static void zone_sign (dns_zone_t *zone)
static isc_result_t normalize_key (dns_rdata_t *rr, dns_rdata_t *target, unsigned char *data, int size)
static isc_boolean_t matchkey (dns_rdataset_t *rdset, dns_rdata_t *rr)
static isc_stdtime_t refresh_time (dns_keyfetch_t *kfetch, isc_boolean_t retry)
static isc_result_t minimal_update (dns_keyfetch_t *kfetch, dns_dbversion_t *ver, dns_diff_t *diff)
static isc_boolean_t revocable (dns_keyfetch_t *kfetch, dns_rdata_keydata_t *keydata)
static void keyfetch_done (isc_task_t *task, isc_event_t *event)
static void zone_refreshkeys (dns_zone_t *zone)
void dns_zone_markdirty (dns_zone_t *zone)
 Mark a zone as 'dirty'.
void dns_zone_expire (dns_zone_t *zone)
 Mark the zone as expired. If the zone requires dumping cause it to be initiated. Set the refresh and retry intervals to there default values and unload the zone.
void dns_zone_refresh (dns_zone_t *zone)
 Initiate zone up to date checks. The zone must already be being managed.
isc_result_t dns_zone_flush (dns_zone_t *zone)
 Write the zone to database if there are uncommitted changes.
isc_result_t dns_zone_dump (dns_zone_t *zone)
 Write the zone to database.
static isc_result_t dumptostream (dns_zone_t *zone, FILE *fd, const dns_master_style_t *style, dns_masterformat_t format, const isc_uint32_t rawversion)
isc_result_t dns_zone_dumptostream3 (dns_zone_t *zone, FILE *fd, dns_masterformat_t format, const dns_master_style_t *style, const isc_uint32_t rawversion)
 Write the zone to stream 'fd' in the specified 'format'. If the 'format' is dns_masterformat_text (RFC1035), 'style' also specifies the file style (e.g., &dns_master_style_default).
isc_result_t dns_zone_dumptostream2 (dns_zone_t *zone, FILE *fd, dns_masterformat_t format, const dns_master_style_t *style)
isc_result_t dns_zone_dumptostream (dns_zone_t *zone, FILE *fd)
isc_result_t dns_zone_fulldumptostream (dns_zone_t *zone, FILE *fd)
 The same as dns_zone_dumptostream, but dumps the zone with different dump settings (dns_master_style_full).
void dns_zone_unload (dns_zone_t *zone)
 detach the database from the zone structure.
static void forward_cancel (dns_zone_t *zone)
void dns_zone_setminrefreshtime (dns_zone_t *zone, isc_uint32_t val)
 Set the minimum refresh time.
void dns_zone_setmaxrefreshtime (dns_zone_t *zone, isc_uint32_t val)
 Set the maximum refresh time.
void dns_zone_setminretrytime (dns_zone_t *zone, isc_uint32_t val)
 Set the minimum retry time.
void dns_zone_setmaxretrytime (dns_zone_t *zone, isc_uint32_t val)
 Set the maximum retry time.
static isc_boolean_t notify_isqueued (dns_zone_t *zone, unsigned int flags, dns_name_t *name, isc_sockaddr_t *addr, dns_tsigkey_t *key)
static isc_boolean_t notify_isself (dns_zone_t *zone, isc_sockaddr_t *dst)
static void notify_destroy (dns_notify_t *notify, isc_boolean_t locked)
static isc_result_t notify_create (isc_mem_t *mctx, unsigned int flags, dns_notify_t **notifyp)
static void process_adb_event (isc_task_t *task, isc_event_t *ev)
static isc_result_t notify_send_queue (dns_notify_t *notify, isc_boolean_t startup)
void dns_zone_notify (dns_zone_t *zone)
 Generate notify events for this zone.
static isc_result_t save_nsrrset (dns_message_t *message, dns_name_t *name, dns_db_t *db, dns_dbversion_t *version)
static void get_edns_expire (dns_zone_t *zone, dns_message_t *message, isc_uint32_t *expirep)
static void setmodtime (dns_zone_t *zone, isc_time_t *expiretime)
static isc_result_t create_query (dns_zone_t *zone, dns_rdatatype_t rdtype, dns_message_t **messagep)
static isc_result_t add_opt (dns_message_t *message, isc_uint16_t udpsize, isc_boolean_t reqnsid, isc_boolean_t reqexpire)
static void zone_timer (isc_task_t *task, isc_event_t *event)
isc_result_t dns_zone_notifyreceive (dns_zone_t *zone, isc_sockaddr_t *from, dns_message_t *msg)
 Tell the zone that it has received a NOTIFY message from another server. This may cause some zone maintenance activity to occur.
void dns_zone_setnotifyacl (dns_zone_t *zone, dns_acl_t *acl)
 / Get the DSCP value associated with the notify source.
void dns_zone_setqueryacl (dns_zone_t *zone, dns_acl_t *acl)
 Sets the query acl list for the zone.
void dns_zone_setqueryonacl (dns_zone_t *zone, dns_acl_t *acl)
 Sets the query-on acl list for the zone.
void dns_zone_setupdateacl (dns_zone_t *zone, dns_acl_t *acl)
 Sets the update acl list for the zone.
void dns_zone_setforwardacl (dns_zone_t *zone, dns_acl_t *acl)
 Sets the forward unsigned updates acl list for the zone.
void dns_zone_setxfracl (dns_zone_t *zone, dns_acl_t *acl)
 Sets the transfer acl list for the zone.
dns_acl_tdns_zone_getnotifyacl (dns_zone_t *zone)
 Returns the current notify acl or NULL.
dns_acl_tdns_zone_getqueryacl (dns_zone_t *zone)
 Returns the current query acl or NULL.
dns_acl_tdns_zone_getqueryonacl (dns_zone_t *zone)
 Returns the current query-on acl or NULL.
dns_acl_tdns_zone_getupdateacl (dns_zone_t *zone)
 Returns the current update acl or NULL.
dns_acl_tdns_zone_getforwardacl (dns_zone_t *zone)
 Returns the current forward unsigned updates acl or NULL.
dns_acl_tdns_zone_getxfracl (dns_zone_t *zone)
 Returns the current transfer acl or NULL.
void dns_zone_clearupdateacl (dns_zone_t *zone)
 Clear the current update acl.
void dns_zone_clearforwardacl (dns_zone_t *zone)
 Clear the current forward unsigned updates acl.
void dns_zone_clearnotifyacl (dns_zone_t *zone)
 Clear the current notify acl.
void dns_zone_clearqueryacl (dns_zone_t *zone)
 Clear the current query acl.
void dns_zone_clearqueryonacl (dns_zone_t *zone)
 Clear the current query-on acl.
void dns_zone_clearxfracl (dns_zone_t *zone)
 Clear the current transfer acl.
isc_boolean_t dns_zone_getupdatedisabled (dns_zone_t *zone)
 Return update disabled. Transient unless called when running in isc_task_exclusive() mode.
void dns_zone_setupdatedisabled (dns_zone_t *zone, isc_boolean_t state)
 Set update disabled. Should only be called only when running in isc_task_exclusive() mode. Failure to do so may result in updates being committed after the call has been made.
isc_boolean_t dns_zone_getzeronosoattl (dns_zone_t *zone)
 Return zero-no-soa-ttl status.
void dns_zone_setzeronosoattl (dns_zone_t *zone, isc_boolean_t state)
 Set zero-no-soa-ttl status.
void dns_zone_setchecknames (dns_zone_t *zone, dns_severity_t severity)
 Set the severity of name checking when loading a zone.
dns_severity_t dns_zone_getchecknames (dns_zone_t *zone)
 Return the current severity of name checking.
void dns_zone_setjournalsize (dns_zone_t *zone, isc_int32_t size)
 Sets the journal size for the zone.
isc_int32_t dns_zone_getjournalsize (dns_zone_t *zone)
 Return the journal size as set with a previous call to dns_zone_setjournalsize().
void dns_zone_name (dns_zone_t *zone, char *buf, size_t length)
 Log the message 'msg...' at 'level', including text that identifies the message as applying to 'zone'.
void dns_zone_logc (dns_zone_t *zone, isc_logcategory_t *category, int level, const char *fmt,...)
void dns_zone_log (dns_zone_t *zone, int level, const char *fmt,...)
void dns_zone_setmaxxfrin (dns_zone_t *zone, isc_uint32_t maxxfrin)
 Set the maximum time (in seconds) that a zone transfer in (AXFR/IXFR) of this zone will use before being aborted.
isc_uint32_t dns_zone_getmaxxfrin (dns_zone_t *zone)
 Returns the maximum transfer time for this zone. This will be either the value set by the last call to dns_zone_setmaxxfrin() or the default value of 1 hour.
void dns_zone_setmaxxfrout (dns_zone_t *zone, isc_uint32_t maxxfrout)
 Set the maximum time (in seconds) that a zone transfer out (AXFR/IXFR) of this zone will use before being aborted.
isc_uint32_t dns_zone_getmaxxfrout (dns_zone_t *zone)
 Returns the maximum transfer time for this zone. This will be either the value set by the last call to dns_zone_setmaxxfrout() or the default value of 1 hour.
dns_zonetype_t dns_zone_gettype (dns_zone_t *zone)
 Returns the type of the zone (master/slave/etc.).
dns_name_tdns_zone_getorigin (dns_zone_t *zone)
 Returns the value of the origin.
void dns_zone_settask (dns_zone_t *zone, isc_task_t *task)
 Give a zone a task to work with. Any current task will be detached.
void dns_zone_gettask (dns_zone_t *zone, isc_task_t **target)
 Attach '*target' to the zone's task.
void dns_zone_setidlein (dns_zone_t *zone, isc_uint32_t idlein)
 
  • Set the idle timeout for transfer the.

isc_uint32_t dns_zone_getidlein (dns_zone_t *zone)
 Requires:.
void dns_zone_setidleout (dns_zone_t *zone, isc_uint32_t idleout)
 
  • Set the idle timeout for transfers out.

isc_uint32_t dns_zone_getidleout (dns_zone_t *zone)
 Requires:.
static void update_log_cb (void *arg, dns_zone_t *zone, int level, const char *message)
static isc_result_t sync_secure_journal (dns_zone_t *zone, dns_zone_t *raw, dns_journal_t *journal, isc_uint32_t start, isc_uint32_t end, dns_difftuple_t **soatuplep, dns_diff_t *diff)
static isc_result_t sync_secure_db (dns_zone_t *seczone, dns_zone_t *raw, dns_db_t *secdb, dns_dbversion_t *secver, dns_difftuple_t **soatuple, dns_diff_t *diff)
static void receive_secure_serial (isc_task_t *task, isc_event_t *event)
static isc_result_t checkandaddsoa (dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, dns_rdataset_t *rdataset, isc_uint32_t oldserial)
static isc_result_t save_nsec3param (dns_zone_t *zone, nsec3paramlist_t *nsec3list)
static isc_result_t restore_nsec3param (dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *version, nsec3paramlist_t *nsec3list)
static void receive_secure_db (isc_task_t *task, isc_event_t *event)
isc_result_t dns_zone_replacedb (dns_zone_t *zone, dns_db_t *db, isc_boolean_t dump)
 Replace the database of "zone" with a new database "db".
void dns_zone_getssutable (dns_zone_t *zone, dns_ssutable_t **table)
 Get the simple-secure-update policy table.
void dns_zone_setssutable (dns_zone_t *zone, dns_ssutable_t *table)
 Set / clear the simple-secure-update policy table.
void dns_zone_setsigvalidityinterval (dns_zone_t *zone, isc_uint32_t interval)
 Set the zone's RRSIG validity interval. This is the length of time for which DNSSEC signatures created as a result of dynamic updates to secure zones will remain valid, in seconds.
isc_uint32_t dns_zone_getsigvalidityinterval (dns_zone_t *zone)
 Get the zone's RRSIG validity interval.
void dns_zone_setsigresigninginterval (dns_zone_t *zone, isc_uint32_t interval)
 Set the zone's RRSIG re-signing interval. A dynamic zone's RRSIG's will be re-signed 'interval' amount of time before they expire.
isc_uint32_t dns_zone_getsigresigninginterval (dns_zone_t *zone)
 Get the zone's RRSIG re-signing interval.
static void forward_destroy (dns_forward_t *forward)
static isc_result_t sendtomaster (dns_forward_t *forward)
isc_result_t dns_zone_forwardupdate (dns_zone_t *zone, dns_message_t *msg, dns_updatecallback_t callback, void *callback_arg)
 Forward 'msg' to each master in turn until we get an answer or we have exhausted the list of masters. 'callback' will be called with ISC_R_SUCCESS if we get an answer and the returned message will be passed as 'answer_message', otherwise a non ISC_R_SUCCESS result code will be passed and answer_message will be NULL. The callback function is responsible for destroying 'answer_message'. (callback)(callback_arg, result, answer_message);.
isc_result_t dns_zone_next (dns_zone_t *zone, dns_zone_t **next)
 Find the next zone in the list of managed zones.
isc_result_t dns_zone_first (dns_zonemgr_t *zmgr, dns_zone_t **first)
 Find the first zone in the list of managed zones.
isc_result_t dns_zonemgr_create (isc_mem_t *mctx, isc_taskmgr_t *taskmgr, isc_timermgr_t *timermgr, isc_socketmgr_t *socketmgr, dns_zonemgr_t **zmgrp)
 Create a zone manager. Note: the zone manager will not be able to manage any zones until dns_zonemgr_setsize() has been run.
isc_result_t dns_zonemgr_createzone (dns_zonemgr_t *zmgr, dns_zone_t **zonep)
 Allocate a new zone using a memory context from the zone manager's memory context pool.
isc_result_t dns_zonemgr_managezone (dns_zonemgr_t *zmgr, dns_zone_t *zone)
 Bring the zone under control of a zone manager.
void dns_zonemgr_releasezone (dns_zonemgr_t *zmgr, dns_zone_t *zone)
 Release 'zone' from the managed by 'zmgr'. 'zmgr' is implicitly detached from 'zone'.
void dns_zonemgr_attach (dns_zonemgr_t *source, dns_zonemgr_t **target)
 Attach '*target' to 'source' incrementing its external reference count.
void dns_zonemgr_detach (dns_zonemgr_t **zmgrp)
 Detach from a zone manager.
isc_result_t dns_zonemgr_forcemaint (dns_zonemgr_t *zmgr)
 Force zone maintenance of all zones managed by 'zmgr' at its earliest convenience.
void dns_zonemgr_resumexfrs (dns_zonemgr_t *zmgr)
 Attempt to start any stalled zone transfers.
void dns_zonemgr_shutdown (dns_zonemgr_t *zmgr)
 Shut down the zone manager.
static isc_result_t mctxinit (void **target, void *arg)
static void mctxfree (void **target)
isc_result_t dns_zonemgr_setsize (dns_zonemgr_t *zmgr, int num_zones)
 Set the size of the zone manager task pool. This must be run before zmgr can be used for managing zones. Currently, it can only be run once; the task pool cannot be resized.
void dns_zonemgr_settransfersin (dns_zonemgr_t *zmgr, isc_uint32_t value)
 Set the maximum number of simultaneous transfers in allowed by the zone manager.
isc_uint32_t dns_zonemgr_getttransfersin (dns_zonemgr_t *zmgr)
 Return the maximum number of simultaneous transfers in allowed.
void dns_zonemgr_settransfersperns (dns_zonemgr_t *zmgr, isc_uint32_t value)
 Set the number of zone transfers allowed per nameserver.
isc_uint32_t dns_zonemgr_getttransfersperns (dns_zonemgr_t *zmgr)
 Return the number of transfers allowed per nameserver.
void dns_zonemgr_setiolimit (dns_zonemgr_t *zmgr, isc_uint32_t iolimit)
 Set the number of simultaneous file descriptors available for reading and writing masterfiles.
isc_uint32_t dns_zonemgr_getiolimit (dns_zonemgr_t *zmgr)
 Get the number of simultaneous file descriptors available for reading and writing masterfiles.
void dns_zonemgr_setnotifyrate (dns_zonemgr_t *zmgr, unsigned int value)
 Set the number of NOTIFY requests sent per second.
void dns_zonemgr_setstartupnotifyrate (dns_zonemgr_t *zmgr, unsigned int value)
 Set the number of startup NOTIFY requests sent per second.
void dns_zonemgr_setserialqueryrate (dns_zonemgr_t *zmgr, unsigned int value)
 Set the number of SOA queries sent per second.
unsigned int dns_zonemgr_getnotifyrate (dns_zonemgr_t *zmgr)
 Return the number of NOTIFY requests sent per second.
unsigned int dns_zonemgr_getstartupnotifyrate (dns_zonemgr_t *zmgr)
 Return the number of startup NOTIFY requests sent per second.
unsigned int dns_zonemgr_getserialqueryrate (dns_zonemgr_t *zmgr)
 Return the number of SOA queries sent per second.
isc_boolean_t dns_zonemgr_unreachable (dns_zonemgr_t *zmgr, isc_sockaddr_t *remote, isc_sockaddr_t *local, isc_time_t *now)
 Returns ISC_TRUE if the given local/remote address pair is found in the zone maanger's unreachable cache.
void dns_zonemgr_unreachabledel (dns_zonemgr_t *zmgr, isc_sockaddr_t *remote, isc_sockaddr_t *local)
 Remove the pair of addresses from the unreachable cache.
void dns_zonemgr_unreachableadd (dns_zonemgr_t *zmgr, isc_sockaddr_t *remote, isc_sockaddr_t *local, isc_time_t *now)
 Add the pair of addresses to the unreachable cache.
void dns_zone_forcereload (dns_zone_t *zone)
 Force a reload of specified zone.
isc_boolean_t dns_zone_isforced (dns_zone_t *zone)
 Check if the zone is waiting a forced reload.
isc_result_t dns_zone_setstatistics (dns_zone_t *zone, isc_boolean_t on)
 This function is obsoleted by dns_zone_setrequeststats().
isc_uint64_tdns_zone_getstatscounters (dns_zone_t *zone)
 This function is obsoleted by dns_zone_getrequeststats().
void dns_zone_setstats (dns_zone_t *zone, isc_stats_t *stats)
 Set a general zone-maintenance statistics set 'stats' for 'zone'. This function is expected to be called only on zone creation (when necessary). Once installed, it cannot be removed or replaced. Also, there is no interface to get the installed stats from the zone; the caller must keep the stats to reference (e.g. dump) it later.
void dns_zone_setrequeststats (dns_zone_t *zone, isc_stats_t *stats)
void dns_zone_setrcvquerystats (dns_zone_t *zone, dns_stats_t *stats)
 Set additional statistics sets to zone. These are attached to the zone but are not counted in the zone module; only the caller updates the counters.
isc_stats_tdns_zone_getrequeststats (dns_zone_t *zone)
dns_stats_tdns_zone_getrcvquerystats (dns_zone_t *zone)
 Get the additional statistics for zone, if one is installed.
void dns_zone_dialup (dns_zone_t *zone)
 Perform dialup-time maintenance on 'zone'.
void dns_zone_setdialup (dns_zone_t *zone, dns_dialuptype_t dialup)
 Set the dialup type of 'zone' to 'dialup'.
isc_result_t dns_zone_setkeydirectory (dns_zone_t *zone, const char *directory)
 Sets the name of the directory where private keys used for online signing of dynamic zones are found.
const char * dns_zone_getkeydirectory (dns_zone_t *zone)
 Gets the name of the directory where private keys used for online signing of dynamic zones are found.
unsigned int dns_zonemgr_getcount (dns_zonemgr_t *zmgr, int state)
 Returns the number of zones in the specified state.
isc_result_t dns_zone_checknames (dns_zone_t *zone, dns_name_t *name, dns_rdata_t *rdata)
 Check if this record meets the check-names policy.
void dns_zone_setcheckmx (dns_zone_t *zone, dns_checkmxfunc_t checkmx)
 Set the post load integrity callback function 'checkmx'. 'checkmx' will be called if the MX TARGET is not within the zone.
void dns_zone_setchecksrv (dns_zone_t *zone, dns_checksrvfunc_t checksrv)
 Set the post load integrity callback function 'checksrv'. 'checksrv' will be called if the SRV TARGET is not within the zone.
void dns_zone_setcheckns (dns_zone_t *zone, dns_checknsfunc_t checkns)
 Set the post load integrity callback function 'checkns'. 'checkns' will be called if the NS TARGET is not within the zone.
void dns_zone_setisself (dns_zone_t *zone, dns_isselffunc_t isself, void *arg)
 Set the isself callback function and argument.
void dns_zone_setnotifydelay (dns_zone_t *zone, isc_uint32_t delay)
 Set the minimum delay between sets of notify messages.
isc_uint32_t dns_zone_getnotifydelay (dns_zone_t *zone)
 Get the minimum delay between sets of notify messages.
isc_result_t dns_zone_signwithkey (dns_zone_t *zone, dns_secalg_t algorithm, isc_uint16_t keyid, isc_boolean_t delete)
 Initiate/resume signing of the entire zone with the zone DNSKEY(s) that match the given algorithm and keyid.
isc_result_t dns_zone_addnsec3chain (dns_zone_t *zone, dns_rdata_nsec3param_t *nsec3param)
 Incrementally add a NSEC3 chain that corresponds to 'nsec3param'.
void dns_zone_setnodes (dns_zone_t *zone, isc_uint32_t nodes)
 Set the number of nodes that will be checked per quantum.
void dns_zone_setsignatures (dns_zone_t *zone, isc_uint32_t signatures)
 Set the number of signatures that will be generated per quantum.
isc_uint32_t dns_zone_getsignatures (dns_zone_t *zone)
 Get the number of signatures that will be generated per quantum.
void dns_zone_setprivatetype (dns_zone_t *zone, dns_rdatatype_t type)
dns_rdatatype_t dns_zone_getprivatetype (dns_zone_t *zone)
static void logmsg (const char *format,...)
static void clear_keylist (dns_dnsseckeylist_t *list, isc_mem_t *mctx)
static isc_result_t next_keyevent (dst_key_t *key, isc_stdtime_t *timep)
static isc_result_t rr_exists (dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, const dns_rdata_t *rdata, isc_boolean_t *flag)
static isc_result_t add_signing_records (dns_db_t *db, dns_rdatatype_t privatetype, dns_dbversion_t *ver, dns_diff_t *diff, isc_boolean_t sign_all)
static isc_result_t sign_apex (dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_diff_t *diff, zonediff_t *zonediff)
static isc_boolean_t dnskey_sane (dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_diff_t *diff)
static isc_result_t clean_nsec3param (dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_diff_t *diff)
static isc_boolean_t signed_with_alg (dns_rdataset_t *rdataset, dns_secalg_t alg)
static isc_result_t add_chains (dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver, dns_diff_t *diff)
void dns_zone_rekey (dns_zone_t *zone, isc_boolean_t fullsign)
 Update the zone's DNSKEY set from the key repository.
isc_result_t dns_zone_nscheck (dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *version, unsigned int *errors)
void dns_zone_setautomatic (dns_zone_t *zone, isc_boolean_t automatic)
 Returns ISC_TRUE if the zone was originally added at runtime using "rndc addzone".
isc_boolean_t dns_zone_getautomatic (dns_zone_t *zone)
 Sets the value of zone->automatic, which should be ISC_TRUE for zones that were automatically added by named.
void dns_zone_setadded (dns_zone_t *zone, isc_boolean_t added)
 Check if the name servers for the zone are sane (have address, don't refer to CNAMEs/DNAMEs. The number of constiancy errors detected in returned in '*errors'.
isc_boolean_t dns_zone_getadded (dns_zone_t *zone)
 Sets the value of zone->added, which should be ISC_TRUE for zones that were originally added by "rndc addzone".
isc_result_t dns_zone_dlzpostload (dns_zone_t *zone, dns_db_t *db)
 Returns ISC_TRUE if the zone was added automatically by named.
isc_result_t dns_zone_setrefreshkeyinterval (dns_zone_t *zone, isc_uint32_t interval)
 Return true iff the zone is "dynamic", in the sense that the zone's master file (if any) is written by the server, rather than being updated manually and read by the server.
void dns_zone_setrequestixfr (dns_zone_t *zone, isc_boolean_t flag)
 Returns the true/false value of the request-ixfr option in the zone.
isc_boolean_t dns_zone_getrequestixfr (dns_zone_t *zone)
 Sets the request-expire option for the zone. Either true or false. The default value is determined by the setting of this option in the view.
void dns_zone_setrequestexpire (dns_zone_t *zone, isc_boolean_t flag)
 Returns the true/false value of the request-expire option in the zone.
isc_boolean_t dns_zone_getrequestexpire (dns_zone_t *zone)
 Sets the frequency, in minutes, with which the key repository will be checked to see if the keys for this zone have been updated. Any value higher than 1440 minutes (24 hours) will be silently reduced. A value of zero will return an out-of-range error.
void dns_zone_setserialupdatemethod (dns_zone_t *zone, dns_updatemethod_t method)
 Sets the request-ixfr option for the zone. Either true or false. The default value is determined by the setting of this option in the view.
dns_updatemethod_t dns_zone_getserialupdatemethod (dns_zone_t *zone)
 Sets the update method to use when incrementing the zone serial number due to a DDNS update. Valid options are dns_updatemethod_increment and dns_updatemethod_unixtime.
isc_result_t dns_zone_link (dns_zone_t *zone, dns_zone_t *raw)
 Returns the update method to be used when incrementing the zone serial number due to a DDNS update.
void dns_zone_getraw (dns_zone_t *zone, dns_zone_t **raw)
static void keydone (isc_task_t *task, isc_event_t *event)
isc_result_t dns_zone_keydone (dns_zone_t *zone, const char *keystr)
static void setnsec3param (isc_task_t *task, isc_event_t *event)
isc_result_t dns_zone_setnsec3param (dns_zone_t *zone, isc_uint8_t hash, isc_uint8_t flags, isc_uint16_t iter, isc_uint8_t saltlen, unsigned char *salt, isc_boolean_t replace)
isc_result_t dns_zone_getloadtime (dns_zone_t *zone, isc_time_t *loadtime)
 Force the managed key zone to synchronize, and start the key maintenance timer.
isc_result_t dns_zone_getexpiretime (dns_zone_t *zone, isc_time_t *expiretime)
 Return the time when the (slave) zone will need to be refreshed.
isc_result_t dns_zone_getrefreshtime (dns_zone_t *zone, isc_time_t *refreshtime)
 Return the time when the zone was last loaded.
isc_result_t dns_zone_getrefreshkeytime (dns_zone_t *zone, isc_time_t *refreshkeytime)
 Return the time when the (slave) zone will expire.
unsigned int dns_zone_getincludes (dns_zone_t *zone, char ***includesp)
 Return the time of the next scheduled DNSSEC key event.
void dns_zone_setstatlevel (dns_zone_t *zone, dns_zonestat_level_t level)
dns_zonestat_level_t dns_zone_getstatlevel (dns_zone_t *zone)
static void setserial (isc_task_t *task, isc_event_t *event)
isc_result_t dns_zone_setserial (dns_zone_t *zone, isc_uint32_t serial)
 Set and get the statistics reporting level for the zone; full, terse, or none.

Variables

unsigned int dns_zone_mkey_hour = HOUR
unsigned int dns_zone_mkey_day = DAY
unsigned int dns_zone_mkey_month = MONTH
static const unsigned int dbargc_default = 1
static const char * dbargv_default [] = { "rbt" }
static const char * hex = "0123456789ABCDEF"


Detailed Description

Definition in file zone.c.


Define Documentation

#define ZONE_MAGIC   ISC_MAGIC('Z', 'O', 'N', 'E')

Definition at line 89 of file zone.c.

Referenced by dns_zone_create().

#define DNS_ZONE_VALID ( zone   )     ISC_MAGIC_VALID(zone, ZONE_MAGIC)

Definition at line 90 of file zone.c.

Referenced by cancel_refresh(), default_journal(), dns__zone_loadpending(), dns_zone_addnsec3chain(), dns_zone_asyncload(), dns_zone_attach(), dns_zone_clearforwardacl(), dns_zone_clearnotifyacl(), dns_zone_clearqueryacl(), dns_zone_clearqueryonacl(), dns_zone_clearupdateacl(), dns_zone_clearxfracl(), dns_zone_detach(), dns_zone_dump(), dns_zone_expire(), dns_zone_flush(), dns_zone_forwardupdate(), dns_zone_getaltxfrsource4(), dns_zone_getaltxfrsource4dscp(), dns_zone_getaltxfrsource6(), dns_zone_getaltxfrsource6dscp(), dns_zone_getchecknames(), dns_zone_getclass(), dns_zone_getdb(), dns_zone_getdbtype(), dns_zone_getfile(), dns_zone_getforwardacl(), dns_zone_getidlein(), dns_zone_getidleout(), dns_zone_getjournal(), dns_zone_getjournalsize(), dns_zone_getkeyopts(), dns_zone_getmaxttl(), dns_zone_getmaxxfrin(), dns_zone_getmaxxfrout(), dns_zone_getmctx(), dns_zone_getmgr(), dns_zone_getnotifyacl(), dns_zone_getnotifysrc4(), dns_zone_getnotifysrc4dscp(), dns_zone_getnotifysrc6(), dns_zone_getnotifysrc6dscp(), dns_zone_getoptions(), dns_zone_getoptions2(), dns_zone_getorigin(), dns_zone_getqueryacl(), dns_zone_getqueryonacl(), dns_zone_getserial2(), dns_zone_getsigresigninginterval(), dns_zone_getsigvalidityinterval(), dns_zone_getssutable(), dns_zone_gettask(), dns_zone_gettype(), dns_zone_getupdateacl(), dns_zone_getupdatedisabled(), dns_zone_getview(), dns_zone_getxfracl(), dns_zone_getxfrsource4(), dns_zone_getxfrsource4dscp(), dns_zone_getxfrsource6(), dns_zone_getxfrsource6dscp(), dns_zone_getzeronosoattl(), dns_zone_iattach(), dns_zone_idetach(), dns_zone_isdynamic(), dns_zone_link(), dns_zone_maintenance(), dns_zone_name(), dns_zone_next(), dns_zone_notify(), dns_zone_notifyreceive(), dns_zone_refresh(), dns_zone_replacedb(), dns_zone_setacache(), dns_zone_setalsonotifydscpkeys(), dns_zone_setaltxfrsource4(), dns_zone_setaltxfrsource4dscp(), dns_zone_setaltxfrsource6(), dns_zone_setaltxfrsource6dscp(), dns_zone_setchecknames(), dns_zone_setclass(), dns_zone_setdb(), dns_zone_setdbtype(), dns_zone_setfile3(), dns_zone_setflag(), dns_zone_setforwardacl(), dns_zone_setidlein(), dns_zone_setidleout(), dns_zone_setjournal(), dns_zone_setjournalsize(), dns_zone_setkeyopt(), dns_zone_setmasterswithkeys(), dns_zone_setmaxrefreshtime(), dns_zone_setmaxretrytime(), dns_zone_setmaxttl(), dns_zone_setmaxxfrin(), dns_zone_setmaxxfrout(), dns_zone_setminrefreshtime(), dns_zone_setminretrytime(), dns_zone_setnotifyacl(), dns_zone_setnotifysrc4(), dns_zone_setnotifysrc4dscp(), dns_zone_setnotifysrc6(), dns_zone_setnotifysrc6dscp(), dns_zone_setnotifytype(), dns_zone_setoption(), dns_zone_setoption2(), dns_zone_setorigin(), dns_zone_setqueryacl(), dns_zone_setqueryonacl(), dns_zone_setsigresigninginterval(), dns_zone_setsigvalidityinterval(), dns_zone_setssutable(), dns_zone_settask(), dns_zone_settype(), dns_zone_setupdateacl(), dns_zone_setupdatedisabled(), dns_zone_setview(), dns_zone_setxfracl(), dns_zone_setxfrsource4(), dns_zone_setxfrsource4dscp(), dns_zone_setxfrsource6(), dns_zone_setxfrsource6dscp(), dns_zone_setzeronosoattl(), dns_zone_unload(), dns_zonemgr_managezone(), dns_zonemgr_releasezone(), dump_done(), dumptostream(), forward_callback(), inline_raw(), inline_secure(), keydone(), notify_createmessage(), ns_query(), refresh_callback(), restore_nsec3param(), save_nsec3param(), soa_query(), sync_secure_db(), zone_asyncload(), zone_dump(), zone_free(), zone_gotwritehandle(), zone_iattach(), zone_idetach(), zone_load(), zone_maintenance(), zone_needdump(), zone_notify(), zone_registerinclude(), zone_replacedb(), zone_settimer(), zone_shutdown(), zone_timer(), zone_touched(), and zone_xfrdone().

#define NOTIFY_MAGIC   ISC_MAGIC('N', 't', 'f', 'y')

Definition at line 92 of file zone.c.

Referenced by notify_create().

#define DNS_NOTIFY_VALID ( notify   )     ISC_MAGIC_VALID(notify, NOTIFY_MAGIC)

Definition at line 93 of file zone.c.

Referenced by notify_destroy(), notify_done(), notify_find_address(), notify_send(), notify_send_toaddr(), and process_adb_event().

#define STUB_MAGIC   ISC_MAGIC('S', 't', 'u', 'b')

Definition at line 95 of file zone.c.

Referenced by ns_query().

#define DNS_STUB_VALID ( stub   )     ISC_MAGIC_VALID(stub, STUB_MAGIC)

Definition at line 96 of file zone.c.

Referenced by ns_query(), and stub_callback().

#define ZONEMGR_MAGIC   ISC_MAGIC('Z', 'm', 'g', 'r')

Definition at line 98 of file zone.c.

Referenced by dns_zonemgr_create().

#define DNS_ZONEMGR_VALID ( stub   )     ISC_MAGIC_VALID(stub, ZONEMGR_MAGIC)

Definition at line 99 of file zone.c.

Referenced by dns_zone_first(), dns_zonemgr_attach(), dns_zonemgr_createzone(), dns_zonemgr_detach(), dns_zonemgr_forcemaint(), dns_zonemgr_getiolimit(), dns_zonemgr_getttransfersin(), dns_zonemgr_getttransfersperns(), dns_zonemgr_managezone(), dns_zonemgr_releasezone(), dns_zonemgr_resumexfrs(), dns_zonemgr_setiolimit(), dns_zonemgr_setsize(), dns_zonemgr_settransfersin(), dns_zonemgr_settransfersperns(), dns_zonemgr_shutdown(), and zonemgr_getio().

#define LOAD_MAGIC   ISC_MAGIC('L', 'o', 'a', 'd')

Definition at line 101 of file zone.c.

Referenced by zone_startload().

#define DNS_LOAD_VALID ( load   )     ISC_MAGIC_VALID(load, LOAD_MAGIC)

Definition at line 102 of file zone.c.

Referenced by zone_gotreadhandle(), and zone_loaddone().

#define FORWARD_MAGIC   ISC_MAGIC('F', 'o', 'r', 'w')

Definition at line 104 of file zone.c.

Referenced by dns_zone_forwardupdate().

#define DNS_FORWARD_VALID ( load   )     ISC_MAGIC_VALID(load, FORWARD_MAGIC)

Definition at line 105 of file zone.c.

Referenced by forward_callback().

#define IO_MAGIC   ISC_MAGIC('Z', 'm', 'I', 'O')

Definition at line 107 of file zone.c.

Referenced by zonemgr_getio().

#define DNS_IO_VALID ( load   )     ISC_MAGIC_VALID(load, IO_MAGIC)

Definition at line 108 of file zone.c.

Referenced by zonemgr_cancelio(), and zonemgr_putio().

#define RANGE ( a,
min,
max   )     (((a) < (min)) ? (min) : ((a) < (max) ? (a) : (max)))

Ensure 'a' is at least 'min' but not more than 'max'.

Definition at line 113 of file zone.c.

#define NSEC3REMOVE (  )     (((x) & DNS_NSEC3FLAG_REMOVE) != 0)

Definition at line 116 of file zone.c.

Referenced by need_nsec_chain(), save_nsec3param(), and zone_nsec3chain().

#define REVOKE (  )     ((dst_key_flags(x) & DNS_KEYFLAG_REVOKE) != 0)

Key flags.

Definition at line 121 of file zone.c.

#define KSK (  )     ((dst_key_flags(x) & DNS_KEYFLAG_KSK) != 0)

Definition at line 122 of file zone.c.

#define ALG (  )     dst_key_alg(x)

Definition at line 123 of file zone.c.

#define DNS_DEFAULT_IDLEIN   3600

1 hour

Definition at line 128 of file zone.c.

Referenced by dns_zone_create(), and dns_zone_setidlein().

#define DNS_DEFAULT_IDLEOUT   3600

1 hour

Definition at line 129 of file zone.c.

Referenced by dns_zone_create().

#define MAX_XFER_TIME   (2*3600)

Documented default is 2 hours.

Definition at line 130 of file zone.c.

Referenced by dns_zone_create().

#define RESIGN_DELAY   3600

1 hour

Definition at line 131 of file zone.c.

#define DNS_MAX_EXPIRE   14515200

24 weeks

Definition at line 134 of file zone.c.

Referenced by stub_callback(), zone_postload(), and zone_xfrdone().

#define DNS_DUMP_DELAY   900

15 minutes

Definition at line 138 of file zone.c.

Referenced by dns_zone_markdirty(), dump_done(), receive_secure_serial(), setmodtime(), zone_dump(), zone_nsec3chain(), zone_postload(), zone_replacedb(), zone_resigninc(), zone_sign(), and zone_xfrdone().

#define DNS_ZONE_CHECKLOCK

#define LOCK_ZONE (  ) 

Value:

do { LOCK(&(z)->lock); \
              INSIST((z)->locked == ISC_FALSE); \
             (z)->locked = ISC_TRUE; \
                } while (0)

Referenced by dns_zone_addnsec3chain(), dns_zone_asyncload(), dns_zone_clearforwardacl(), dns_zone_clearnotifyacl(), dns_zone_clearqueryacl(), dns_zone_clearqueryonacl(), dns_zone_clearupdateacl(), dns_zone_clearxfracl(), dns_zone_detach(), dns_zone_dump(), dns_zone_expire(), dns_zone_flush(), dns_zone_getdbtype(), dns_zone_getserial2(), dns_zone_getssutable(), dns_zone_iattach(), dns_zone_idetach(), dns_zone_link(), dns_zone_maintenance(), dns_zone_markdirty(), dns_zone_notify(), dns_zone_notifyreceive(), dns_zone_refresh(), dns_zone_replacedb(), dns_zone_rpz_enable(), dns_zone_setacache(), dns_zone_setalsonotifydscpkeys(), dns_zone_setaltxfrsource4(), dns_zone_setaltxfrsource4dscp(), dns_zone_setaltxfrsource6(), dns_zone_setaltxfrsource6dscp(), dns_zone_setclass(), dns_zone_setdbtype(), dns_zone_setfile3(), dns_zone_setflag(), dns_zone_setforwardacl(), dns_zone_setjournal(), dns_zone_setkeyopt(), dns_zone_setmasterswithkeys(), dns_zone_setmaxttl(), dns_zone_setnotifyacl(), dns_zone_setnotifysrc4(), dns_zone_setnotifysrc4dscp(), dns_zone_setnotifysrc6(), dns_zone_setnotifysrc6dscp(), dns_zone_setnotifytype(), dns_zone_setoption(), dns_zone_setoption2(), dns_zone_setorigin(), dns_zone_setqueryacl(), dns_zone_setqueryonacl(), dns_zone_setrawdata(), dns_zone_setsigresigninginterval(), dns_zone_setssutable(), dns_zone_settask(), dns_zone_settype(), dns_zone_setupdateacl(), dns_zone_setview(), dns_zone_setxfracl(), dns_zone_setxfrsource4(), dns_zone_setxfrsource4dscp(), dns_zone_setxfrsource6(), dns_zone_setxfrsource6dscp(), dns_zone_synckeyzone(), dns_zone_unload(), dns_zonemgr_managezone(), dns_zonemgr_releasezone(), dns_zonemgr_shutdown(), dump_done(), got_transfer_quota(), keydone(), keyfetch_done(), notify_destroy(), notify_find_address(), notify_send_toaddr(), process_adb_event(), queue_xfrin(), receive_secure_db(), receive_secure_serial(), refresh_callback(), sendtomaster(), soa_query(), stub_callback(), zmgr_start_xfrin_ifquota(), zone_asyncload(), zone_dump(), zone_gotwritehandle(), zone_load(), zone_loaddone(), zone_maintenance(), zone_notify(), zone_nsec3chain(), zone_refreshkeys(), zone_resigninc(), zone_shutdown(), zone_sign(), and zone_xfrdone().

#define UNLOCK_ZONE (  )     do { (z)->locked = ISC_FALSE; UNLOCK(&(z)->lock); } while (0)

Referenced by dns_zone_addnsec3chain(), dns_zone_asyncload(), dns_zone_clearforwardacl(), dns_zone_clearnotifyacl(), dns_zone_clearqueryacl(), dns_zone_clearqueryonacl(), dns_zone_clearupdateacl(), dns_zone_clearxfracl(), dns_zone_detach(), dns_zone_dump(), dns_zone_expire(), dns_zone_flush(), dns_zone_getdbtype(), dns_zone_getserial2(), dns_zone_getssutable(), dns_zone_iattach(), dns_zone_idetach(), dns_zone_link(), dns_zone_maintenance(), dns_zone_markdirty(), dns_zone_notify(), dns_zone_notifyreceive(), dns_zone_refresh(), dns_zone_replacedb(), dns_zone_rpz_enable(), dns_zone_setacache(), dns_zone_setalsonotifydscpkeys(), dns_zone_setaltxfrsource4(), dns_zone_setaltxfrsource4dscp(), dns_zone_setaltxfrsource6(), dns_zone_setaltxfrsource6dscp(), dns_zone_setclass(), dns_zone_setdbtype(), dns_zone_setfile3(), dns_zone_setflag(), dns_zone_setforwardacl(), dns_zone_setjournal(), dns_zone_setkeyopt(), dns_zone_setmasterswithkeys(), dns_zone_setmaxttl(), dns_zone_setnotifyacl(), dns_zone_setnotifysrc4(), dns_zone_setnotifysrc4dscp(), dns_zone_setnotifysrc6(), dns_zone_setnotifysrc6dscp(), dns_zone_setnotifytype(), dns_zone_setoption(), dns_zone_setoption2(), dns_zone_setorigin(), dns_zone_setqueryacl(), dns_zone_setqueryonacl(), dns_zone_setrawdata(), dns_zone_setsigresigninginterval(), dns_zone_setssutable(), dns_zone_settask(), dns_zone_settype(), dns_zone_setupdateacl(), dns_zone_setview(), dns_zone_setxfracl(), dns_zone_setxfrsource4(), dns_zone_setxfrsource4dscp(), dns_zone_setxfrsource6(), dns_zone_setxfrsource6dscp(), dns_zone_synckeyzone(), dns_zone_unload(), dns_zonemgr_managezone(), dns_zonemgr_releasezone(), dns_zonemgr_shutdown(), dump_done(), got_transfer_quota(), keydone(), keyfetch_done(), notify_destroy(), notify_find_address(), notify_send_toaddr(), process_adb_event(), queue_xfrin(), receive_secure_db(), receive_secure_serial(), refresh_callback(), sendtomaster(), soa_query(), stub_callback(), zmgr_start_xfrin_ifquota(), zone_asyncload(), zone_dump(), zone_gotwritehandle(), zone_load(), zone_loaddone(), zone_maintenance(), zone_notify(), zone_nsec3chain(), zone_refreshkeys(), zone_resigninc(), zone_shutdown(), zone_sign(), and zone_xfrdone().

#define LOCKED_ZONE (  )     ((z)->locked)

Referenced by cancel_refresh(), default_journal(), exit_check(), forward_cancel(), notify_cancel(), notify_destroy(), notify_send(), ns_query(), queue_soa_query(), was_dumping(), zone_expire(), zone_free(), zone_iattach(), zone_idetach(), zone_needdump(), zone_postload(), zone_replacedb(), zone_send_securedb(), zone_send_secureserial(), and zone_unload().

#define TRYLOCK_ZONE ( result,
 ) 

Value:

do { \
              result = isc_mutex_trylock(&(z)->lock); \
              if (result == ISC_R_SUCCESS) {  \
                     INSIST((z)->locked == ISC_FALSE); \
                     (z)->locked = ISC_TRUE; \
              } \
        } while (0)

Referenced by dns_zone_markdirty(), dns_zone_replacedb(), zone_loaddone(), and zone_xfrdone().

#define ZONEDB_INITLOCK (  )     isc_mutex_init(l)

Referenced by dns_zone_create().

#define ZONEDB_DESTROYLOCK (  )     DESTROYLOCK(l)

Referenced by dns_zone_create(), and zone_free().

#define ZONEDB_LOCK ( l,
 )     LOCK(l)

Referenced by dns_zone_getdb(), dns_zone_getserial2(), dns_zone_markdirty(), dns_zone_replacedb(), dns_zone_setacache(), dns_zone_setdb(), dns_zone_settask(), dumptostream(), got_transfer_quota(), keydone(), notify_createmessage(), ns_query(), receive_secure_db(), receive_secure_serial(), resume_addnsec3chain(), resume_signingwithkey(), set_resigntime(), stub_callback(), zone_addnsec3chain(), zone_dump(), zone_gotwritehandle(), zone_load(), zone_notify(), zone_nsec3chain(), zone_postload(), zone_refreshkeys(), zone_resigninc(), zone_sign(), zone_unload(), and zone_xfrdone().

#define ZONEDB_UNLOCK ( l,
 )     UNLOCK(l)

Referenced by dns_zone_getdb(), dns_zone_getserial2(), dns_zone_markdirty(), dns_zone_replacedb(), dns_zone_setacache(), dns_zone_setdb(), dns_zone_settask(), dumptostream(), got_transfer_quota(), keydone(), notify_createmessage(), ns_query(), receive_secure_db(), receive_secure_serial(), resume_addnsec3chain(), resume_signingwithkey(), set_resigntime(), stub_callback(), zone_addnsec3chain(), zone_dump(), zone_gotwritehandle(), zone_load(), zone_notify(), zone_nsec3chain(), zone_postload(), zone_refreshkeys(), zone_resigninc(), zone_sign(), zone_unload(), and zone_xfrdone().

#define zonediff_init ( z,
 ) 

Value:

do { \
                zonediff_t *_z = (z); \
                (_z)->diff = (d); \
                (_z)->offline = ISC_FALSE; \
        } while (0)

Definition at line 431 of file zone.c.

Referenced by zone_nsec3chain(), zone_resigninc(), and zone_sign().

#define DNS_ZONE_FLAG ( z,
 )     (ISC_TF(((z)->flags & (f)) != 0))

Definition at line 438 of file zone.c.

Referenced by dns__zone_loadpending(), dns_zone_asyncload(), dns_zone_flush(), dns_zone_notifyreceive(), dns_zone_refresh(), dump_done(), exit_check(), got_transfer_quota(), keyfetch_done(), notify_send_toaddr(), ns_query(), queue_soa_query(), receive_secure_db(), refresh_callback(), sendtomaster(), setmodtime(), soa_query(), stub_callback(), sync_keyzone(), was_dumping(), zmgr_start_xfrin_ifquota(), zone_asyncload(), zone_dump(), zone_load(), zone_loaddone(), zone_maintenance(), zone_needdump(), zone_notify(), zone_postload(), zone_refreshkeys(), zone_replacedb(), zone_settimer(), zone_shutdown(), zone_unload(), and zone_xfrdone().

#define DNS_ZONE_SETFLAG ( z,
 ) 

Value:

do { \
                INSIST(LOCKED_ZONE(z)); \
                (z)->flags |= (f); \
                } while (0)

Definition at line 439 of file zone.c.

Referenced by dns_zone_asyncload(), dns_zone_flush(), dns_zone_notify(), dns_zone_notifyreceive(), dns_zone_refresh(), dns_zone_setflag(), dump_done(), keydone(), keyfetch_done(), maybe_send_secure(), ns_query(), receive_secure_db(), receive_secure_serial(), refresh_callback(), soa_query(), stub_callback(), sync_keyzone(), was_dumping(), zone_dump(), zone_expire(), zone_load(), zone_needdump(), zone_nsec3chain(), zone_postload(), zone_refreshkeys(), zone_replacedb(), zone_resigninc(), zone_shutdown(), zone_sign(), and zone_xfrdone().

#define DNS_ZONE_CLRFLAG ( z,
 ) 

Value:

do { \
                INSIST(LOCKED_ZONE(z)); \
                (z)->flags &= ~(f); \
                } while (0)

Definition at line 443 of file zone.c.

Referenced by cancel_refresh(), dns_zone_refresh(), dns_zone_setflag(), dns_zone_setmasterswithkeys(), dump_done(), got_transfer_quota(), keyfetch_done(), refresh_callback(), soa_query(), stub_callback(), was_dumping(), zone_asyncload(), zone_dump(), zone_expire(), zone_loaddone(), zone_notify(), zone_postload(), zone_refreshkeys(), zone_send_securedb(), zone_send_secureserial(), zone_unload(), and zone_xfrdone().

#define DNS_ZONEFLG_REFRESH   0x00000001U

refresh check in progress

Definition at line 448 of file zone.c.

Referenced by cancel_refresh(), dns_zone_notifyreceive(), dns_zone_refresh(), refresh_callback(), soa_query(), stub_callback(), zone_settimer(), and zone_xfrdone().

#define DNS_ZONEFLG_NEEDDUMP   0x00000002U

zone need consolidation

Definition at line 449 of file zone.c.

Referenced by dns_zone_flush(), dump_done(), setmodtime(), was_dumping(), zone_dump(), zone_maintenance(), zone_needdump(), zone_settimer(), and zone_unload().

#define DNS_ZONEFLG_USEVC   0x00000004U

use tcp for refresh query

Definition at line 450 of file zone.c.

Referenced by refresh_callback(), soa_query(), and stub_callback().

#define DNS_ZONEFLG_DUMPING   0x00000008U

a dump is in progress

Definition at line 451 of file zone.c.

Referenced by dump_done(), was_dumping(), zone_dump(), zone_settimer(), zone_shutdown(), and zone_unload().

#define DNS_ZONEFLG_HASINCLUDE   0x00000010U

$INCLUDE in zone file

Definition at line 452 of file zone.c.

Referenced by zone_postload().

#define DNS_ZONEFLG_LOADED   0x00000020U

database has loaded

Definition at line 453 of file zone.c.

Referenced by dns_zone_notifyreceive(), dump_done(), keydone(), keyfetch_done(), notify_send_toaddr(), refresh_callback(), stub_callback(), sync_keyzone(), zone_dump(), zone_load(), zone_maintenance(), zone_needdump(), zone_notify(), zone_postload(), zone_refreshkeys(), zone_replacedb(), zone_settimer(), and zone_unload().

#define DNS_ZONEFLG_EXITING   0x00000040U

zone is being destroyed

Definition at line 454 of file zone.c.

Referenced by dns_zone_refresh(), got_transfer_quota(), keyfetch_done(), notify_send_toaddr(), queue_soa_query(), receive_secure_db(), refresh_callback(), sendtomaster(), soa_query(), stub_callback(), zmgr_start_xfrin_ifquota(), zone_refreshkeys(), zone_settimer(), zone_shutdown(), and zone_xfrdone().

#define DNS_ZONEFLG_EXPIRED   0x00000080U

zone has expired

Definition at line 455 of file zone.c.

Referenced by zone_expire().

#define DNS_ZONEFLG_NEEDREFRESH   0x00000100U

refresh check needed

Definition at line 456 of file zone.c.

Referenced by dns_zone_notifyreceive(), refresh_callback(), and zone_xfrdone().

#define DNS_ZONEFLG_UPTODATE   0x00000200U

zone contents are uptodate

Definition at line 457 of file zone.c.

#define DNS_ZONEFLG_NEEDNOTIFY   0x00000400U

need to send out notify messages

Definition at line 459 of file zone.c.

Referenced by dns_zone_notify(), receive_secure_db(), receive_secure_serial(), zone_maintenance(), zone_notify(), zone_nsec3chain(), zone_replacedb(), zone_resigninc(), zone_settimer(), zone_sign(), and zone_xfrdone().

#define DNS_ZONEFLG_DIFFONRELOAD   0x00000800U

generate a journal diff on reload

Definition at line 461 of file zone.c.

#define DNS_ZONEFLG_NOMASTERS   0x00001000U

an attempt to refresh a zone with no masters occurred

Definition at line 463 of file zone.c.

Referenced by dns_zone_refresh(), dns_zone_setmasterswithkeys(), and zone_settimer().

#define DNS_ZONEFLG_LOADING   0x00002000U

load from disk in progress

Definition at line 466 of file zone.c.

Referenced by dns_zone_refresh(), zone_load(), zone_loaddone(), and zone_settimer().

#define DNS_ZONEFLG_HAVETIMERS   0x00004000U

timer values have been set from SOA (if not set, we are still using default timer values)

Definition at line 467 of file zone.c.

Referenced by dns_zone_refresh(), stub_callback(), zone_expire(), zone_postload(), and zone_xfrdone().

#define DNS_ZONEFLG_FORCEXFER   0x00008000U

Force a zone xfer.

Definition at line 471 of file zone.c.

Referenced by got_transfer_quota(), refresh_callback(), zone_replacedb(), and zone_xfrdone().

#define DNS_ZONEFLG_NOREFRESH   0x00010000U

Definition at line 472 of file zone.c.

Referenced by dns_zone_notifyreceive(), and zone_settimer().

#define DNS_ZONEFLG_DIALNOTIFY   0x00020000U

Definition at line 473 of file zone.c.

Referenced by notify_send_toaddr(), and zone_notify().

#define DNS_ZONEFLG_DIALREFRESH   0x00040000U

Definition at line 474 of file zone.c.

Referenced by ns_query(), soa_query(), and zone_maintenance().

#define DNS_ZONEFLG_SHUTDOWN   0x00080000U

Definition at line 475 of file zone.c.

Referenced by exit_check(), and zone_shutdown().

#define DNS_ZONEFLAG_NOIXFR   0x00100000U

IXFR failed, force AXFR.

Definition at line 476 of file zone.c.

Referenced by got_transfer_quota(), and zone_xfrdone().

#define DNS_ZONEFLG_FLUSH   0x00200000U

Definition at line 477 of file zone.c.

Referenced by dns_zone_flush(), dump_done(), zone_dump(), zone_shutdown(), and zone_unload().

#define DNS_ZONEFLG_NOEDNS   0x00400000U

Definition at line 478 of file zone.c.

Referenced by dns_zone_refresh(), ns_query(), refresh_callback(), soa_query(), and stub_callback().

#define DNS_ZONEFLG_USEALTXFRSRC   0x00800000U

Definition at line 479 of file zone.c.

Referenced by dns_zone_refresh(), ns_query(), refresh_callback(), soa_query(), stub_callback(), and zone_xfrdone().

#define DNS_ZONEFLG_SOABEFOREAXFR   0x01000000U

Definition at line 480 of file zone.c.

Referenced by got_transfer_quota(), refresh_callback(), and zone_xfrdone().

#define DNS_ZONEFLG_NEEDCOMPACT   0x02000000U

Definition at line 481 of file zone.c.

Referenced by dump_done(), and zone_xfrdone().

#define DNS_ZONEFLG_REFRESHING   0x04000000U

Refreshing keydata.

Definition at line 482 of file zone.c.

Referenced by keyfetch_done(), zone_maintenance(), zone_refreshkeys(), and zone_settimer().

#define DNS_ZONEFLG_THAW   0x08000000U

Definition at line 483 of file zone.c.

Referenced by zone_load(), and zone_loaddone().

#define DNS_ZONEFLG_LOADPENDING   0x10000000U

Loading scheduled.

Definition at line 484 of file zone.c.

Referenced by dns__zone_loadpending(), dns_zone_asyncload(), zone_asyncload(), zone_maintenance(), and zone_postload().

#define DNS_ZONEFLG_NODELAY   0x20000000U

Definition at line 485 of file zone.c.

Referenced by zone_replacedb(), and zone_xfrdone().

#define DNS_ZONEFLG_SENDSECURE   0x40000000U

Definition at line 486 of file zone.c.

Referenced by maybe_send_secure(), zone_postload(), zone_send_securedb(), and zone_send_secureserial().

#define DNS_ZONEFLG_NEEDSTARTUPNOTIFY   0x80000000U

need to send out notify due to the zone just being loaded for the first time.

Definition at line 487 of file zone.c.

Referenced by zone_maintenance(), zone_notify(), zone_postload(), and zone_settimer().

#define DNS_ZONE_OPTION ( z,
 )     (((z)->options & (o)) != 0)

Definition at line 492 of file zone.c.

Referenced by check_nsec3param(), get_master_options(), integrity_checks(), refresh_callback(), stub_callback(), zone_check_glue(), zone_check_mx(), zone_check_ns(), zone_check_srv(), zone_notify(), zone_nsec3chain(), zone_postload(), zone_replacedb(), zone_resigninc(), zone_rrset_check_dup(), zone_sign(), zone_startload(), and zone_xfrdone().

#define DNS_ZONE_OPTION2 ( z,
 )     (((z)->options2 & (o)) != 0)

Definition at line 493 of file zone.c.

Referenced by get_master_options().

#define DNS_ZONEKEY_OPTION ( z,
 )     (((z)->keyopts & (o)) != 0)

Definition at line 494 of file zone.c.

Referenced by zone_postload(), and zone_resigninc().

#define DNS_ZONELOADFLAG_NOSTAT   0x00000001U

Definition at line 497 of file zone.c.

Referenced by dns_zone_loadnew(), and zone_load().

#define DNS_ZONELOADFLAG_THAW   0x00000002U

Definition at line 498 of file zone.c.

Referenced by dns_zone_loadandthaw(), and zone_load().

#define UNREACH_CHACHE_SIZE   10U

Definition at line 501 of file zone.c.

#define UNREACH_HOLD_TIME   600

Definition at line 502 of file zone.c.

#define CHECK ( op   ) 

Value:

do { result = (op); \
                if (result != ISC_R_SUCCESS) goto failure; \
        } while (0)

Definition at line 504 of file zone.c.

#define DNS_NOTIFY_NOSOA   0x0001U

Definition at line 578 of file zone.c.

Referenced by notify_createmessage(), notify_done(), notify_send(), and zone_notify().

#define DNS_NOTIFY_STARTUP   0x0002U

Definition at line 579 of file zone.c.

Referenced by notify_done(), notify_isqueued(), notify_send(), and zone_notify().

#define HOUR   3600

Definition at line 718 of file zone.c.

#define DAY   (24*HOUR)

Definition at line 719 of file zone.c.

#define MONTH   (30*DAY)

Definition at line 720 of file zone.c.

#define SEND_BUFFER_SIZE   2048

Definition at line 725 of file zone.c.

Referenced by client_allocsendbuf(), client_send(), ns_client_sendraw(), ns_query(), and soa_query().

#define ENTER   zone_debuglog(zone, me, 1, "enter")

Definition at line 818 of file zone.c.

#define DNS_ZONE_JITTER_ADD ( a,
b,
 ) 

Value:

do { \
                isc_interval_t _i; \
                isc_uint32_t _j; \
                _j = isc_random_jitter((b), (b)/4); \
                isc_interval_set(&_i, _j, 0); \
                if (isc_time_add((a), &_i, (c)) != ISC_R_SUCCESS) { \
                        dns_zone_log(zone, ISC_LOG_WARNING, \
                                     "epoch approaching: upgrade required: " \
                                     "now + %s failed", #b); \
                        isc_interval_set(&_i, _j/2, 0); \
                        (void)isc_time_add((a), &_i, (c)); \
                } \
        } while (0)

Definition at line 823 of file zone.c.

Referenced by refresh_callback(), stub_callback(), zone_needdump(), and zone_xfrdone().

#define DNS_ZONE_TIME_ADD ( a,
b,
 ) 

Value:

do { \
                isc_interval_t _i; \
                isc_interval_set(&_i, (b), 0); \
                if (isc_time_add((a), &_i, (c)) != ISC_R_SUCCESS) { \
                        dns_zone_log(zone, ISC_LOG_WARNING, \
                                     "epoch approaching: upgrade required: " \
                                     "now + %s failed", #b); \
                        isc_interval_set(&_i, (b)/2, 0); \
                        (void)isc_time_add((a), &_i, (c)); \
                } \
        } while (0)

Definition at line 838 of file zone.c.

Referenced by refresh_callback(), set_refreshkeytimer(), stub_callback(), zone_notify(), zone_postload(), zone_refreshkeys(), and zone_xfrdone().

#define ZONES_PER_TASK   100

Definition at line 15736 of file zone.c.

Referenced by dns_zonemgr_setsize().

#define ZONES_PER_MCTX   1000

Definition at line 15737 of file zone.c.

Referenced by dns_zonemgr_setsize().

#define PENDINGFLAGS   (DNS_NSEC3FLAG_CREATE|DNS_NSEC3FLAG_INITIAL)

Definition at line 17837 of file zone.c.

Referenced by keydone().


Typedef Documentation

typedef struct dns_notify dns_notify_t

Definition at line 141 of file zone.c.

typedef struct dns_stub dns_stub_t

Definition at line 142 of file zone.c.

typedef struct dns_load dns_load_t

Definition at line 143 of file zone.c.

typedef struct dns_forward dns_forward_t

Definition at line 144 of file zone.c.

typedef struct nsec3param nsec3param_t

Definition at line 851 of file zone.c.


Function Documentation

typedef ISC_LIST ( dns_forward_t   ) 

Zones in certain states such as "waiting for zone transfer" or "zone transfer in progress" are kept on per-state linked lists in the zone manager using the 'statelink' field. The 'statelist' field points at the list the zone is currently on. It the zone is not on any such list, statelist is NULL.

Statistics counters about zone management.

Optional per-zone statistics counters. Counted outside of this module.

Serial number for deferred journal compaction.

Keys that are signing the zone for the first time.

Signing / re-signing quantum stopping parameters.

Autosigning/key-maintenance options

True if added by "rndc addzone"

True if added by automatically by named.

response policy data to be relayed to the database

Serial number update method.

whether ixfr is requested

whether EDNS EXPIRE is requested

Outstanding forwarded UPDATE requests.

maximum zone ttl

Definition at line 145 of file zone.c.

References checkmx(), checkns(), checksrv(), ISC_LINK, ISC_LIST, journal, lctx, masterstyle, maxttl, mctx, notify(), origin, privatetype, rdclass, secure(), and tsigkey.

static void zone_settimer ( dns_zone_t zone,
isc_time_t now 
) [static]

Definition at line 12287 of file zone.c.

References DNS_ZONE_FLAG, dns_zone_key, dns_zone_log(), dns_zone_master, dns_zone_redirect, dns_zone_slave, dns_zone_stub, DNS_ZONE_VALID, DNS_ZONEFLG_DUMPING, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_LOADING, DNS_ZONEFLG_NEEDDUMP, DNS_ZONEFLG_NEEDNOTIFY, DNS_ZONEFLG_NEEDSTARTUPNOTIFY, DNS_ZONEFLG_NOMASTERS, DNS_ZONEFLG_NOREFRESH, DNS_ZONEFLG_REFRESH, DNS_ZONEFLG_REFRESHING, ENTER, INSIST, ISC_LOG_ERROR, ISC_R_SUCCESS, isc_result_totext(), isc_time_compare(), isc_time_isepoch(), isc_time_settoepoch(), isc_timer_reset(), isc_timertype_inactive, isc_timertype_once, ISC_TRUE, REQUIRE, and zone_debuglog().

Referenced by cancel_refresh(), dns_zone_maintenance(), dns_zone_notify(), dns_zone_setsigresigninginterval(), receive_secure_serial(), refresh_callback(), set_refreshkeytimer(), stub_callback(), zone_addnsec3chain(), zone_load(), zone_maintenance(), zone_needdump(), zone_postload(), zone_refreshkeys(), and zone_xfrdone().

static void cancel_refresh ( dns_zone_t zone  )  [static]

Definition at line 12419 of file zone.c.

References DNS_ZONE_CLRFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_REFRESH, ENTER, LOCKED_ZONE, now, REQUIRE, TIME_NOW, and zone_settimer().

Referenced by ns_query(), queue_soa_query(), and soa_query().

static void zone_debuglog ( dns_zone_t zone,
const char *  me,
int  debuglevel,
const char *  msg,
  ... 
) [static]

Definition at line 13190 of file zone.c.

References dns_lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_ZONE, dns_zone_key, dns_zone_redirect, ISC_FALSE, ISC_LOG_DEBUG, isc_log_wouldlog(), and isc_log_write().

Referenced by ns_query(), refresh_callback(), soa_query(), stub_callback(), zone_settimer(), and zone_shutdown().

static void notify_log ( dns_zone_t zone,
int  level,
const char *  fmt,
  ... 
) [static]

Definition at line 13140 of file zone.c.

References dns_lctx, DNS_LOGCATEGORY_NOTIFY, DNS_LOGMODULE_ZONE, ISC_FALSE, isc_log_wouldlog(), and isc_log_write().

Referenced by notify_done(), notify_send_toaddr(), ns_notify_start(), and zone_notify().

static void queue_xfrin ( dns_zone_t zone  )  [static]

Definition at line 14919 of file zone.c.

References DNS_LOGCATEGORY_XFER_IN, dns_zone_logc(), ENTER, INSIST, ISC_LIST_APPEND, ISC_LOG_ERROR, ISC_LOG_INFO, ISC_R_QUOTA, ISC_R_SUCCESS, isc_result_totext(), isc_rwlocktype_write, LOCK_ZONE, dns_zonemgr::rwlock, RWLOCK, RWUNLOCK, UNLOCK_ZONE, dns_zonemgr::waiting_for_xfrin, and zmgr_start_xfrin_ifquota().

Referenced by refresh_callback().

static isc_result_t update_one_rr ( dns_db_t db,
dns_dbversion_t ver,
dns_diff_t diff,
dns_diffop_t  op,
dns_name_t name,
dns_ttl_t  ttl,
dns_rdata_t rdata 
) [static]

Definition at line 3825 of file zone.c.

References dns_difftuple_create(), do_one_tuple(), ISC_R_SUCCESS, and dns_diff::mctx.

static void zone_unload ( dns_zone_t zone  )  [static]

Definition at line 10062 of file zone.c.

References dns_dumpctx_cancel(), DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, DNS_ZONEFLG_DUMPING, DNS_ZONEFLG_FLUSH, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_NEEDDUMP, isc_rwlocktype_write, LOCKED_ZONE, REQUIRE, zone_detachdb(), ZONEDB_LOCK, ZONEDB_UNLOCK, and zonemgr_cancelio().

Referenced by dns_zone_unload(), zone_expire(), and zone_xfrdone().

static void zone_expire ( dns_zone_t zone  )  [static]

Definition at line 9607 of file zone.c.

References DNS_ZONE_CLRFLAG, DNS_ZONE_DEFAULTREFRESH, DNS_ZONE_DEFAULTRETRY, dns_zone_log(), DNS_ZONE_SETFLAG, DNS_ZONEFLG_EXPIRED, DNS_ZONEFLG_HAVETIMERS, ISC_LOG_WARNING, LOCKED_ZONE, REQUIRE, and zone_unload().

Referenced by dns_zone_expire(), and zone_maintenance().

static void zone_iattach ( dns_zone_t source,
dns_zone_t **  target 
) [static]

Definition at line 5059 of file zone.c.

References DNS_ZONE_VALID, INSIST, isc_refcount_current, LOCKED_ZONE, and REQUIRE.

Referenced by dns_zone_asyncload(), dns_zone_iattach(), dns_zone_link(), notify_send(), ns_query(), queue_soa_query(), soa_query(), zone_dump(), zone_notify(), zone_send_securedb(), zone_send_secureserial(), and zone_startload().

static void zone_idetach ( dns_zone_t **  zonep  )  [static]

Definition at line 5074 of file zone.c.

References DNS_ZONE_VALID, INSIST, isc_refcount_current, LOCKED_ZONE, and REQUIRE.

Referenced by notify_destroy(), ns_query(), queue_soa_query(), soa_query(), zone_dump(), zone_loaddone(), and zone_startload().

static isc_result_t zone_replacedb ( dns_zone_t zone,
dns_db_t db,
isc_boolean_t  dump 
) [static]

Definition at line 14311 of file zone.c.

References check_nsec3param(), dns_db_closeversion(), dns_db_currentversion(), dns_db_diff(), dns_db_getsoaserial(), dns_db_rpz_ready(), dns_db_settask(), DNS_DUMP_DELAY, dns_journal_compact(), dns_lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_ZONE, DNS_R_BADZONE, dns_result_totext(), DNS_ZONE_FLAG, dns_zone_key, dns_zone_log(), dns_zone_master, DNS_ZONE_OPTION, dns_zone_redirect, DNS_ZONE_SETFLAG, dns_zone_slave, DNS_ZONE_VALID, DNS_ZONEFLG_FORCEXFER, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_NEEDNOTIFY, DNS_ZONEFLG_NODELAY, DNS_ZONEOPT_IXFRFROMDIFFS, inline_raw(), isc__strerror(), ISC_FALSE, ISC_LOG_DEBUG, ISC_LOG_ERROR, ISC_LOG_WARNING, isc_log_write(), ISC_R_NOSPACE, ISC_R_NOTFOUND, ISC_R_RANGE, ISC_R_SUCCESS, isc_serial_gt(), ISC_STRERRORSIZE, LOCKED_ZONE, REQUIRE, RUNTIME_CHECK, zone_attachdb(), zone_detachdb(), zone_get_from_db(), zone_needdump(), zone_send_securedb(), and zone_send_secureserial().

Referenced by dns_zone_replacedb(), and zone_postload().

static void zone_attachdb ( dns_zone_t zone,
dns_db_t db 
) [inline, static]

Definition at line 14500 of file zone.c.

References dns_acache_setdb(), dns_db_attach(), ISC_R_EXISTS, ISC_R_SUCCESS, isc_result_totext(), REQUIRE, and UNEXPECTED_ERROR.

Referenced by stub_callback(), zone_load(), zone_postload(), and zone_replacedb().

static void zone_detachdb ( dns_zone_t zone  )  [inline, static]

Definition at line 14517 of file zone.c.

References dns_acache_putdb(), dns_db_detach(), and REQUIRE.

Referenced by zone_free(), zone_load(), zone_replacedb(), and zone_unload().

static isc_result_t default_journal ( dns_zone_t zone  )  [static]

Definition at line 1622 of file zone.c.

References dns_zone_setstring(), DNS_ZONE_VALID, isc_mem_allocate, isc_mem_free, ISC_R_NOMEMORY, journal, LOCKED_ZONE, and REQUIRE.

Referenced by dns_zone_setfile3().

static void zone_xfrdone ( dns_zone_t zone,
isc_result_t  result 
) [static]

Definition at line 14526 of file zone.c.

References DNS_DUMP_DELAY, dns_journal_compact(), DNS_MAX_EXPIRE, dns_name_format(), DNS_NAME_FORMATSIZE, DNS_R_BADIXFR, DNS_R_UPTODATE, dns_result_totext(), dns_tsigkey_detach(), dns_xfrin_detach(), DNS_ZONE_CLRFLAG, DNS_ZONE_DEFAULTREFRESH, DNS_ZONE_DEFAULTRETRY, DNS_ZONE_FLAG, DNS_ZONE_JITTER_ADD, dns_zone_log(), DNS_ZONE_OPTION, DNS_ZONE_SETFLAG, DNS_ZONE_TIME_ADD, DNS_ZONE_VALID, DNS_ZONEFLAG_NOIXFR, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_FORCEXFER, DNS_ZONEFLG_HAVETIMERS, DNS_ZONEFLG_NEEDCOMPACT, DNS_ZONEFLG_NEEDNOTIFY, DNS_ZONEFLG_NEEDREFRESH, DNS_ZONEFLG_NODELAY, DNS_ZONEFLG_REFRESH, DNS_ZONEFLG_SOABEFOREAXFR, DNS_ZONEFLG_USEALTXFRSRC, DNS_ZONEOPT_USEALTXFRSRC, dns_zonestatscounter_xfrfail, dns_zonestatscounter_xfrsuccess, exit_check(), inc_stats(), inline_raw(), INSIST, ISC_FALSE, isc_file_settime(), ISC_LIST_UNLINK, ISC_LOG_DEBUG, ISC_LOG_ERROR, ISC_LOG_INFO, ISC_R_FAILURE, ISC_R_FILENOTFOUND, ISC_R_NOSPACE, ISC_R_NOTFOUND, ISC_R_SUCCESS, isc_rwlocktype_read, isc_rwlocktype_write, isc_thread_yield, ISC_TRUE, LOCK_ZONE, namebuf, next_master(), now, queue_soa_query(), RANGE, REQUIRE, RWLOCK, RWUNLOCK, secure(), TIME_NOW, TRYLOCK_ZONE, UNLOCK_ZONE, zmgr_resume_xfrs(), zone_free(), zone_get_from_db(), zone_needdump(), zone_send_secureserial(), zone_settimer(), zone_unload(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by got_transfer_quota().

static isc_result_t zone_postload ( dns_zone_t zone,
dns_db_t db,
isc_time_t  loadtime,
isc_result_t  result 
) [static]

Definition at line 4186 of file zone.c.

References add_soa(), check_nsec3param(), cleanup(), dns_rdataset::covers, dns_db_getsigningtime(), dns_db_ispersistent(), dns_db_issecure(), dns_db_nodecount(), dns_db_ondestroy(), dns_db_rpz_ready(), DNS_DUMP_DELAY, DNS_EVENT_DBDESTROYED, dns_fixedname_init, dns_fixedname_name, dns_journal_destroy(), dns_journal_last_serial(), dns_journal_open(), DNS_JOURNAL_READ, dns_journal_rollforward(), DNS_JOURNALOPT_RESIGN, dns_lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_ZONE, DNS_MAX_EXPIRE, dns_name_format(), DNS_NAME_FORMATSIZE, DNS_R_BADZONE, DNS_R_NOJOURNAL, DNS_R_NOMASTERFILE, DNS_R_SEENINCLUDE, DNS_R_UPTODATE, dns_rdataset_disassociate(), dns_rdataset_init(), dns_rdatatype_format(), DNS_RDATATYPE_FORMATSIZE, dns_result_totext(), DNS_ZONE_CLRFLAG, dns_zone_dlz, DNS_ZONE_FLAG, dns_zone_isdynamic(), dns_zone_key, dns_zone_log(), dns_zone_master, DNS_ZONE_OPTION, dns_zone_redirect, DNS_ZONE_SETFLAG, dns_zone_slave, dns_zone_stub, DNS_ZONE_TIME_ADD, DNS_ZONEFLG_HASINCLUDE, DNS_ZONEFLG_HAVETIMERS, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_LOADPENDING, DNS_ZONEFLG_NEEDSTARTUPNOTIFY, DNS_ZONEFLG_SENDSECURE, DNS_ZONEKEY_MAINTAIN, DNS_ZONEKEY_NORESIGN, DNS_ZONEKEY_OPTION, DNS_ZONEOPT_CHECKDUPRR, DNS_ZONEOPT_CHECKINTEGRITY, DNS_ZONEOPT_IXFRFROMDIFFS, DNS_ZONEOPT_NOMERGE, fixed, inline_raw(), inline_secure(), INSIST, integrity_checks(), isc__strerror(), isc_event_allocate(), ISC_FALSE, isc_file_getmodtime(), ISC_LIST_APPEND, ISC_LIST_HEAD, ISC_LIST_UNLINK, ISC_LOG_DEBUG, ISC_LOG_ERROR, ISC_LOG_INFO, ISC_LOG_WARNING, isc_log_write(), isc_mem_free, isc_mem_put, ISC_R_FILENOTFOUND, ISC_R_NOTFOUND, ISC_R_RANGE, ISC_R_SUCCESS, ISC_R_UNEXPECTED, isc_random_jitter(), isc_rwlocktype_write, isc_serial_ge(), isc_serial_gt(), isc_stdtime_get(), ISC_STRERRORSIZE, isc_time_compare(), ISC_TRUE, journal, LOCKED_ZONE, maybe_send_secure(), dns_db::mctx, namebuf, now, RANGE, dns_rdataset::resign, resume_addnsec3chain(), resume_signingwithkey(), RUNTIME_CHECK, set_resigntime(), sync_keyzone(), TIME_NOW, UNEXPECTED_ERROR, zone_attachdb(), zone_check_dnskeys(), zone_check_dup(), zone_get_from_db(), zone_needdump(), zone_replacedb(), zone_saveunique(), zone_send_securedb(), zone_send_secureserial(), zone_settimer(), zone_unchanged(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by receive_secure_db(), zone_load(), and zone_loaddone().

static void zone_needdump ( dns_zone_t zone,
unsigned int  delay 
) [static]

Definition at line 9722 of file zone.c.

References DNS_ZONE_FLAG, DNS_ZONE_JITTER_ADD, DNS_ZONE_SETFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_NEEDDUMP, ENTER, isc_time_compare(), isc_time_isepoch(), LOCKED_ZONE, now, REQUIRE, TIME_NOW, and zone_settimer().

Referenced by dns_zone_markdirty(), dump_done(), keydone(), keyfetch_done(), receive_secure_db(), receive_secure_serial(), setmodtime(), stub_callback(), sync_keyzone(), zone_dump(), zone_nsec3chain(), zone_postload(), zone_refreshkeys(), zone_replacedb(), zone_resigninc(), zone_sign(), and zone_xfrdone().

static void zone_shutdown ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 12157 of file zone.c.

References dns_dumpctx_cancel(), DNS_EVENT_ZONECONTROL, dns_loadctx_cancel(), dns_request_cancel(), dns_view_weakdetach(), dns_xfrin_shutdown(), dns_zone_detach(), DNS_ZONE_FLAG, dns_zone_idetach(), DNS_ZONE_SETFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_DUMPING, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_FLUSH, DNS_ZONEFLG_SHUTDOWN, dns_zonemgr_releasezone(), exit_check(), forward_cancel(), inline_raw(), inline_secure(), INSIST, ISC_FALSE, ISC_LIST_UNLINK, isc_refcount_current, isc_rwlocktype_write, isc_timer_detach(), ISC_TRUE, LOCK_ZONE, notify_cancel(), REQUIRE, RWLOCK, RWUNLOCK, secure(), UNLOCK_ZONE, UNUSED, zmgr_resume_xfrs(), zone_debuglog(), zone_free(), and zonemgr_cancelio().

Referenced by dns_zone_create().

static void zone_loaddone ( void *  arg,
isc_result_t  result 
) [static]

Definition at line 14795 of file zone.c.

References dns_load::callbacks, dns_load::db, dns_db_detach(), dns_db_endload(), DNS_LOAD_VALID, dns_loadctx_detach(), DNS_R_SEENINCLUDE, DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_idetach(), DNS_ZONEFLG_LOADING, DNS_ZONEFLG_THAW, ENTER, inline_raw(), inline_secure(), INSIST, ISC_FALSE, isc_mem_putanddetach, ISC_R_SUCCESS, isc_thread_yield, load(), dns_load::loadtime, LOCK_ZONE, dns_load::magic, dns_load::mctx, REQUIRE, secure(), TRYLOCK_ZONE, UNLOCK_ZONE, dns_rdatacallbacks::zone, dns_load::zone, zone_idetach(), zone_postload(), and zonemgr_putio().

Referenced by zone_gotreadhandle().

static isc_result_t zone_startload ( dns_db_t db,
dns_zone_t zone,
isc_time_t  loadtime 
) [static]

Definition at line 2337 of file zone.c.

References callbacks, dns_load::callbacks, cleanup(), dns_load::db, dns_db_attach(), dns_db_beginload(), dns_db_detach(), dns_db_endload(), dns_master_loadfile5(), DNS_MASTER_MANYERRORS, DNS_R_CONTINUE, dns_rdatacallbacks_init(), DNS_ZONE_OPTION, dns_zone_rpz_enable_db(), DNS_ZONEOPT_MANYERRORS, get_master_options(), isc_mem_attach(), isc_mem_detach(), isc_mem_get, isc_mem_put, ISC_R_NOMEMORY, ISC_R_SUCCESS, ISC_TRUE, load(), LOAD_MAGIC, dns_load::loadtime, dns_load::magic, dns_load::mctx, dns_rdatacallbacks::rawdata, dns_rdatacallbacks::zone, dns_load::zone, zone_gotreadhandle(), zone_iattach(), zone_idetach(), zone_registerinclude(), zone_setrawdata(), and zonemgr_getio().

Referenced by zone_load().

static void zone_namerd_tostr ( dns_zone_t zone,
char *  buf,
size_t  length 
) [static]

Definition at line 13033 of file zone.c.

References buffer, dns_name_dynamic(), dns_name_totext(), dns_rdataclass_totext(), dns_zone_key, dns_zone_redirect, inline_raw(), inline_secure(), isc_buffer_availablelength, isc_buffer_init, isc_buffer_putstr, isc_buffer_usedlength, ISC_R_FAILURE, ISC_R_SUCCESS, ISC_TRUE, and REQUIRE.

Referenced by dns_zone_name(), dns_zone_setclass(), dns_zone_setorigin(), dns_zone_settype(), and dns_zone_setview().

static void zone_name_tostr ( dns_zone_t zone,
char *  buf,
size_t  length 
) [static]

Definition at line 13071 of file zone.c.

References buffer, dns_name_dynamic(), dns_name_totext(), isc_buffer_availablelength, isc_buffer_init, isc_buffer_putstr, isc_buffer_usedlength, ISC_R_FAILURE, ISC_R_SUCCESS, ISC_TRUE, and REQUIRE.

Referenced by dns_zone_setorigin().

static void zone_rdclass_tostr ( dns_zone_t zone,
char *  buf,
size_t  length 
) [static]

Definition at line 13092 of file zone.c.

References buffer, dns_rdataclass_totext(), isc_buffer_init, isc_buffer_usedlength, and REQUIRE.

Referenced by dns_zone_setclass().

static void zone_viewname_tostr ( dns_zone_t zone,
char *  buf,
size_t  length 
) [static]

Definition at line 13108 of file zone.c.

References buffer, isc_buffer_availablelength, isc_buffer_init, isc_buffer_putstr, isc_buffer_usedlength, and REQUIRE.

Referenced by dns_zone_setview().

static isc_result_t zone_send_secureserial ( dns_zone_t zone,
isc_uint32_t  serial 
) [static]

Definition at line 13807 of file zone.c.

References DNS_EVENT_ZONESECURESERIAL, DNS_ZONE_CLRFLAG, DNS_ZONEFLG_SENDSECURE, dummy, secure_event::e, INSIST, isc_event_allocate(), ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_task_send(), LOCKED_ZONE, receive_secure_serial(), and zone_iattach().

Referenced by dns_zone_markdirty(), maybe_send_secure(), zone_postload(), zone_replacedb(), and zone_xfrdone().

static void refresh_callback ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 11208 of file zone.c.

References detach(), dns_message_create(), dns_message_destroy(), dns_message_findname(), DNS_MESSAGE_INTENTPARSE, DNS_MESSAGEFLAG_AA, DNS_MESSAGEFLAG_TC, dns_rcode_badvers, dns_rcode_formerr, dns_rcode_noerror, dns_rcode_notimp, dns_rcode_refused, dns_rcode_servfail, dns_rcode_totext(), DNS_RDATA_INIT, dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_first(), dns_request_destroy(), dns_request_getresponse(), dns_request_usedtcp(), dns_result_totext(), DNS_SECTION_ANSWER, DNS_SECTION_AUTHORITY, DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_idetach(), DNS_ZONE_JITTER_ADD, dns_zone_log(), DNS_ZONE_OPTION, dns_zone_redirect, DNS_ZONE_SETFLAG, dns_zone_slave, dns_zone_stub, DNS_ZONE_TIME_ADD, DNS_ZONE_VALID, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_FORCEXFER, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_NEEDREFRESH, DNS_ZONEFLG_NOEDNS, DNS_ZONEFLG_REFRESH, DNS_ZONEFLG_SOABEFOREAXFR, DNS_ZONEFLG_USEALTXFRSRC, DNS_ZONEFLG_USEVC, dns_zonemgr_unreachable(), DNS_ZONEOPT_MULTIMASTER, DNS_ZONEOPT_TRYTCPREFRESH, DNS_ZONEOPT_USEALTXFRSRC, ENTER, dns_message::flags, get_edns_expire(), INSIST, isc_buffer_init, isc_event_free(), ISC_FALSE, ISC_LOG_DEBUG, ISC_LOG_INFO, ISC_R_SUCCESS, ISC_R_TIMEDOUT, isc_serial_eq(), isc_serial_gt(), isc_sockaddr_format(), ISC_SOCKADDR_FORMATSIZE, isc_time_compare(), ISC_TRUE, LOCK_ZONE, master, message_count(), next_master(), now, ns_query(), queue_soa_query(), queue_xfrin(), dns_message::rcode, dns_requestevent::request, dns_requestevent::result, RUNTIME_CHECK, setmodtime(), TIME_NOW, UNLOCK_ZONE, UNUSED, isc_buffer::used, zone_debuglog(), zone_get_from_db(), and zone_settimer().

Referenced by soa_query().

static void stub_callback ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 10862 of file zone.c.

References dns_stub::db, dns_db_closeversion(), dns_db_detach(), DNS_MAX_EXPIRE, dns_message_create(), dns_message_destroy(), DNS_MESSAGE_INTENTPARSE, DNS_MESSAGEFLAG_AA, DNS_MESSAGEFLAG_TC, dns_rcode_formerr, dns_rcode_noerror, dns_rcode_notimp, dns_rcode_servfail, dns_rcode_totext(), dns_request_destroy(), dns_request_getresponse(), dns_request_usedtcp(), dns_result_totext(), DNS_SECTION_ANSWER, DNS_STUB_VALID, DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_idetach(), DNS_ZONE_JITTER_ADD, dns_zone_log(), DNS_ZONE_OPTION, DNS_ZONE_SETFLAG, DNS_ZONE_TIME_ADD, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_HAVETIMERS, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_NOEDNS, DNS_ZONEFLG_REFRESH, DNS_ZONEFLG_USEALTXFRSRC, DNS_ZONEFLG_USEVC, dns_zonemgr_unreachableadd(), DNS_ZONEOPT_USEALTXFRSRC, ENTER, dns_message::flags, INSIST, isc_buffer_init, isc_event_free(), ISC_FALSE, isc_interval_set(), ISC_LOG_DEBUG, ISC_LOG_INFO, isc_mem_put, ISC_R_SUCCESS, ISC_R_TIMEDOUT, isc_rwlocktype_write, isc_sockaddr_format(), ISC_SOCKADDR_FORMATSIZE, ISC_TRUE, LOCK_ZONE, dns_stub::magic, master, dns_stub::mctx, message_count(), next_master(), now, ns_query(), queue_soa_query(), RANGE, dns_message::rcode, dns_requestevent::request, dns_requestevent::result, save_nsrrset(), TIME_NOW, UNLOCK_ZONE, UNUSED, isc_buffer::used, dns_stub::version, dns_stub::zone, zone_attachdb(), zone_debuglog(), zone_get_from_db(), zone_needdump(), zone_settimer(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by ns_query().

static void queue_soa_query ( dns_zone_t zone  )  [static]

Definition at line 11602 of file zone.c.

References cancel_refresh(), DNS_EVENT_ZONE, DNS_ZONE_FLAG, DNS_ZONEFLG_EXITING, dummy, ENTER, isc_event_allocate(), isc_event_free(), ISC_R_SUCCESS, isc_ratelimiter_enqueue(), LOCKED_ZONE, REQUIRE, soa_query(), zone_iattach(), and zone_idetach().

Referenced by dns_zone_refresh(), refresh_callback(), stub_callback(), and zone_xfrdone().

static void soa_query ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 11723 of file zone.c.

References add_opt(), cancel_refresh(), cleanup(), create_query(), dns_message_destroy(), dns_name_format(), DNS_NAME_FORMATSIZE, dns_peer_getforcetcp(), dns_peer_getrequestexpire(), dns_peer_getrequestnsid(), dns_peer_getsupportedns(), dns_peer_gettransferdscp(), dns_peer_gettransfersource(), dns_peer_getudpsize(), dns_peerlist_peerbyaddr(), dns_request_createvia4(), DNS_REQUESTOPT_TCP, dns_resolver_getudpsize(), dns_result_totext(), dns_tsigkey_detach(), dns_view_getpeertsig(), dns_view_gettsig(), DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_getview(), dns_zone_idetach(), dns_zone_log(), DNS_ZONE_SETFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_DIALREFRESH, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_NOEDNS, DNS_ZONEFLG_REFRESH, DNS_ZONEFLG_USEALTXFRSRC, DNS_ZONEFLG_USEVC, dns_zonestatscounter_soaoutv4, dns_zonestatscounter_soaoutv6, dns_notify::dscp, dummy, ENTER, inc_stats(), INSIST, isc_event_free(), ISC_EVENTATTR_CANCELED, ISC_FALSE, ISC_LOG_ERROR, isc_netaddr_format(), ISC_NETADDR_FORMATSIZE, isc_netaddr_fromsockaddr(), ISC_R_FAILURE, ISC_R_NOTFOUND, ISC_R_NOTIMPLEMENTED, ISC_R_SUCCESS, isc_sockaddr_equal(), isc_sockaddr_pf(), ISC_TRUE, dns_notify::key, LOCK_ZONE, namebuf, PF_INET6, refresh_callback(), REQUIRE, SEND_BUFFER_SIZE, timeout, UNLOCK_ZONE, UNUSED, zone_debuglog(), zone_iattach(), and zone_idetach().

Referenced by queue_soa_query().

static void ns_query ( dns_zone_t zone,
dns_rdataset_t soardataset,
dns_stub_t stub 
) [static]

Definition at line 11922 of file zone.c.

References add_opt(), cancel_refresh(), cleanup(), create_query(), dns_stub::db, dns_db_addrdataset(), dns_db_attach(), dns_db_closeversion(), dns_db_create(), dns_db_detach(), dns_db_detachnode(), dns_db_findnode(), dns_db_newversion(), dns_db_settask(), dns_dbtype_stub, dns_message_destroy(), dns_name_format(), DNS_NAME_FORMATSIZE, dns_peer_getrequestnsid(), dns_peer_getsupportedns(), dns_peer_gettransferdscp(), dns_peer_gettransfersource(), dns_peer_getudpsize(), dns_peerlist_peerbyaddr(), dns_request_createvia4(), DNS_REQUESTOPT_TCP, dns_resolver_getudpsize(), dns_result_totext(), DNS_STUB_VALID, dns_tsigkey_detach(), dns_view_getpeertsig(), dns_view_gettsig(), DNS_ZONE_FLAG, dns_zone_getview(), dns_zone_log(), DNS_ZONE_SETFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_DIALREFRESH, DNS_ZONEFLG_NOEDNS, DNS_ZONEFLG_USEALTXFRSRC, dns_notify::dscp, ENTER, INSIST, ISC_FALSE, ISC_LOG_ERROR, ISC_LOG_INFO, isc_mem_get, isc_mem_put, isc_netaddr_fromsockaddr(), ISC_R_NOTIMPLEMENTED, ISC_R_SUCCESS, isc_rwlocktype_read, isc_sockaddr_pf(), ISC_TRUE, dns_notify::key, LOCKED_ZONE, dns_stub::magic, dns_stub::mctx, namebuf, dns_db::origin, PF_INET6, POST, REQUIRE, SEND_BUFFER_SIZE, stub_callback(), STUB_MAGIC, timeout, dns_stub::version, dns_stub::zone, zone_debuglog(), zone_iattach(), zone_idetach(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by refresh_callback(), and stub_callback().

static int message_count ( dns_message_t msg,
dns_section_t  section,
dns_rdatatype_t  type 
) [static]

Definition at line 13222 of file zone.c.

References dns_message_currentname(), dns_message_firstname(), dns_message_nextname(), ISC_LIST_PREV, ISC_LIST_TAIL, ISC_R_SUCCESS, and dns_rdataset::type.

Referenced by refresh_callback(), and stub_callback().

static void notify_cancel ( dns_zone_t zone  )  [static]

Definition at line 10024 of file zone.c.

References dns_adb_cancelfind(), dns_request_cancel(), dns_notify::find, ISC_LIST_HEAD, ISC_LIST_NEXT, LOCKED_ZONE, notify(), dns_notify::request, and REQUIRE.

Referenced by zone_shutdown().

static void notify_find_address ( dns_notify_t notify  )  [static]

Definition at line 10294 of file zone.c.

References destroy(), dns_adb_createfind(), DNS_ADBFIND_INET, DNS_ADBFIND_INET6, DNS_ADBFIND_RETURNLAME, DNS_ADBFIND_WANTEVENT, DNS_NOTIFY_VALID, dns_rootname, dns_notify::find, ISC_FALSE, ISC_R_SUCCESS, LOCK_ZONE, notify_destroy(), notify_send(), dns_notify::ns, dns_adbfind::options, process_adb_event(), REQUIRE, UNLOCK_ZONE, and dns_notify::zone.

Referenced by process_adb_event(), and zone_notify().

static void notify_send ( dns_notify_t notify  )  [static]

Definition at line 10495 of file zone.c.

References cleanup(), DNS_NOTIFY_NOSOA, DNS_NOTIFY_STARTUP, DNS_NOTIFY_VALID, dns_notify::dst, dns_notify::find, dns_notify::flags, ISC_LIST_APPEND, ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_R_SUCCESS, ISC_TF, ISC_TRUE, dns_adbfind::list, LOCKED_ZONE, dns_notify::mctx, notify_create(), notify_destroy(), notify_isqueued(), notify_isself(), notify_send_queue(), REQUIRE, dns_adbaddrinfo::sockaddr, dns_notify::zone, and zone_iattach().

Referenced by notify_find_address(), and process_adb_event().

static isc_result_t notify_createmessage ( dns_zone_t zone,
unsigned int  flags,
dns_message_t **  messagep 
) [static]

Definition at line 12438 of file zone.c.

References isc_region::base, cleanup(), dns_db_attach(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detach(), dns_db_detachnode(), dns_db_findnode(), dns_db_findrdataset(), dns_message_addname(), dns_message_create(), dns_message_destroy(), dns_message_gettempname(), dns_message_gettemprdata(), dns_message_gettemprdatalist(), dns_message_gettemprdataset(), DNS_MESSAGE_INTENTRENDER, dns_message_puttempname(), dns_message_puttemprdata(), dns_message_puttemprdatalist(), dns_message_puttemprdataset(), dns_message_takebuffer(), DNS_MESSAGEFLAG_AA, dns_name_clone(), dns_name_init(), DNS_NOTIFY_NOSOA, dns_opcode_notify, dns_rdata_fromregion(), dns_rdata_init(), DNS_RDATA_INIT, dns_rdata_toregion(), dns_rdatalist_tordataset(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_makequestion(), dns_rdataset_next(), DNS_SECTION_ANSWER, DNS_SECTION_QUESTION, DNS_ZONE_VALID, dns_message::flags, INSIST, isc_buffer_allocate(), isc_buffer_putmem, isc_buffer_usedregion, ISC_FALSE, ISC_LIST_APPEND, ISC_R_NOMORE, ISC_R_SUCCESS, isc_rwlocktype_read, isc_region::length, dns_message::opcode, r, dns_rdatalist::rdclass, dns_rdata::rdclass, dns_rdataset::rdclass, dns_message::rdclass, REQUIRE, tempname, dns_rdataset::ttl, dns_rdatalist::ttl, dns_rdatalist::type, dns_rdata::type, version, ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by notify_send_toaddr().

static void notify_done ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 13338 of file zone.c.

References dns_message_create(), dns_message_destroy(), DNS_MESSAGE_INTENTPARSE, DNS_MESSAGEPARSE_PRESERVEORDER, DNS_NOTIFY_NOSOA, DNS_NOTIFY_STARTUP, DNS_NOTIFY_VALID, dns_rcode_formerr, dns_rcode_totext(), dns_request_destroy(), dns_request_getresponse(), dns_result_totext(), dns_notify::dst, dns_notify::flags, INSIST, isc_buffer_init, isc_event_free(), ISC_FALSE, ISC_LOG_DEBUG, ISC_R_SUCCESS, ISC_R_TIMEDOUT, isc_sockaddr_format(), ISC_SOCKADDR_FORMATSIZE, ISC_TF, notify(), notify_destroy(), notify_log(), notify_send_queue(), dns_message::rcode, dns_notify::request, dns_requestevent::request, REQUIRE, dns_requestevent::result, UNUSED, isc_buffer::used, and dns_notify::zone.

Referenced by notify_send_toaddr().

static void notify_send_toaddr ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 10357 of file zone.c.

References cleanup(), DNS_FETCHOPT_TCP, dns_message_destroy(), DNS_NOTIFY_VALID, dns_peer_getforcetcp(), dns_peer_getnotifydscp(), dns_peer_getnotifysource(), dns_peerlist_peerbyaddr(), dns_request_createvia4(), dns_tsigkey_detach(), dns_view_getpeertsig(), DNS_ZONE_FLAG, DNS_ZONEFLG_DIALNOTIFY, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_LOADED, dns_zonestatscounter_notifyoutv4, dns_zonestatscounter_notifyoutv6, dns_notify::dscp, dns_notify::dst, dns_notify::flags, IN6_IS_ADDR_V4MAPPED, inc_stats(), isc_event_free(), ISC_EVENTATTR_CANCELED, ISC_FALSE, ISC_LOG_DEBUG, ISC_LOG_ERROR, isc_netaddr_fromsockaddr(), ISC_R_CANCELED, ISC_R_NOTFOUND, ISC_R_NOTIMPLEMENTED, ISC_R_SUCCESS, isc_sockaddr_format(), ISC_SOCKADDR_FORMATSIZE, isc_sockaddr_pf(), ISC_TRUE, dns_notify::key, LOCK_ZONE, notify(), notify_createmessage(), notify_destroy(), notify_done(), notify_log(), PF_INET6, dns_notify::request, REQUIRE, isc_sockaddr::sin6, sockaddr_in6::sin6_addr, timeout, isc_sockaddr::type, UNLOCK_ZONE, UNUSED, and dns_notify::zone.

Referenced by notify_send_queue().

static isc_result_t zone_dump ( dns_zone_t zone,
isc_boolean_t  compact 
) [static]

Definition at line 9854 of file zone.c.

References dns_db_attach(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detach(), DNS_DUMP_DELAY, dns_master_dump3(), dns_master_initrawheader(), dns_master_style_default, dns_master_style_keyzone, dns_masterformat_none, DNS_R_CONTINUE, DNS_R_NOMASTERFILE, DNS_R_NOTLOADED, DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_key, DNS_ZONE_SETFLAG, dns_zone_stub, DNS_ZONE_VALID, DNS_ZONEFLG_DUMPING, DNS_ZONEFLG_FLUSH, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_NEEDDUMP, dummy, ENTER, get_raw_serial(), inline_secure(), ISC_FALSE, isc_mem_free, isc_mem_strdup, ISC_R_SUCCESS, isc_rwlocktype_read, isc_time_settoepoch(), ISC_TRUE, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, version, zone_gotwritehandle(), zone_iattach(), zone_idetach(), zone_needdump(), ZONEDB_LOCK, ZONEDB_UNLOCK, and zonemgr_getio().

Referenced by dns_zone_dump(), dns_zone_flush(), dump_done(), and zone_maintenance().

static void got_transfer_quota ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 14953 of file zone.c.

References cleanup(), dns_peer_getrequestixfr(), dns_peerlist_peerbyaddr(), dns_view_getpeertsig(), dns_view_gettsig(), dns_xfrin_create3(), DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_getview(), dns_zone_log(), DNS_ZONEFLAG_NOIXFR, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_FORCEXFER, DNS_ZONEFLG_SOABEFOREAXFR, dns_zonemgr_unreachable(), dns_zonestatscounter_axfrreqv4, dns_zonestatscounter_axfrreqv6, dns_zonestatscounter_ixfrreqv4, dns_zonestatscounter_ixfrreqv6, dns_notify::dscp, inc_stats(), INSIST, isc_event_free(), ISC_FALSE, ISC_LOG_DEBUG, ISC_LOG_ERROR, ISC_LOG_INFO, isc_netaddr_fromsockaddr(), ISC_R_CANCELED, ISC_R_NOTFOUND, ISC_R_SUCCESS, isc_result_totext(), isc_rwlocktype_read, isc_sockaddr_format(), ISC_SOCKADDR_FORMATSIZE, isc_sockaddr_pf(), ISC_TF, ISC_TRUE, LOCK_ZONE, master, now, PF_INET6, TIME_NOW, UNLOCK_ZONE, UNUSED, zone_xfrdone(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by zmgr_start_xfrin_ifquota().

static isc_result_t zmgr_start_xfrin_ifquota ( dns_zonemgr_t zmgr,
dns_zone_t zone 
) [static]

Definition at line 15915 of file zone.c.

References DNS_EVENT_ZONESTARTXFRIN, dns_peer_gettransfers(), dns_peerlist_peerbyaddr(), DNS_ZONE_FLAG, dns_zone_log(), DNS_ZONEFLG_EXITING, secure_event::e, got_transfer_quota(), INSIST, isc_event_allocate(), ISC_LIST_APPEND, ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_LIST_UNLINK, ISC_LOG_INFO, isc_netaddr_equal(), isc_netaddr_fromsockaddr(), ISC_R_NOMEMORY, ISC_R_QUOTA, ISC_R_SUCCESS, isc_task_send(), LOCK_ZONE, dns_zonemgr::mctx, dns_zonemgr::transfersin, dns_zonemgr::transfersperns, UNLOCK_ZONE, dns_zonemgr::waiting_for_xfrin, and dns_zonemgr::xfrin_in_progress.

Referenced by queue_xfrin(), and zmgr_resume_xfrs().

static void zmgr_resume_xfrs ( dns_zonemgr_t zmgr,
isc_boolean_t  multi 
) [static]

Definition at line 15866 of file zone.c.

References dns_zone_log(), ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_LOG_DEBUG, ISC_R_QUOTA, ISC_R_SUCCESS, isc_result_totext(), dns_zonemgr::waiting_for_xfrin, and zmgr_start_xfrin_ifquota().

Referenced by dns_zonemgr_forcemaint(), dns_zonemgr_resumexfrs(), zone_shutdown(), and zone_xfrdone().

static void zonemgr_free ( dns_zonemgr_t zmgr  )  [static]

Definition at line 15809 of file zone.c.

References DESTROYLOCK, INSIST, dns_zonemgr::iolock, ISC_LIST_EMPTY, isc_mem_detach(), isc_mem_put, isc_ratelimiter_detach(), isc_rwlock_destroy(), dns_zonemgr::magic, dns_zonemgr::mctx, dns_notify::mctx, dns_zonemgr::notifyrl, dns_zonemgr::refreshrl, dns_zonemgr::refs, dns_zonemgr::rwlock, dns_zonemgr::startupnotifyrl, dns_zonemgr::startuprefreshrl, dns_zonemgr::urlock, and dns_zonemgr::zones.

Referenced by dns_zonemgr_detach(), and dns_zonemgr_releasezone().

static isc_result_t zonemgr_getio ( dns_zonemgr_t zmgr,
isc_boolean_t  high,
isc_task_t task,
isc_taskaction_t  action,
void *  arg,
dns_io_t **  iop 
) [static]

Definition at line 16031 of file zone.c.

References DNS_EVENT_IOREADY, DNS_ZONEMGR_VALID, dns_zonemgr::high, IO_MAGIC, dns_zonemgr::ioactive, dns_zonemgr::iolimit, dns_zonemgr::iolock, isc_event_allocate(), ISC_LINK_INIT, ISC_LIST_APPEND, isc_mem_get, isc_mem_put, ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_task_attach(), isc_task_send(), ISC_TF, LOCK, dns_zonemgr::low, dns_zonemgr::mctx, REQUIRE, and UNLOCK.

Referenced by zone_dump(), and zone_startload().

static void zonemgr_putio ( dns_io_t **  iop  )  [static]

Definition at line 16077 of file zone.c.

References DNS_IO_VALID, HEAD, dns_zonemgr::high, INSIST, dns_zonemgr::ioactive, dns_zonemgr::iolock, ISC_LINK_LINKED, ISC_LIST_UNLINK, isc_mem_put, isc_task_detach(), isc_task_send(), LOCK, dns_zonemgr::low, dns_zonemgr::mctx, REQUIRE, and UNLOCK.

Referenced by dump_done(), and zone_loaddone().

static void zonemgr_cancelio ( dns_io_t *  io  )  [static]

Definition at line 16115 of file zone.c.

References DNS_IO_VALID, INSIST, ISC_EVENTATTR_CANCELED, ISC_FALSE, ISC_LINK_LINKED, ISC_LIST_UNLINK, isc_task_send(), ISC_TRUE, LOCK, REQUIRE, and UNLOCK.

Referenced by zone_shutdown(), and zone_unload().

static isc_result_t zone_get_from_db ( dns_zone_t zone,
dns_db_t db,
unsigned int *  nscount,
unsigned int *  soacount,
isc_uint32_t serial,
isc_uint32_t refresh,
isc_uint32_t retry,
isc_uint32_t expire,
isc_uint32_t minimum,
unsigned int *  errors 
) [static]

Definition at line 4920 of file zone.c.

References answer, closeversion(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detachnode(), dns_db_findnode(), ISC_FALSE, ISC_R_SUCCESS, ISC_TRUE, dns_db::origin, REQUIRE, version, zone_count_ns_rr(), and zone_load_soa_rr().

Referenced by dns_zone_getserial2(), dns_zone_markdirty(), dns_zone_notifyreceive(), get_raw_serial(), maybe_send_secure(), refresh_callback(), stub_callback(), zone_postload(), zone_replacedb(), and zone_xfrdone().

static void zone_freedbargs ( dns_zone_t zone  )  [static]

Definition at line 1346 of file zone.c.

References isc_mem_free, and isc_mem_put.

Referenced by dns_zone_setdbtype(), and zone_free().

static void forward_callback ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 15197 of file zone.c.

References dns_forward::addr, dns_forward::callback, dns_forward::callback_arg, DNS_FORWARD_VALID, dns_message_create(), dns_message_destroy(), DNS_MESSAGE_INTENTPARSE, DNS_MESSAGEPARSE_CLONEBUFFER, DNS_MESSAGEPARSE_PRESERVEORDER, dns_rcode_badvers, dns_rcode_formerr, dns_rcode_noerror, dns_rcode_notauth, dns_rcode_notimp, dns_rcode_notzone, dns_rcode_nxdomain, dns_rcode_nxrrset, dns_rcode_refused, dns_rcode_servfail, dns_rcode_totext(), dns_rcode_yxdomain, dns_rcode_yxrrset, dns_request_destroy(), dns_request_getresponse(), dns_result_totext(), dns_zone_log(), DNS_ZONE_VALID, ENTER, forward_destroy(), INSIST, isc_buffer_init, isc_event_free(), ISC_LOG_DEBUG, ISC_LOG_INFO, ISC_LOG_WARNING, ISC_R_SUCCESS, isc_sockaddr_format(), ISC_SOCKADDR_FORMATSIZE, master, next_master(), dns_message::rcode, dns_forward::request, dns_requestevent::request, dns_requestevent::result, sendtomaster(), UNUSED, isc_buffer::used, dns_forward::which, and dns_forward::zone.

Referenced by forward_action(), and sendtomaster().

static void zone_saveunique ( dns_zone_t zone,
const char *  path,
const char *  templat 
) [static]

Definition at line 16141 of file zone.c.

References cleanup(), dns_zone_log(), isc_file_renameunique(), isc_file_template(), ISC_LOG_WARNING, isc_mem_get, isc_mem_put, and ISC_R_SUCCESS.

Referenced by zone_postload().

static void zone_maintenance ( dns_zone_t zone  )  [static]

Definition at line 9374 of file zone.c.

References dns_result_totext(), DNS_ZONE_FLAG, dns_zone_key, dns_zone_log(), dns_zone_master, dns_zone_redirect, dns_zone_refresh(), dns_zone_slave, dns_zone_stub, DNS_ZONE_VALID, DNS_ZONEFLG_DIALREFRESH, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_LOADPENDING, DNS_ZONEFLG_NEEDDUMP, DNS_ZONEFLG_NEEDNOTIFY, DNS_ZONEFLG_NEEDSTARTUPNOTIFY, DNS_ZONEFLG_REFRESHING, ENTER, ISC_LOG_WARNING, ISC_R_SUCCESS, isc_time_compare(), isc_time_isepoch(), isc_time_seconds(), ISC_TRUE, LOCK_ZONE, now, REQUIRE, set_key_expiry_warning(), TIME_NOW, UNLOCK_ZONE, was_dumping(), zone_dump(), zone_expire(), zone_notify(), zone_nsec3chain(), zone_refreshkeys(), zone_rekey(), zone_resigninc(), zone_settimer(), and zone_sign().

Referenced by zone_timer().

static void zone_notify ( dns_zone_t zone,
isc_time_t now 
) [static]

Definition at line 10553 of file zone.c.

References dns_db_attach(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detach(), dns_db_detachnode(), dns_db_findnode(), dns_db_findrdataset(), dns_name_compare(), dns_name_dup(), dns_name_dynamic(), dns_name_free(), dns_name_init(), DNS_NOTIFY_NOSOA, DNS_NOTIFY_STARTUP, dns_notifytype_explicit, dns_notifytype_masteronly, dns_notifytype_no, DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_next(), dns_tsigkey_detach(), dns_view_gettsig(), DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_getview(), dns_zone_iattach(), dns_zone_master, DNS_ZONE_OPTION, DNS_ZONE_TIME_ADD, DNS_ZONE_VALID, DNS_ZONEFLG_DIALNOTIFY, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_NEEDNOTIFY, DNS_ZONEFLG_NEEDSTARTUPNOTIFY, DNS_ZONEOPT_NOTIFYTOSOA, dns_notify::dst, dns_notify::flags, INSIST, ISC_FALSE, ISC_LIST_APPEND, ISC_LOG_INFO, ISC_R_SUCCESS, isc_rwlocktype_read, ISC_TRUE, dns_notify::key, LOCK_ZONE, master, notify(), notify_create(), notify_destroy(), notify_find_address(), notify_isqueued(), notify_log(), notify_send_queue(), dns_notify::ns, origin, REQUIRE, RUNTIME_CHECK, UNLOCK_ZONE, version, dns_notify::zone, zone_iattach(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by zone_maintenance().

static void dump_done ( void *  arg,
isc_result_t  result 
) [static]

Definition at line 9755 of file zone.c.

References dns_db_getsoaserial(), DNS_DUMP_DELAY, dns_dumpctx_db(), dns_dumpctx_detach(), dns_dumpctx_version(), dns_journal_compact(), dns_result_totext(), DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_idetach(), dns_zone_log(), DNS_ZONE_SETFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_DUMPING, DNS_ZONEFLG_FLUSH, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_NEEDCOMPACT, DNS_ZONEFLG_NEEDDUMP, ENTER, inline_raw(), ISC_FALSE, ISC_LOG_DEBUG, ISC_LOG_ERROR, ISC_R_CANCELED, ISC_R_NOSPACE, ISC_R_NOTFOUND, ISC_R_SUCCESS, isc_serial_lt(), isc_time_settoepoch(), ISC_TRUE, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, version, zone_dump(), zone_needdump(), and zonemgr_putio().

Referenced by zone_gotwritehandle().

static isc_result_t zone_signwithkey ( dns_zone_t zone,
dns_secalg_t  algorithm,
isc_uint16_t  keyid,
isc_boolean_t  delete 
) [static]

Definition at line 16814 of file zone.c.

Referenced by resume_signingwithkey().

static isc_result_t delete_nsec ( dns_db_t db,
dns_dbversion_t ver,
dns_dbnode_t node,
dns_name_t name,
dns_diff_t diff 
) [static]

Definition at line 6896 of file zone.c.

References CHECK, dns_db_findrdataset(), DNS_DIFFOP_DEL, DNS_RDATA_INIT, dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_next(), ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, dns_rdataset::ttl, and update_one_rr().

Referenced by updatesecure(), and zone_nsec3chain().

static void zone_rekey ( dns_zone_t zone  )  [static]

Definition at line 17262 of file zone.c.

Referenced by zone_maintenance().

static isc_result_t zone_send_securedb ( dns_zone_t zone,
dns_db_t db 
) [static]

Definition at line 14260 of file zone.c.

References dns_db_attach(), DNS_EVENT_ZONESECUREDB, DNS_ZONE_CLRFLAG, DNS_ZONEFLG_SENDSECURE, dummy, secure_event::e, INSIST, isc_event_allocate(), ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_task_send(), LOCKED_ZONE, receive_secure_db(), secure(), and zone_iattach().

Referenced by maybe_send_secure(), zone_postload(), and zone_replacedb().

static void setrl ( isc_ratelimiter_t rl,
unsigned int *  rate,
unsigned int  value 
) [static]

Definition at line 16184 of file zone.c.

References isc_interval_set(), ISC_R_SUCCESS, isc_ratelimiter_setinterval(), isc_ratelimiter_setpertic(), dns_notify::ns, RUNTIME_CHECK, and s.

Referenced by dns_zonemgr_create().

typedef ISC_LIST ( nsec3param_t   ) 

Definition at line 859 of file zone.c.

static void inc_stats ( dns_zone_t zone,
isc_statscounter_t  counter 
) [inline, static]

Increment resolver-related statistics counters. Zone must be locked.

Definition at line 874 of file zone.c.

References isc_stats_increment().

isc_result_t dns_zone_create ( dns_zone_t **  zonep,
isc_mem_t mctx 
)

Creates a new empty zone and attach '*zonep' to it.

Requires:

Ensures: Returns:

Definition at line 884 of file zone.c.

References dbargc_default, dbargv_default, DESTROYLOCK, DNS_DEFAULT_IDLEIN, DNS_DEFAULT_IDLEOUT, DNS_EVENT_ZONECONTROL, dns_masterformat_none, dns_name_init(), dns_notifytype_yes, DNS_RPZ_INVALID_NUM, dns_severity_ignore, dns_updatemethod_increment, DNS_ZONE_DEFAULTREFRESH, DNS_ZONE_DEFAULTRETRY, DNS_ZONE_MAXREFRESH, DNS_ZONE_MAXRETRY, DNS_ZONE_MINREFRESH, DNS_ZONE_MINRETRY, dns_zone_none, dns_zone_setdbtype(), dns_zonestat_none, ISC_EVENT_INIT, ISC_FALSE, ISC_LINK_INIT, ISC_LIST_INIT, isc_mem_attach(), isc_mem_get, isc_mem_putanddetach, isc_mutex_init, ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_refcount_decrement, isc_refcount_destroy, isc_refcount_init(), isc_sockaddr_any(), isc_sockaddr_any6(), isc_time_settoepoch(), ISC_TRUE, MAX_XFER_TIME, now, REQUIRE, TIME_NOW, ZONE_MAGIC, zone_shutdown(), ZONEDB_DESTROYLOCK, and ZONEDB_INITLOCK.

Referenced by configure_zone(), dns64_reverse(), dns_dlz_writeablezone(), dns_test_makezone(), dns_zonemgr_createzone(), and load_zone().

static void zone_free ( dns_zone_t zone  )  [static]

Definition at line 1086 of file zone.c.

References DESTROYLOCK, dns_acache_detach(), dns_acl_detach(), dns_db_detach(), dns_dbiterator_destroy(), dns_name_dynamic(), dns_name_free(), dns_request_destroy(), dns_rpz_detach_rpzs(), DNS_RPZ_INVALID_NUM, dns_severity_ignore, dns_ssutable_detach(), dns_stats_detach(), dns_zone_setalsonotify(), dns_zone_setmasterswithkeys(), DNS_ZONE_VALID, INSIST, ISC_LIST_HEAD, ISC_LIST_UNLINK, isc_mem_detach(), isc_mem_free, isc_mem_put, ISC_R_SUCCESS, isc_refcount_current, isc_refcount_destroy, isc_stats_detach(), isc_task_detach(), LOCKED_ZONE, dns_notify::mctx, REQUIRE, RUNTIME_CHECK, zone_detachdb(), zone_freedbargs(), and ZONEDB_DESTROYLOCK.

Referenced by dns_zone_detach(), dns_zone_idetach(), keyfetch_done(), zone_shutdown(), and zone_xfrdone().

static isc_boolean_t inline_secure ( dns_zone_t zone  )  [inline, static]

Definition at line 1215 of file zone.c.

References DNS_ZONE_VALID, ISC_FALSE, ISC_TRUE, and REQUIRE.

Referenced by dns_zone_notifyreceive(), dns_zone_setclass(), dns_zone_setorigin(), dns_zone_setview(), dumptostream(), receive_secure_db(), set_resigntime(), zone_dump(), zone_gotwritehandle(), zone_load(), zone_loaddone(), zone_namerd_tostr(), zone_postload(), and zone_shutdown().

static isc_boolean_t inline_raw ( dns_zone_t zone  )  [inline, static]

Definition at line 1227 of file zone.c.

References DNS_ZONE_VALID, ISC_FALSE, ISC_TRUE, and REQUIRE.

Referenced by dns_zone_loadandthaw(), dns_zone_markdirty(), dns_zone_replacedb(), dump_done(), zone_loaddone(), zone_namerd_tostr(), zone_postload(), zone_replacedb(), zone_shutdown(), and zone_xfrdone().

void dns_zone_setclass ( dns_zone_t zone,
dns_rdataclass_t  rdclass 
)

Sets the class of a zone. This operation can only be performed once on a zone.

Require:

Definition at line 1238 of file zone.c.

References dns_zone_setclass(), DNS_ZONE_VALID, inline_secure(), INSIST, isc_mem_free, isc_mem_strdup, LOCK_ZONE, namebuf, REQUIRE, UNLOCK_ZONE, zone_namerd_tostr(), and zone_rdclass_tostr().

Referenced by add_keydata_zone(), create_empty_zone(), dns64_reverse(), dns_test_makezone(), dns_zone_setclass(), load_zone(), and ns_zone_configure().

dns_rdataclass_t dns_zone_getclass ( dns_zone_t zone  ) 

Returns the current zone class.

Requires:

Definition at line 1269 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by configure_staticstub(), configure_staticstub_serveraddrs(), configure_staticstub_servernames(), dns_xfrin_create3(), freezezones(), ns_server_freeze(), ns_server_sync(), send_forward_event(), and update_log().

void dns_zone_setnotifytype ( dns_zone_t zone,
dns_notifytype_t  notifytype 
)

Sets zone notify method to "notifytype".

Definition at line 1276 of file zone.c.

References DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by add_keydata_zone(), create_empty_zone(), dns64_reverse(), and ns_zone_configure().

isc_result_t dns_zone_getserial2 ( dns_zone_t zone,
isc_uint32_t serialp 
)

Definition at line 1285 of file zone.c.

References DNS_R_NOTLOADED, DNS_ZONE_VALID, ISC_R_FAILURE, ISC_R_SUCCESS, isc_rwlocktype_read, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, zone_get_from_db(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by dns_zone_getserial().

isc_uint32_t dns_zone_getserial ( dns_zone_t zone  ) 

Returns the current serial number of the zone. On success, the SOA serial of the zone will be copied into '*serialp'. dns_zone_getserial() cannot catch failure cases and is deprecated by dns_zone_getserial2().

Requires:

Returns:

Definition at line 1309 of file zone.c.

References dns_zone_getserial2(), and ISC_R_SUCCESS.

Referenced by ns_server_zonestatus().

void dns_zone_settype ( dns_zone_t zone,
dns_zonetype_t  type 
)

Sets the zone type. This operation can only be performed once on a zone.

Requires:

Definition at line 1324 of file zone.c.

References dns_zone_none, DNS_ZONE_VALID, isc_mem_free, isc_mem_strdup, LOCK_ZONE, namebuf, REQUIRE, UNLOCK_ZONE, and zone_namerd_tostr().

Referenced by add_keydata_zone(), create_empty_zone(), dns64_reverse(), dns_test_makezone(), load_zone(), ns_zone_configure(), and ns_zone_configure_writeable_dlz().

isc_result_t dns_zone_getdbtype ( dns_zone_t zone,
char ***  argv,
isc_mem_t mctx 
)

Returns the current dbtype. isc_mem_free() should be used to free 'argv' after use.

Require:

Returns:

Definition at line 1361 of file zone.c.

References DNS_ZONE_VALID, isc_mem_allocate, ISC_R_NOMEMORY, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by check_dbtype().

isc_result_t dns_zone_setdbtype ( dns_zone_t zone,
unsigned int  dbargc,
const char *const *  dbargv 
)

Sets the database type to dbargv[0] and database arguments to subsequent dbargv elements. 'db_type' is not checked to see if it is a valid database type.

Require:

Returns:

Definition at line 1394 of file zone.c.

References DNS_ZONE_VALID, isc_mem_free, isc_mem_get, isc_mem_put, isc_mem_strdup, ISC_R_NOMEMORY, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, and zone_freedbargs().

Referenced by create_empty_zone(), dns64_reverse(), dns_zone_create(), load_zone(), and ns_zone_configure().

void dns_zone_setview ( dns_zone_t zone,
dns_view_t view 
)

Associate the zone with a view.

Require:

Definition at line 1441 of file zone.c.

References dns_view_weakattach(), dns_view_weakdetach(), dns_zone_setview(), DNS_ZONE_VALID, inline_secure(), INSIST, isc_mem_free, isc_mem_strdup, LOCK_ZONE, namebuf, REQUIRE, UNLOCK_ZONE, zone_namerd_tostr(), and zone_viewname_tostr().

Referenced by add_keydata_zone(), configure_zone(), create_empty_zone(), dns64_reverse(), dns_dlz_writeablezone(), dns_test_makezone(), and dns_zone_setview().

dns_view_t* dns_zone_getview ( dns_zone_t zone  ) 

Returns the zone's associated view.

Requires:

Definition at line 1468 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by adjust_interfaces(), asyncload(), ATF_TC_BODY(), configure_zone_acl(), freezezones(), got_transfer_quota(), ns_query(), ns_server_delzone(), ns_server_freeze(), ns_server_showzone(), ns_server_sync(), ns_stats_dump(), ns_zone_configure(), removed(), soa_query(), xfrin_recv_done(), and zone_notify().

isc_result_t dns_zone_setorigin ( dns_zone_t zone,
const dns_name_t origin 
)

Sets the zones origin to 'origin'.

Require:

Returns:

Definition at line 1476 of file zone.c.

References dns_name_dup(), dns_name_dynamic(), dns_name_free(), dns_name_init(), dns_zone_setorigin(), DNS_ZONE_VALID, inline_secure(), INSIST, isc_mem_free, isc_mem_strdup, ISC_R_SUCCESS, LOCK_ZONE, namebuf, REQUIRE, UNLOCK_ZONE, zone_name_tostr(), and zone_namerd_tostr().

Referenced by add_keydata_zone(), configure_zone(), create_empty_zone(), dns64_reverse(), dns_dlz_writeablezone(), dns_test_makezone(), dns_zone_setorigin(), and load_zone().

void dns_zone_setacache ( dns_zone_t zone,
dns_acache_t acache 
)

Associate the zone with an additional cache.

Require: 'zone' to be a valid zone. 'acache' to be a non NULL pointer.

Ensures: 'zone' will have a reference to 'acache'

Definition at line 1508 of file zone.c.

References dns_acache_attach(), dns_acache_detach(), dns_acache_setdb(), DNS_ZONE_VALID, ISC_R_EXISTS, ISC_R_SUCCESS, isc_result_totext(), isc_rwlocktype_read, LOCK_ZONE, REQUIRE, UNEXPECTED_ERROR, UNLOCK_ZONE, ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by add_keydata_zone(), and configure_zone().

static isc_result_t dns_zone_setstring ( dns_zone_t zone,
char **  field,
const char *  value 
) [static]

Definition at line 1538 of file zone.c.

References isc_mem_free, isc_mem_strdup, ISC_R_NOMEMORY, and ISC_R_SUCCESS.

Referenced by default_journal(), dns_zone_setfile3(), and dns_zone_setjournal().

isc_result_t dns_zone_setfile ( dns_zone_t zone,
const char *  file 
)

Definition at line 1557 of file zone.c.

References dns_master_style_default, dns_masterformat_text, and dns_zone_setfile3().

Referenced by add_keydata_zone(), and ATF_TC_BODY().

isc_result_t dns_zone_setfile2 ( dns_zone_t zone,
const char *  file,
dns_masterformat_t  format 
)

Definition at line 1563 of file zone.c.

References dns_master_style_default, and dns_zone_setfile3().

Referenced by load_zone().

isc_result_t dns_zone_setfile3 ( dns_zone_t zone,
const char *  file,
dns_masterformat_t  format,
const dns_master_style_t style 
)

Sets the name of the master file in the format of 'format' from which the zone loads its database to 'file'.

For zones that have no associated master file, 'file' will be NULL.

For zones with persistent databases, the file name setting is ignored.

dns_zone_setfile() is a backward-compatible form of dns_zone_setfile2(), which always specifies the dns_masterformat_text (RFC1035) format.

dns_zone_setfile2() is a backward-compatible form of dns_zone_setfile3(), which also specifies the style that should be used if a zone using the 'text' masterformat is ever dumped.

Require:

Returns:

Definition at line 1571 of file zone.c.

References default_journal(), dns_masterformat_text, dns_zone_setstring(), DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by dns_zone_setfile(), dns_zone_setfile2(), and ns_zone_configure().

const char* dns_zone_getfile ( dns_zone_t zone  ) 

Gets the name of the zone's master file, if any.

Requires:

Returns:

Definition at line 1593 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by create_empty_zone(), ns_server_delzone(), ns_server_zonestatus(), and ns_zone_reusable().

dns_ttl_t dns_zone_getmaxttl ( dns_zone_t zone  ) 

Gets the max ttl of the zone.

Requires:

Returns:

Definition at line 1600 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by update_action().

void dns_zone_setmaxttl ( dns_zone_t zone,
dns_ttl_t  maxttl 
)

Definition at line 1607 of file zone.c.

References DNS_ZONE_VALID, DNS_ZONEOPT2_CHECKTTL, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

isc_result_t dns_zone_setjournal ( dns_zone_t zone,
const char *  myjournal 
)

Sets the filename used for journaling updates / IXFR transfers. The default journal name is set by dns_zone_setfile() to be "file.jnl". If 'myjournal' is NULL, the zone will have no journal name.

Requires:

Returns:

Definition at line 1647 of file zone.c.

References dns_zone_setstring(), DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by load_zone(), and ns_zone_configure().

char* dns_zone_getjournal ( dns_zone_t zone  ) 

Returns the journal name associated with this zone. If no journal has been set this will be NULL.

Requires:

Definition at line 1660 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ixfr_init(), ns_server_delzone(), ns_xfr_start(), synczone(), update_action(), and zone_journal().

isc_boolean_t dns_zone_isdynamic ( dns_zone_t zone,
isc_boolean_t  ignore_freeze 
)

Load the origin names for a writeable DLZ database.

Definition at line 1676 of file zone.c.

References dns_acl_isnone(), dns_zone_key, dns_zone_master, dns_zone_redirect, dns_zone_slave, dns_zone_stub, DNS_ZONE_VALID, ISC_FALSE, ISC_TRUE, and REQUIRE.

Referenced by check_nsec3param(), freezezones(), ns_server_freeze(), ns_server_zonestatus(), zone_load(), and zone_postload().

isc_result_t dns_zone_rpz_enable ( dns_zone_t zone,
dns_rpz_zones_t rpzs,
dns_rpz_num_t  rpz_num 
)

Return the number include files that were encountered during load. If the number is greater than zero, 'includesp' will point to an array containing the filenames.

The array and its contents need to be freed using isc_mem_free.

Definition at line 1699 of file zone.c.

References dns_rpz_zones::defined, dns_rpz_attach_rpzs(), DNS_RPZ_INVALID_NUM, DNS_RPZ_ZBIT, ISC_R_NOTIMPLEMENTED, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by configure_zone().

dns_rpz_num_t dns_zone_get_rpz_num ( dns_zone_t zone  ) 

If a zone is a response policy zone, mark its new database.

Definition at line 1730 of file zone.c.

Referenced by configure_zone().

void dns_zone_rpz_enable_db ( dns_zone_t zone,
dns_db_t db 
)

Set the response policy associated with a zone.

Definition at line 1738 of file zone.c.

References dns_db_rpz_attach(), DNS_RPZ_INVALID_NUM, and REQUIRE.

Referenced by axfr_makedb(), and zone_startload().

static isc_boolean_t zone_touched ( dns_zone_t zone  )  [static]

Definition at line 1746 of file zone.c.

References DNS_ZONE_VALID, ISC_FALSE, isc_file_getmodtime(), ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_R_SUCCESS, isc_time_compare(), ISC_TRUE, and REQUIRE.

Referenced by zone_load().

static isc_result_t zone_load ( dns_zone_t zone,
unsigned int  flags,
isc_boolean_t  locked 
) [static]

Definition at line 1776 of file zone.c.

References cleanup(), dns_dlzdb::configure_callback, dns_dlzdb::dbdata, dns_dlzdb::dlzname, dns_db_create(), dns_db_detach(), dns_db_ispersistent(), dns_db_settask(), dns_dbtype_stub, dns_dbtype_zone, DNS_DLZ_VALID, DNS_R_CONTINUE, DNS_R_DYNAMIC, DNS_R_NOMASTERFILE, DNS_R_UPTODATE, DNS_ZONE_FLAG, dns_zone_isdynamic(), dns_zone_log(), dns_zone_master, dns_zone_none, dns_zone_redirect, DNS_ZONE_SETFLAG, dns_zone_slave, dns_zone_stub, DNS_ZONE_VALID, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_LOADING, DNS_ZONEFLG_THAW, DNS_ZONELOADFLAG_NOSTAT, DNS_ZONELOADFLAG_THAW, dns_dlzimplementation::driverarg, dns_dlzmethods::findzone, dns_dlzdb::implementation, inline_secure(), INSIST, ISC_FALSE, isc_file_exists(), ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_LOG_DEBUG, ISC_LOG_ERROR, ISC_LOG_INFO, ISC_R_NOTFOUND, ISC_R_SUCCESS, isc_result_totext(), isc_rwlocktype_write, isc_time_isepoch(), LOCK_ZONE, dns_dlzdb::mctx, dns_dlzimplementation::methods, now, REQUIRE, TIME_NOW, UNLOCK_ZONE, zone_attachdb(), zone_detachdb(), zone_postload(), zone_settimer(), zone_startload(), zone_touched(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by dns_zone_load(), dns_zone_loadandthaw(), dns_zone_loadnew(), and zone_asyncload().

isc_result_t dns_zone_load ( dns_zone_t zone  ) 

Definition at line 2011 of file zone.c.

References ISC_FALSE, and zone_load().

Referenced by load(), load_zone(), load_zones(), and ns_server_reloadcommand().

isc_result_t dns_zone_loadnew ( dns_zone_t zone  ) 

Definition at line 2016 of file zone.c.

References DNS_ZONELOADFLAG_NOSTAT, ISC_FALSE, and zone_load().

Referenced by do_addzone(), do_modzone(), load_new_zones(), and loadnew().

static void zone_asyncload ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 2021 of file zone.c.

References cleanup(), DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_idetach(), DNS_ZONE_VALID, DNS_ZONEFLG_LOADPENDING, isc_event_free(), ISC_EVENTATTR_CANCELED, isc_mem_put, ISC_R_CANCELED, ISC_R_SUCCESS, ISC_TF, ISC_TRUE, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, UNUSED, and zone_load().

Referenced by dns_zone_asyncload().

isc_result_t dns_zone_asyncload ( dns_zone_t zone,
dns_zt_zoneloaded_t  done,
void *  arg 
)

Cause the database to be loaded from its backing store asynchronously. Other zone maintenance functions are suspended until this is complete. When finished, 'done' is called to inform the caller, with 'arg' as its first argument and 'zone' as its second. (Normally, 'arg' is expected to point to the zone table but is left undefined for testing purposes.).

Require:

Returns:

Definition at line 2062 of file zone.c.

References CHECK, DNS_EVENT_ZONELOAD, DNS_ZONE_FLAG, DNS_ZONE_SETFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_LOADPENDING, isc_event_allocate(), isc_mem_get, isc_mem_put, ISC_R_ALREADYRUNNING, ISC_R_FAILURE, ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_task_send(), LOCK_ZONE, REQUIRE, UNLOCK_ZONE, zone_asyncload(), and zone_iattach().

Referenced by asyncload(), and start_zone_asyncload().

isc_boolean_t dns__zone_loadpending ( dns_zone_t zone  ) 

Indicates whether the zone is waiting to be loaded asynchronously. (Not currently intended for use outside of this module and associated tests.).

Definition at line 2106 of file zone.c.

References DNS_ZONE_FLAG, DNS_ZONE_VALID, DNS_ZONEFLG_LOADPENDING, ISC_TF, and REQUIRE.

Referenced by ATF_TC_BODY().

isc_result_t dns_zone_loadandthaw ( dns_zone_t zone  ) 

Cause the database to be loaded from its backing store. Confirm that the minimum requirements for the zone type are met, otherwise DNS_R_BADZONE is returned.

dns_zone_loadnew() only loads zones that are not yet loaded. dns_zone_load() also loads zones that are already loaded and and whose master file has changed since the last load. dns_zone_loadandthaw() is similar to dns_zone_load() but will also re-enable DNS UPDATEs when the load completes.

Require:

Returns:

Definition at line 2113 of file zone.c.

References DNS_R_CONTINUE, DNS_R_NOMASTERFILE, DNS_R_SEENINCLUDE, DNS_R_UPTODATE, DNS_ZONELOADFLAG_THAW, inline_raw(), ISC_FALSE, ISC_R_SUCCESS, and zone_load().

Referenced by freezezones(), and ns_server_freeze().

static unsigned int get_master_options ( dns_zone_t zone  )  [static]

Definition at line 2142 of file zone.c.

References DNS_MASTER_CHECKMX, DNS_MASTER_CHECKMXFAIL, DNS_MASTER_CHECKNAMES, DNS_MASTER_CHECKNAMESFAIL, DNS_MASTER_CHECKNS, DNS_MASTER_CHECKTTL, DNS_MASTER_CHECKWILDCARD, DNS_MASTER_FATALNS, DNS_MASTER_KEY, DNS_MASTER_RESIGN, DNS_MASTER_SLAVE, DNS_MASTER_ZONE, dns_zone_key, DNS_ZONE_OPTION, DNS_ZONE_OPTION2, dns_zone_redirect, dns_zone_slave, DNS_ZONEOPT2_CHECKTTL, DNS_ZONEOPT_CHECKMX, DNS_ZONEOPT_CHECKMXFAIL, DNS_ZONEOPT_CHECKNAMES, DNS_ZONEOPT_CHECKNAMESFAIL, DNS_ZONEOPT_CHECKNS, DNS_ZONEOPT_CHECKWILDCARD, and DNS_ZONEOPT_FATALNS.

Referenced by zone_gotreadhandle(), and zone_startload().

static void zone_registerinclude ( const char *  filename,
void *  arg 
) [static]

Definition at line 2171 of file zone.c.

References DNS_ZONE_VALID, isc_file_getmodtime(), ISC_LINK_INIT, ISC_LIST_APPEND, ISC_LIST_HEAD, ISC_LIST_NEXT, isc_mem_get, isc_mem_put, isc_mem_strdup, ISC_R_SUCCESS, isc_time_settoepoch(), and REQUIRE.

Referenced by zone_gotreadhandle(), and zone_startload().

static void zone_gotreadhandle ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 2208 of file zone.c.

References dns_load::callbacks, dns_load::db, dns_db_origin(), DNS_LOAD_VALID, dns_master_loadfileinc5(), DNS_R_CONTINUE, DNS_R_SEENINCLUDE, get_master_options(), isc_event_free(), ISC_EVENTATTR_CANCELED, ISC_R_CANCELED, ISC_R_SUCCESS, load(), REQUIRE, dns_load::zone, zone_loaddone(), and zone_registerinclude().

Referenced by zone_startload().

static void get_raw_serial ( dns_zone_t raw,
dns_masterrawheader_t rawdata 
) [static]

Definition at line 2244 of file zone.c.

References DNS_MASTERRAW_SOURCESERIALSET, dns_masterrawheader::flags, ISC_R_SUCCESS, LOCK, dns_masterrawheader::sourceserial, UNLOCK, and zone_get_from_db().

Referenced by dumptostream(), zone_dump(), and zone_gotwritehandle().

static void zone_gotwritehandle ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 2261 of file zone.c.

References dns_db_closeversion(), dns_db_currentversion(), dns_master_dumpinc3(), dns_master_initrawheader(), dns_master_style_default, dns_master_style_keyzone, DNS_R_CONTINUE, dns_zone_key, DNS_ZONE_VALID, dump_done(), ENTER, get_raw_serial(), inline_secure(), INSIST, isc_event_free(), ISC_EVENTATTR_CANCELED, ISC_FALSE, ISC_R_CANCELED, ISC_R_SUCCESS, isc_rwlocktype_read, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, version, ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by zone_dump().

static void zone_setrawdata ( dns_zone_t zone,
dns_masterrawheader_t header 
) [static]

Definition at line 2318 of file zone.c.

References DNS_MASTERRAW_SOURCESERIALSET, dns_masterrawheader::flags, ISC_TRUE, and dns_masterrawheader::sourceserial.

Referenced by dns_zone_setrawdata(), and zone_startload().

void dns_zone_setrawdata ( dns_zone_t zone,
dns_masterrawheader_t header 
)

Set the NSEC3 parameters for the zone.

If 'replace' is ISC_TRUE, then the existing NSEC3 chain, if any, will be replaced with the new one. If 'hash' is zero, then the replacement chain will be NSEC rather than NSEC3.

Requires:

Definition at line 2327 of file zone.c.

References LOCK_ZONE, UNLOCK_ZONE, and zone_setrawdata().

Referenced by main().

static isc_boolean_t zone_check_mx ( dns_zone_t zone,
dns_db_t db,
dns_name_t name,
dns_name_t owner 
) [static]

Definition at line 2418 of file zone.c.

References dns_db_find(), dns_fixedname_init, dns_fixedname_name, dns_name_equal(), dns_name_format(), DNS_NAME_FORMATSIZE, dns_name_issubdomain(), DNS_R_CNAME, DNS_R_DELEGATION, DNS_R_DNAME, DNS_R_EMPTYNAME, DNS_R_NXDOMAIN, DNS_R_NXRRSET, dns_rootname, dns_zone_log(), dns_zone_master, DNS_ZONE_OPTION, DNS_ZONEOPT_CHECKMXFAIL, DNS_ZONEOPT_IGNOREMXCNAME, DNS_ZONEOPT_WARNMXCNAME, fixed, ISC_FALSE, ISC_LOG_ERROR, ISC_LOG_WARNING, ISC_R_SUCCESS, ISC_TRUE, and namebuf.

Referenced by integrity_checks().

static isc_boolean_t zone_check_srv ( dns_zone_t zone,
dns_db_t db,
dns_name_t name,
dns_name_t owner 
) [static]

Definition at line 2507 of file zone.c.

References dns_db_find(), dns_fixedname_init, dns_fixedname_name, dns_name_equal(), dns_name_format(), DNS_NAME_FORMATSIZE, dns_name_issubdomain(), DNS_R_CNAME, DNS_R_DELEGATION, DNS_R_DNAME, DNS_R_EMPTYNAME, DNS_R_NXDOMAIN, DNS_R_NXRRSET, dns_rootname, dns_zone_log(), dns_zone_master, DNS_ZONE_OPTION, DNS_ZONEOPT_IGNORESRVCNAME, DNS_ZONEOPT_WARNSRVCNAME, fixed, ISC_FALSE, ISC_LOG_ERROR, ISC_LOG_WARNING, ISC_R_SUCCESS, ISC_TRUE, and namebuf.

Referenced by integrity_checks().

static isc_boolean_t zone_check_glue ( dns_zone_t zone,
dns_db_t db,
dns_name_t name,
dns_name_t owner 
) [static]

Definition at line 2595 of file zone.c.

References answer, dns_db_find(), DNS_DBFIND_GLUEOK, dns_fixedname_init, dns_fixedname_name, dns_name_format(), DNS_NAME_FORMATSIZE, dns_name_issubdomain(), DNS_R_CNAME, DNS_R_DELEGATION, DNS_R_DNAME, DNS_R_EMPTYNAME, DNS_R_GLUE, DNS_R_NXDOMAIN, DNS_R_NXRRSET, dns_rdataset_disassociate(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_zone_log(), dns_zone_master, DNS_ZONE_OPTION, DNS_ZONEOPT_CHECKSIBLING, fixed, ISC_FALSE, ISC_LOG_ERROR, ISC_LOG_WARNING, ISC_R_SUCCESS, ISC_TRUE, and namebuf.

Referenced by integrity_checks().

static isc_boolean_t zone_rrset_check_dup ( dns_zone_t zone,
dns_name_t owner,
dns_rdataset_t rdataset 
) [static]

Definition at line 2716 of file zone.c.

References answer, dns_name_format(), DNS_NAME_FORMATSIZE, dns_rdata_casecompare(), DNS_RDATA_INIT, dns_rdataset_clone(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_next(), dns_rdatatype_format(), DNS_RDATATYPE_FORMATSIZE, dns_zone_log(), DNS_ZONE_OPTION, DNS_ZONEOPT_CHECKDUPRRFAIL, ISC_FALSE, ISC_LOG_ERROR, ISC_LOG_WARNING, ISC_R_SUCCESS, ISC_TRUE, and dns_rdata::type.

Referenced by zone_check_dup().

static isc_boolean_t zone_check_dup ( dns_zone_t zone,
dns_db_t db 
) [static]

Definition at line 2774 of file zone.c.

References dns_db_allrdatasets(), dns_db_createiterator(), dns_db_detachnode(), dns_dbiterator_current(), dns_dbiterator_destroy(), dns_dbiterator_first(), dns_dbiterator_next(), dns_fixedname_init, dns_fixedname_name, dns_rdataset_disassociate(), dns_rdataset_init(), dns_rdatasetiter_current(), dns_rdatasetiter_destroy(), dns_rdatasetiter_first(), dns_rdatasetiter_next(), fixed, ISC_FALSE, ISC_R_SUCCESS, ISC_TRUE, and zone_rrset_check_dup().

Referenced by zone_postload().

static isc_boolean_t isspf ( const dns_rdata_t rdata  )  [static]

Definition at line 2823 of file zone.c.

References dns_rdata::data, INSIST, ISC_FALSE, ISC_TRUE, and dns_rdata::length.

Referenced by integrity_checks().

static isc_boolean_t integrity_checks ( dns_zone_t zone,
dns_db_t db 
) [static]

Definition at line 2851 of file zone.c.

References checkmx(), checksrv(), cleanup(), dns_db_createiterator(), dns_db_detachnode(), dns_db_findrdataset(), dns_dbiterator_current(), dns_dbiterator_destroy(), dns_dbiterator_first(), dns_dbiterator_next(), dns_fixedname_init, dns_fixedname_name, dns_name_copy(), dns_name_countlabels(), dns_name_equal(), dns_name_format(), DNS_NAME_FORMATSIZE, dns_name_issubdomain(), dns_rdata_init(), dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_next(), dns_zone_log(), DNS_ZONE_OPTION, DNS_ZONEOPT_CHECKSPF, fixed, ISC_FALSE, ISC_LOG_WARNING, ISC_R_SUCCESS, ISC_TRUE, isspf(), namebuf, dns_notify::ns, RUNTIME_CHECK, zone_check_glue(), zone_check_mx(), and zone_check_srv().

Referenced by zone_postload().

static void zone_check_dnskeys ( dns_zone_t zone,
dns_db_t db 
) [static]

Definition at line 3015 of file zone.c.

References cleanup(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detachnode(), dns_db_findnode(), dns_db_findrdataset(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_next(), dns_zone_log(), DST_ALG_RSAMD5, DST_ALG_RSASHA1, INSIST, ISC_FALSE, ISC_LOG_WARNING, ISC_R_SUCCESS, ISC_TRUE, dns_db::origin, and version.

Referenced by zone_postload().

static void resume_signingwithkey ( dns_zone_t zone  )  [static]

Definition at line 3078 of file zone.c.

References cleanup(), dns_rdata::data, dns_db_attach(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detach(), dns_db_detachnode(), dns_db_findnode(), dns_db_findrdataset(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), dns_result_totext(), dns_zone_log(), INSIST, ISC_FALSE, ISC_LOG_ERROR, ISC_R_SUCCESS, isc_rwlocktype_read, ISC_TF, dns_rdata::length, dns_db::origin, version, zone_signwithkey(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by zone_postload().

static isc_result_t zone_addnsec3chain ( dns_zone_t zone,
dns_rdata_nsec3param_t *  nsec3param 
) [static]

Definition at line 3142 of file zone.c.

References cleanup(), dns_db_attach(), dns_db_closeversion(), dns_db_createiterator(), dns_db_currentversion(), dns_db_detach(), DNS_DB_NONSEC3, dns_dbiterator_destroy(), dns_dbiterator_first(), dns_dbiterator_pause(), dns_nsec_nseconly(), dns_zone_log(), dns_notify::flags, ISC_FALSE, ISC_LIST_HEAD, ISC_LIST_INITANDAPPEND, ISC_LIST_NEXT, ISC_LOG_INFO, isc_mem_get, isc_mem_put, ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_rwlocktype_read, isc_time_isepoch(), ISC_TRUE, now, saltbuf, TIME_NOW, version, zone_settimer(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by dns_zone_addnsec3chain(), and resume_addnsec3chain().

static void resume_addnsec3chain ( dns_zone_t zone  )  [static]

Definition at line 3283 of file zone.c.

References cleanup(), dns_db_attach(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detach(), dns_db_detachnode(), dns_db_findnode(), dns_db_findrdataset(), DNS_NSEC3PARAM_BUFFERSIZE, dns_nsec3param_fromprivate(), dns_nsec_nseconly(), DNS_RDATA_INIT, dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), dns_result_totext(), dns_zone_log(), INSIST, ISC_FALSE, ISC_LOG_ERROR, ISC_R_SUCCESS, isc_rwlocktype_read, dns_db::origin, RUNTIME_CHECK, version, zone_addnsec3chain(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by zone_postload().

static void set_resigntime ( dns_zone_t zone  )  [static]

Definition at line 3357 of file zone.c.

References cleanup(), dns_acl_isnone(), dns_db_attach(), dns_db_detach(), dns_db_getsigningtime(), dns_fixedname_init, dns_fixedname_name, dns_rdataset_disassociate(), dns_rdataset_init(), dns_zone_master, fixed, inline_secure(), ISC_R_SUCCESS, isc_random_get(), isc_rwlocktype_read, isc_time_set(), isc_time_settoepoch(), dns_rdataset::resign, ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by dns_zone_markdirty(), dns_zone_setsigresigninginterval(), zone_nsec3chain(), zone_postload(), zone_resigninc(), and zone_sign().

static isc_result_t check_nsec3param ( dns_zone_t zone,
dns_db_t db 
) [static]

Definition at line 3404 of file zone.c.

References cleanup(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detachnode(), dns_db_findnode(), dns_db_findrdataset(), dns_nsec3_supportedhash(), DNS_NSEC3_UNKNOWNALG, DNS_R_BADZONE, DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), dns_result_totext(), dns_zone_isdynamic(), dns_zone_log(), dns_zone_master, DNS_ZONE_OPTION, DNS_ZONEOPT_NSEC3TESTZONE, INSIST, ISC_FALSE, ISC_LOG_ERROR, ISC_LOG_WARNING, ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, ISC_TRUE, dns_db::origin, and version.

Referenced by zone_postload(), and zone_replacedb().

static void set_refreshkeytimer ( dns_zone_t zone,
dns_rdata_keydata_t *  key,
isc_stdtime_t  now,
isc_boolean_t  force 
) [static]

Definition at line 3501 of file zone.c.

References dns_zone_log(), DNS_ZONE_TIME_ADD, ENTER, ISC_LOG_DEBUG, isc_time_compare(), isc_time_formattimestamp(), TIME_NOW, and zone_settimer().

Referenced by create_keydata(), keyfetch_done(), load_secroots(), and minimal_update().

static isc_result_t create_keydata ( dns_zone_t zone,
dns_db_t db,
dns_dbversion_t ver,
dns_diff_t diff,
dns_keytable_t keytable,
dns_keynode_t **  keynodep,
isc_boolean_t changed 
) [static]

Definition at line 3537 of file zone.c.

References CHECK, DNS_DIFFOP_ADD, dns_keydata_fromdnskey(), dns_keynode_key(), dns_keytable_detachkeynode(), dns_keytable_nextkeynode(), dns_rdata_fromregion(), dns_rdata_fromstruct(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dst_key_class(), DST_KEY_MAXSIZE, dst_key_name(), dst_key_todns(), ENTER, isc_buffer_init, isc_buffer_usedregion, ISC_R_NOTFOUND, ISC_R_SUCCESS, isc_stdtime_get(), ISC_TRUE, dns_notify::key, now, r, dns_rdata::rdclass, REQUIRE, set_refreshkeytimer(), and update_one_rr().

Referenced by sync_keyzone().

static isc_result_t delete_keydata ( dns_db_t db,
dns_dbversion_t ver,
dns_diff_t diff,
dns_name_t name,
dns_rdataset_t rdataset 
) [static]

Definition at line 3618 of file zone.c.

References DNS_DIFFOP_DEL, DNS_RDATA_INIT, dns_rdata_reset(), dns_rdataset_current(), dns_rdataset_first(), dns_rdataset_next(), ISC_R_NOMORE, ISC_R_SUCCESS, and update_one_rr().

Referenced by sync_keyzone().

static isc_result_t compute_tag ( dns_name_t name,
dns_rdata_dnskey_t *  dnskey,
isc_mem_t mctx,
dns_keytag_t tag 
) [static]

Definition at line 3643 of file zone.c.

References buffer, dns_dnssec_keyfromrdata(), dns_rdata_fromstruct(), DNS_RDATA_INIT, dst_key_free(), dst_key_id(), isc_buffer_init, ISC_R_SUCCESS, and dns_rdata::rdclass.

Referenced by keyfetch_done().

static void trust_key ( dns_zone_t zone,
dns_name_t keyname,
dns_rdata_dnskey_t *  dnskey,
isc_mem_t mctx 
) [static]

Definition at line 3668 of file zone.c.

References buffer, CHECK, dns_dnssec_keyfromrdata(), dns_keytable_add(), dns_keytable_detach(), dns_rdata_fromstruct(), DNS_RDATA_INIT, dns_view_getsecroots(), dst_key_free(), isc_buffer_init, ISC_R_SUCCESS, ISC_TRUE, and dns_rdata::rdclass.

Referenced by keyfetch_done(), and load_secroots().

static void fail_secure ( dns_zone_t zone,
dns_name_t keyname 
) [static]

Definition at line 3703 of file zone.c.

References dns_keytable_detach(), dns_keytable_marksecure(), dns_view_getsecroots(), and ISC_R_SUCCESS.

Referenced by keyfetch_done(), and load_secroots().

static void load_secroots ( dns_zone_t zone,
dns_name_t name,
dns_rdataset_t rdataset 
) [static]

Definition at line 3719 of file zone.c.

References dns_keydata_todnskey(), dns_keytable_delete(), dns_keytable_detach(), dns_name_format(), DNS_NAME_FORMATSIZE, DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_first(), dns_rdataset_next(), dns_view_getsecroots(), dns_zone_log(), fail_secure(), ISC_LOG_ERROR, ISC_R_SUCCESS, ISC_R_UNEXPECTEDEND, isc_stdtime_get(), ISC_TRUE, dns_notify::mctx, namebuf, now, RUNTIME_CHECK, set_refreshkeytimer(), and trust_key().

Referenced by sync_keyzone().

static isc_result_t do_one_tuple ( dns_difftuple_t **  tuple,
dns_db_t db,
dns_dbversion_t ver,
dns_diff_t diff 
) [static]

Definition at line 3791 of file zone.c.

References dns_diff_appendminimal(), dns_diff_apply(), dns_diff_init(), dns_difftuple_free(), ISC_LIST_APPEND, ISC_LIST_UNLINK, ISC_R_SUCCESS, and dns_diff::mctx.

static isc_result_t update_soa_serial ( dns_db_t db,
dns_dbversion_t ver,
dns_diff_t diff,
isc_mem_t mctx,
dns_updatemethod_t  method 
) [static]

Definition at line 3839 of file zone.c.

References CHECK, dns_db_createsoatuple(), DNS_DIFFOP_ADD, DNS_DIFFOP_DEL, dns_difftuple_copy(), dns_difftuple_free(), dns_soa_getserial(), dns_soa_setserial(), dns_update_soaserial(), dns_updatemethod_none, do_one_tuple(), INSIST, ISC_R_SUCCESS, dns_difftuple::op, and dns_difftuple::rdata.

Referenced by keydone(), keyfetch_done(), receive_secure_serial(), sync_keyzone(), update_action(), zone_nsec3chain(), zone_refreshkeys(), zone_resigninc(), and zone_sign().

static isc_result_t zone_journal ( dns_zone_t zone,
dns_diff_t diff,
isc_uint32_t sourceserial,
const char *  caller 
) [static]

Definition at line 3871 of file zone.c.

References DNS_JOURNAL_CREATE, dns_journal_destroy(), dns_journal_open(), dns_journal_set_sourceserial(), DNS_JOURNAL_WRITE, dns_journal_write_transaction(), dns_result_totext(), dns_zone_getjournal(), dns_zone_log(), ENTER, ISC_LOG_ERROR, ISC_R_SUCCESS, and journal.

Referenced by keydone(), keyfetch_done(), receive_secure_serial(), sync_keyzone(), zone_nsec3chain(), zone_refreshkeys(), zone_resigninc(), and zone_sign().

static isc_result_t add_soa ( dns_zone_t zone,
dns_db_t db 
) [static]

Definition at line 3911 of file zone.c.

References dns_db_closeversion(), dns_db_newversion(), dns_diff_clear(), dns_diff_init(), DNS_DIFFOP_ADD, DNS_RDATA_INIT, dns_result_totext(), dns_rootname, DNS_SOA_BUFFERSIZE, dns_soa_buildrdata(), dns_zone_log(), INSIST, ISC_LOG_DEBUG, ISC_LOG_ERROR, ISC_R_SUCCESS, ISC_TF, and update_one_rr().

Referenced by create_empty_zone(), and zone_postload().

static isc_result_t sync_keyzone ( dns_zone_t zone,
dns_db_t db 
) [static]

Definition at line 3961 of file zone.c.

References CHECK, commit(), create_keydata(), dns_rbtnode::data, delete_keydata(), dns_db_closeversion(), dns_db_find(), dns_db_newversion(), DNS_DBFIND_NOWILD, dns_diff_clear(), dns_diff_init(), dns_fixedname_init, dns_fixedname_name, dns_keynode_key(), dns_keynode_managed(), dns_keytable_attachkeynode(), dns_keytable_detach(), dns_keytable_detachkeynode(), dns_keytable_find(), dns_name_init(), DNS_R_NEWORIGIN, DNS_R_PARTIALMATCH, dns_rbtnodechain_current(), dns_rbtnodechain_first(), dns_rbtnodechain_init(), dns_rbtnodechain_next(), dns_rdataset_isassociated(), dns_result_totext(), dns_rriterator_current(), dns_rriterator_destroy(), dns_rriterator_first(), dns_rriterator_init(), dns_rriterator_nextrrset(), dns_view_getsecroots(), DNS_ZONE_FLAG, dns_zone_log(), DNS_ZONE_SETFLAG, DNS_ZONEFLG_LOADED, dst_key_name(), INSIST, ISC_FALSE, ISC_LOG_DEBUG, ISC_LOG_ERROR, ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, isc_rwlocktype_write, isc_time_settoepoch(), ISC_TRUE, dns_notify::key, load_secroots(), dns_diff::mctx, dns_rbtnodechain::mctx, origin, dns_keytable::rwlock, RWLOCK, RWUNLOCK, dns_keytable::table, dns_rdataset::type, update_soa_serial(), zone_journal(), and zone_needdump().

Referenced by dns_zone_synckeyzone(), and zone_postload().

isc_result_t dns_zone_synckeyzone ( dns_zone_t zone  ) 

Set the data to be included in the header when the zone is dumped in binary format.

Definition at line 4118 of file zone.c.

References CHECK, dns_db_detach(), DNS_R_BADZONE, dns_zone_getdb(), dns_zone_key, LOCK_ZONE, sync_keyzone(), and UNLOCK_ZONE.

Referenced by add_keydata_zone(), and mkey_refresh().

static void maybe_send_secure ( dns_zone_t zone  )  [static]

Definition at line 4138 of file zone.c.

References DNS_ZONE_SETFLAG, DNS_ZONEFLG_SENDSECURE, ISC_R_SUCCESS, zone_get_from_db(), zone_send_securedb(), and zone_send_secureserial().

Referenced by zone_postload().

static isc_boolean_t zone_unchanged ( dns_db_t db1,
dns_db_t db2,
isc_mem_t mctx 
) [static]

Definition at line 4168 of file zone.c.

References answer, dns_db_diffx(), dns_diff_clear(), dns_diff_init(), ISC_FALSE, ISC_LIST_EMPTY, ISC_R_SUCCESS, and ISC_TRUE.

Referenced by zone_postload().

static isc_boolean_t exit_check ( dns_zone_t zone  )  [static]

Definition at line 4690 of file zone.c.

References DNS_ZONE_FLAG, DNS_ZONEFLG_SHUTDOWN, INSIST, ISC_FALSE, isc_refcount_current, ISC_TRUE, LOCKED_ZONE, and REQUIRE.

static isc_boolean_t zone_check_ns ( dns_zone_t zone,
dns_db_t db,
dns_dbversion_t version,
dns_name_t name,
isc_boolean_t  logit 
) [static]

Definition at line 4704 of file zone.c.

References dns_db_find(), dns_fixedname_init, dns_fixedname_name, dns_name_format(), DNS_NAME_FORMATSIZE, DNS_R_CNAME, DNS_R_DNAME, DNS_R_EMPTYNAME, DNS_R_NXDOMAIN, DNS_R_NXRRSET, dns_zone_log(), dns_zone_master, DNS_ZONE_OPTION, DNS_ZONEOPT_NOCHECKNS, fixed, ISC_FALSE, ISC_LOG_ERROR, ISC_LOG_WARNING, ISC_R_SUCCESS, ISC_TRUE, and namebuf.

Referenced by zone_count_ns_rr().

static isc_result_t zone_count_ns_rr ( dns_zone_t zone,
dns_db_t db,
dns_dbnode_t node,
dns_dbversion_t version,
unsigned int *  nscount,
unsigned int *  errors,
isc_boolean_t  logit 
) [static]

Definition at line 4770 of file zone.c.

References dns_db_findrdataset(), dns_name_issubdomain(), dns_rdata_init(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_invalidate(), dns_rdataset_isassociated(), dns_rdataset_next(), dns_zone_master, dns_zone_slave, INSIST, ISC_R_NOTFOUND, ISC_R_SUCCESS, dns_notify::ns, RUNTIME_CHECK, and zone_check_ns().

Referenced by zone_get_from_db().

static isc_result_t zone_load_soa_rr ( dns_db_t db,
dns_dbnode_t node,
dns_dbversion_t version,
unsigned int *  soacount,
isc_uint32_t serial,
isc_uint32_t refresh,
isc_uint32_t retry,
isc_uint32_t expire,
isc_uint32_t minimum 
) [static]

Definition at line 4826 of file zone.c.

References dns_db_findrdataset(), dns_rdata_init(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_invalidate(), dns_rdataset_isassociated(), dns_rdataset_next(), INSIST, ISC_R_NOTFOUND, ISC_R_SUCCESS, and RUNTIME_CHECK.

Referenced by zone_get_from_db().

void dns_zone_attach ( dns_zone_t source,
dns_zone_t **  target 
)

Attach '*target' to 'source' incrementing its external reference count.

Require:

Definition at line 4982 of file zone.c.

References DNS_ZONE_VALID, isc_refcount_increment, and REQUIRE.

Referenced by add_keydata_zone(), add_zone_tolist(), configure_zone(), dns_acache_getentry(), dns_acache_setentry(), dns_viewlist_findzone(), dns_zt_find(), dns_zt_mount(), ns_server_freeze(), ns_server_refreshcommand(), ns_server_retransfercommand(), ns_update_start(), query_find(), receive_secure_serial(), and xfrout_ctx_create().

void dns_zone_detach ( dns_zone_t **  zonep  ) 

Detach from a zone decrementing its external reference count. If this was the last external reference to the zone it will be shut down and eventually freed.

Require:

Definition at line 4990 of file zone.c.

References dns_zone_detach(), dns_zone_idetach(), DNS_ZONE_VALID, free_now, INSIST, ISC_FALSE, isc_refcount_decrement, isc_task_send(), ISC_TRUE, LOCK_ZONE, REQUIRE, secure(), UNLOCK_ZONE, and zone_free().

Referenced by add_keydata_zone(), ATF_TC_BODY(), auto_detach(), clear_entry(), configure_view(), configure_zone(), create_empty_zone(), destroy(), dns64_reverse(), dns_acache_getentry(), dns_dlz_writeablezone(), dns_test_makezone(), dns_view_find2(), dns_view_findzone(), dns_view_findzonecut2(), dns_viewlist_findzone(), dns_zone_detach(), do_addzone(), do_modzone(), dumpcontext_destroy(), forward_action(), forward_callback(), freezezones(), load_zone(), ns_notify_start(), ns_server_delzone(), ns_server_freeze(), ns_server_notifycommand(), ns_server_refreshcommand(), ns_server_rekey(), ns_server_reloadcommand(), ns_server_retransfercommand(), ns_server_showzone(), ns_server_signing(), ns_server_sync(), ns_server_zonestatus(), ns_update_start(), ns_xfr_start(), ns_zone_reusable(), query_addadditional(), query_addadditional2(), query_addbestns(), query_discardcache(), query_find(), query_getdb(), query_getzonedb(), query_reset(), receive_secure_serial(), rpz_clean(), rpz_rrset_find(), synczone(), updatedone_action(), view_flushanddetach(), xfrout_ctx_destroy(), zone_from_args(), and zone_shutdown().

void dns_zone_iattach ( dns_zone_t source,
dns_zone_t **  target 
)

Attach '*target' to 'source' incrementing its internal reference count. This is intended for use by operations such as zone transfers that need to prevent the zone object from being freed but not from shutting down.

Require:

Definition at line 5050 of file zone.c.

References DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, and zone_iattach().

Referenced by dns_zone_forwardupdate(), xfrin_create(), and zone_notify().

void dns_zone_idetach ( dns_zone_t **  zonep  ) 

Detach from a zone decrementing its internal reference count. If there are no more internal or external references to the zone, it will be freed.

Require:

Definition at line 5091 of file zone.c.

References DNS_ZONE_VALID, exit_check(), INSIST, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, and zone_free().

Referenced by dns_zone_detach(), dump_done(), forward_destroy(), keydone(), maybe_free(), notify_destroy(), receive_secure_db(), receive_secure_serial(), refresh_callback(), soa_query(), stub_callback(), xfrin_create(), zone_asyncload(), zone_loaddone(), and zone_shutdown().

isc_mem_t* dns_zone_getmctx ( dns_zone_t zone  ) 

Get the memory context of a zone.

Requires:

Definition at line 5109 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by configure_staticstub(), configure_staticstub_serveraddrs(), configure_staticstub_servernames(), configure_zone_acl(), configure_zone_ssutable(), ns_server_zonestatus(), and ns_zone_configure().

dns_zonemgr_t* dns_zone_getmgr ( dns_zone_t zone  ) 

If 'zone' is managed return the zone manager otherwise NULL.

Requires:

Definition at line 5116 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by xfrin_connect_done().

void dns_zone_setflag ( dns_zone_t zone,
unsigned int  flags,
isc_boolean_t  value 
)

Sets ('value' == 'ISC_TRUE') / clears ('value' == 'IS_FALSE') zone flags. Valid flag bits are DNS_ZONE_F_*.

Requires

Definition at line 5123 of file zone.c.

References DNS_ZONE_CLRFLAG, DNS_ZONE_SETFLAG, DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

void dns_zone_setoption ( dns_zone_t zone,
unsigned int  option,
isc_boolean_t  value 
)

Definition at line 5135 of file zone.c.

References DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by add_keydata_zone(), create_empty_zone(), dns64_reverse(), load_zone(), and ns_zone_configure().

void dns_zone_setoption2 ( dns_zone_t zone,
unsigned int  option,
isc_boolean_t  value 
)

Set the given options on ('value' == ISC_TRUE) or off ('value' == ISC_FALSE).

dns_zone_setoption2() has been introduced because the number of options needed now exceeds the 32 bits in the zone->options field; it should be used set options with names beginning with DNS_ZONEOPT2_.

Require:

Definition at line 5149 of file zone.c.

References DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by load_zone().

unsigned int dns_zone_getoptions ( dns_zone_t zone  ) 

Definition at line 5163 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by check_mx(), dns_update_signaturesinc(), and update_action().

unsigned int dns_zone_getoptions2 ( dns_zone_t zone  ) 

Returns the current zone options.

Callers should be aware there is now more than one set of zone options. dns_zone_getoptions2() has been introduced because the number of options needed now exceeds the 32 bits in the zone->options field. It returns the options whose names begin with DNS_ZONEOPT2_.

Require:

Definition at line 5170 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by update_action().

void dns_zone_setkeyopt ( dns_zone_t zone,
unsigned int  option,
isc_boolean_t  value 
)

Set key options on ('value' == ISC_TRUE) or off ('value' == ISC_FALSE).

Require:

Definition at line 5177 of file zone.c.

References DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

unsigned int dns_zone_getkeyopts ( dns_zone_t zone  ) 

Returns the current zone key options.

Require:

Definition at line 5190 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by configure_zone(), ns_server_rekey(), and ns_server_zonestatus().

isc_result_t dns_zone_setxfrsource4 ( dns_zone_t zone,
const isc_sockaddr_t xfrsource 
)

Definition at line 5198 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_sockaddr_t* dns_zone_getxfrsource4 ( dns_zone_t zone  ) 

Definition at line 5209 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by dns_xfrin_create().

isc_result_t dns_zone_setxfrsource4dscp ( dns_zone_t zone,
isc_dscp_t  dscp 
)

Definition at line 5215 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_dscp_t dns_zone_getxfrsource4dscp ( dns_zone_t zone  ) 

Definition at line 5226 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by dns_xfrin_create().

isc_result_t dns_zone_setxfrsource6 ( dns_zone_t zone,
const isc_sockaddr_t xfrsource 
)

/ Get the DSCP value associated with the transfer/alt-transfer source.

Require:

Definition at line 5232 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_sockaddr_t* dns_zone_getxfrsource6 ( dns_zone_t zone  ) 

Definition at line 5243 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by adjust_interfaces(), and dns_xfrin_create().

isc_dscp_t dns_zone_getxfrsource6dscp ( dns_zone_t zone  ) 

Definition at line 5249 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by adjust_interfaces(), and dns_xfrin_create().

isc_result_t dns_zone_setxfrsource6dscp ( dns_zone_t zone,
isc_dscp_t  dscp 
)

/ Get the DSCP value associated with the transfer/alt-transfer source.

Require:

Definition at line 5255 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_result_t dns_zone_setaltxfrsource4 ( dns_zone_t zone,
const isc_sockaddr_t xfrsource 
)

Set the source address to be used in IPv4 zone transfers.

Require:

Returns:

Definition at line 5266 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_sockaddr_t* dns_zone_getaltxfrsource4 ( dns_zone_t zone  ) 

Returns the source address set by a previous dns_zone_setxfrsource4 call, or the default of inaddr_any, port 0.

Require:

Definition at line 5279 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

isc_result_t dns_zone_setaltxfrsource4dscp ( dns_zone_t zone,
isc_dscp_t  dscp 
)

Set the DSCP value associated with the transfer/alt-transfer source.

Require:

Returns:

Definition at line 5285 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_dscp_t dns_zone_getaltxfrsource4dscp ( dns_zone_t zone  ) 

Definition at line 5296 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

isc_result_t dns_zone_setaltxfrsource6 ( dns_zone_t zone,
const isc_sockaddr_t xfrsource 
)

Set the source address to be used in IPv6 zone transfers.

Require:

Returns:

Definition at line 5302 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_sockaddr_t* dns_zone_getaltxfrsource6 ( dns_zone_t zone  ) 

Returns the source address set by a previous dns_zone_setxfrsource6 call, or the default of in6addr_any, port 0.

Require:

Definition at line 5315 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

isc_result_t dns_zone_setaltxfrsource6dscp ( dns_zone_t zone,
isc_dscp_t  dscp 
)

Set the DSCP value associated with the transfer/alt-transfer source.

Require:

Returns:

Definition at line 5321 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_dscp_t dns_zone_getaltxfrsource6dscp ( dns_zone_t zone  ) 

Definition at line 5332 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

isc_result_t dns_zone_setnotifysrc4 ( dns_zone_t zone,
const isc_sockaddr_t notifysrc 
)

Set the source address to be used with IPv4 NOTIFY messages.

Require:

Returns:

Definition at line 5338 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_sockaddr_t* dns_zone_getnotifysrc4 ( dns_zone_t zone  ) 

Returns the source address set by a previous dns_zone_setnotifysrc4 call, or the default of inaddr_any, port 0.

Require:

Definition at line 5349 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

isc_result_t dns_zone_setnotifysrc4dscp ( dns_zone_t zone,
isc_dscp_t  dscp 
)

/ Get the DCSP value associated with the notify source.

Require:

Require: Returns:

Definition at line 5355 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_dscp_t dns_zone_getnotifysrc4dscp ( dns_zone_t zone  ) 

Definition at line 5366 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

isc_result_t dns_zone_setnotifysrc6 ( dns_zone_t zone,
const isc_sockaddr_t notifysrc 
)

/ Get the DSCP value associated with the notify source.

Require:

Require: Returns:

Definition at line 5372 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_sockaddr_t* dns_zone_getnotifysrc6 ( dns_zone_t zone  ) 

Returns the source address set by a previous dns_zone_setnotifysrc6 call, or the default of in6addr_any, port 0.

Require:

Definition at line 5383 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by adjust_interfaces().

static isc_boolean_t same_addrs ( const isc_sockaddr_t old,
const isc_sockaddr_t new,
isc_uint32_t  count 
) [static]

Definition at line 5389 of file zone.c.

References ISC_FALSE, isc_sockaddr_equal(), and ISC_TRUE.

Referenced by dns_zone_setalsonotifydscpkeys(), and dns_zone_setmasterswithkeys().

static isc_boolean_t same_keynames ( dns_name_t **  old,
dns_name_t **  new,
isc_uint32_t  count 
) [static]

Definition at line 5401 of file zone.c.

References dns_name_equal(), ISC_FALSE, and ISC_TRUE.

Referenced by dns_zone_setalsonotifydscpkeys(), and dns_zone_setmasterswithkeys().

static void clear_addresskeylist ( isc_sockaddr_t **  addrsp,
isc_dscp_t **  dscpsp,
dns_name_t ***  keynamesp,
unsigned int *  countp,
isc_mem_t mctx 
) [static]

Definition at line 5420 of file zone.c.

References dns_name_free(), isc_mem_put, and REQUIRE.

Referenced by dns_zone_setalsonotifydscpkeys(), and dns_zone_setmasterswithkeys().

static isc_result_t set_addrkeylist ( unsigned int  count,
const isc_sockaddr_t addrs,
isc_sockaddr_t **  newaddrsp,
const isc_dscp_t dscp,
isc_dscp_t **  newdscpp,
dns_name_t **  names,
dns_name_t ***  newnamesp,
isc_mem_t mctx 
) [static]

Definition at line 5462 of file zone.c.

References dns_name_dup(), dns_name_free(), dns_name_init(), isc_mem_get, isc_mem_put, ISC_R_NOMEMORY, ISC_R_SUCCESS, and REQUIRE.

Referenced by dns_zone_setalsonotifydscpkeys(), and dns_zone_setmasterswithkeys().

isc_result_t dns_zone_setnotifysrc6dscp ( dns_zone_t zone,
isc_dscp_t  dscp 
)

/ Get the DCSP value associated with the notify source.

Require:

Require: Returns:

Definition at line 5540 of file zone.c.

References DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

isc_dscp_t dns_zone_getnotifysrc6dscp ( dns_zone_t zone  ) 

Definition at line 5551 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by adjust_interfaces().

isc_result_t dns_zone_setalsonotify ( dns_zone_t zone,
const isc_sockaddr_t notify,
isc_uint32_t  count 
)

Definition at line 5557 of file zone.c.

References dns_zone_setalsonotifydscpkeys().

Referenced by ns_zone_configure(), and zone_free().

isc_result_t dns_zone_setalsonotifywithkeys ( dns_zone_t zone,
const isc_sockaddr_t notify,
dns_name_t **  keynames,
isc_uint32_t  count 
)

Definition at line 5565 of file zone.c.

References dns_zone_setalsonotifydscpkeys().

isc_result_t dns_zone_setalsonotifydscpkeys ( dns_zone_t zone,
const isc_sockaddr_t notify,
const isc_dscp_t dscps,
dns_name_t **  keynames,
isc_uint32_t  count 
)

Set the list of additional servers to be notified when a zone changes. To clear the list use 'count = 0'.

dns_zone_alsonotifywithkeys() allows each notify address to be associated with a TSIG key.

Require:

Returns:

Definition at line 5573 of file zone.c.

References clear_addresskeylist(), DNS_ZONE_VALID, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, same_addrs(), same_keynames(), set_addrkeylist(), and UNLOCK_ZONE.

Referenced by dns_zone_setalsonotify(), dns_zone_setalsonotifywithkeys(), and ns_zone_configure().

isc_result_t dns_zone_setmasters ( dns_zone_t zone,
const isc_sockaddr_t masters,
isc_uint32_t  count 
)

Definition at line 5622 of file zone.c.

References dns_zone_setmasterswithkeys().

Referenced by ns_zone_configure().

isc_result_t dns_zone_setmasterswithkeys ( dns_zone_t zone,
const isc_sockaddr_t masters,
dns_name_t **  keynames,
isc_uint32_t  count 
)

Set the list of master servers for the zone.

Require:

Returns:

Definition at line 5632 of file zone.c.

References clear_addresskeylist(), dns_request_cancel(), DNS_ZONE_CLRFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_NOMASTERS, INSIST, ISC_FALSE, isc_mem_get, isc_mem_put, ISC_R_NOMEMORY, ISC_R_SUCCESS, LOCK_ZONE, REQUIRE, same_addrs(), same_keynames(), set_addrkeylist(), and UNLOCK_ZONE.

Referenced by dns_zone_setmasters(), ns_zone_configure(), and zone_free().

isc_result_t dns_zone_getdb ( dns_zone_t zone,
dns_db_t **  dbp 
)

Attach '*dbp' to the database to if it exists otherwise return DNS_R_NOTLOADED.

Require:

Returns:

Definition at line 5724 of file zone.c.

References dns_db_attach(), DNS_R_NOTLOADED, DNS_ZONE_VALID, ISC_R_SUCCESS, isc_rwlocktype_read, REQUIRE, ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by ATF_TC_BODY(), check_ttls(), dns_view_find2(), dns_view_findzonecut2(), dns_xfrin_create3(), dns_zone_synckeyzone(), do_addzone(), do_modzone(), dumpdone(), mkey_dumpzone(), ns_server_delzone(), ns_server_signing(), ns_server_zonestatus(), ns_xfr_start(), query_getzonedb(), query_iscachevalid(), redirect(), and update_action().

void dns_zone_setdb ( dns_zone_t zone,
dns_db_t db 
)

Sets the zone database to 'db'.

This function is expected to be used to configure a zone with a database which is not loaded from a file or zone transfer. It can be used for a general purpose zone, but right now its use is limited to static-stub zones to avoid possible undiscovered problems in the general cases.

Require:

Definition at line 5740 of file zone.c.

References dns_db_attach(), dns_zone_staticstub, DNS_ZONE_VALID, isc_rwlocktype_write, REQUIRE, ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by configure_staticstub().

void dns_zone_maintenance ( dns_zone_t zone  ) 

Perform regular maintenance on the zone. This is called as a result of a zone being managed.

Require

Definition at line 5755 of file zone.c.

References DNS_ZONE_VALID, ENTER, LOCK_ZONE, now, REQUIRE, TIME_NOW, UNLOCK_ZONE, and zone_settimer().

Referenced by dns_zonemgr_forcemaint().

static isc_boolean_t was_dumping ( dns_zone_t zone  )  [inline, static]

Definition at line 5769 of file zone.c.

References DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, DNS_ZONE_SETFLAG, DNS_ZONEFLG_DUMPING, DNS_ZONEFLG_NEEDDUMP, isc_time_settoepoch(), LOCKED_ZONE, and REQUIRE.

Referenced by dns_zone_dump(), dns_zone_flush(), and zone_maintenance().

static isc_result_t find_zone_keys ( dns_zone_t zone,
dns_db_t db,
dns_dbversion_t ver,
isc_mem_t mctx,
unsigned int  maxkeys,
dst_key_t **  keys,
unsigned int *  nkeys 
) [static]

Definition at line 5784 of file zone.c.

References CHECK, directory, dns_db_detachnode(), dns_db_findnode(), dns_db_origin(), dns_dnssec_findzonekeys2(), dns_zone_getkeydirectory(), ISC_FALSE, ISC_R_NOTFOUND, and ISC_R_SUCCESS.

static isc_result_t offline ( dns_db_t db,
dns_dbversion_t ver,
zonediff_t zonediff,
dns_name_t name,
dns_ttl_t  ttl,
dns_rdata_t rdata 
) [static]

Definition at line 5806 of file zone.c.

References zonediff_t::diff, DNS_DIFFOP_ADDRESIGN, DNS_DIFFOP_DELRESIGN, DNS_RDATA_OFFLINE, dns_rdata::flags, ISC_R_SUCCESS, ISC_TRUE, zonediff_t::offline, and update_one_rr().

Referenced by del_sigs(), and rdata_from_slab().

static void set_key_expiry_warning ( dns_zone_t zone,
isc_stdtime_t  when,
isc_stdtime_t  now 
) [static]

Definition at line 5825 of file zone.c.

References dns_zone_log(), ISC_LOG_ERROR, ISC_LOG_NOTICE, ISC_LOG_WARNING, isc_time_formattimestamp(), isc_time_set(), and isc_time_settoepoch().

Referenced by del_sigs(), and zone_maintenance().

static isc_boolean_t delsig_ok ( dns_rdata_rrsig_t *  rrsig_ptr,
dst_key_t **  keys,
unsigned int  nkeys,
isc_boolean_t warn 
) [static]

Definition at line 5860 of file zone.c.

References dst_key_alg(), dst_key_id(), dst_key_isprivate(), ISC_FALSE, ISC_TRUE, and KSK.

Referenced by del_sigs().

static isc_result_t del_sigs ( dns_zone_t zone,
dns_db_t db,
dns_dbversion_t ver,
dns_name_t name,
dns_rdatatype_t  type,
zonediff_t zonediff,
dst_key_t **  keys,
unsigned int  nkeys,
isc_stdtime_t  now,
isc_boolean_t  incremental 
) [static]

Definition at line 5914 of file zone.c.

References delsig_ok(), zonediff_t::diff, dns_db_detachnode(), dns_db_findnode(), dns_db_findnsec3node(), dns_db_findrdataset(), DNS_DIFFOP_DELRESIGN, dns_name_format(), DNS_NAME_FORMATSIZE, DNS_RDATA_INIT, DNS_RDATA_OFFLINE, dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), dns_secalg_format(), dns_time64_from32(), dns_zone_log(), dst_key_alg(), dst_key_id(), dst_key_inactive(), dst_key_isprivate(), dns_rdata::flags, INSIST, ISC_FALSE, ISC_LOG_ERROR, ISC_LOG_WARNING, ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, ISC_TRUE, offline(), origin, RUNTIME_CHECK, set_key_expiry_warning(), dns_rdataset::ttl, and update_one_rr().

Referenced by update_sigs(), zone_nsec3chain(), zone_resigninc(), and zone_sign().

static isc_result_t add_sigs ( dns_db_t db,
dns_dbversion_t ver,
dns_name_t name,
dns_rdatatype_t  type,
dns_diff_t diff,
dst_key_t **  keys,
unsigned int  nkeys,
isc_mem_t mctx,
isc_stdtime_t  inception,
isc_stdtime_t  expire,
isc_boolean_t  check_ksk,
isc_boolean_t  keyset_kskonly 
) [static]

Definition at line 6092 of file zone.c.

References ALG, buffer, CHECK, dns_db_detachnode(), dns_db_findnode(), dns_db_findnsec3node(), dns_db_findrdataset(), DNS_DIFFOP_ADDRESIGN, dns_dnssec_sign(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdataset_disassociate(), dns_rdataset_init(), dns_rdataset_isassociated(), dst_key_isprivate(), INSIST, isc_buffer_clear, isc_buffer_init, ISC_FALSE, ISC_R_NOTFOUND, ISC_R_SUCCESS, ISC_TRUE, KSK, REVOKE, dns_rdataset::ttl, and update_one_rr().

static void zone_resigninc ( dns_zone_t zone  )  [static]

Definition at line 6189 of file zone.c.

References add_sigs(), CHECK, dns_rdataset::covers, del_sigs(), zonediff_t::diff, dns_db_attach(), dns_db_closeversion(), dns_db_detach(), dns_db_getsigningtime(), dns_db_newversion(), dns_diff_clear(), dns_diff_init(), DNS_DUMP_DELAY, dns_fixedname_init, dns_fixedname_name, DNS_MAXZONEKEYS, dns_rdataset_disassociate(), dns_rdataset_init(), dns_result_totext(), dns_zone_getsigvalidityinterval(), dns_zone_log(), DNS_ZONE_OPTION, DNS_ZONE_SETFLAG, DNS_ZONEFLG_NEEDNOTIFY, DNS_ZONEKEY_NORESIGN, DNS_ZONEKEY_OPTION, DNS_ZONEOPT_DNSKEYKSKONLY, DNS_ZONEOPT_UPDATECHECKKSK, dst_key_free(), ENTER, find_zone_keys(), fixed, INSIST, ISC_FALSE, isc_interval_set(), ISC_LIST_EMPTY, ISC_LOG_ERROR, ISC_R_FAILURE, ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, isc_random_get(), isc_rwlocktype_read, isc_stdtime_get(), isc_time_nowplusinterval(), ISC_TRUE, jitter, keyset_kskonly, LOCK_ZONE, dns_diff::mctx, dns_db::mctx, now, zonediff_t::offline, dns_db::origin, dns_rdataset::resign, set_resigntime(), UNLOCK_ZONE, update_soa_serial(), version, zone_journal(), zone_needdump(), ZONEDB_LOCK, ZONEDB_UNLOCK, and zonediff_init.

Referenced by zone_maintenance().

static isc_result_t next_active ( dns_db_t db,
dns_dbversion_t version,
dns_name_t oldname,
dns_name_t newname,
isc_boolean_t  bottom 
) [static]

Definition at line 6396 of file zone.c.

References CHECK, dns_db_allrdatasets(), dns_db_createiterator(), dns_db_detachnode(), DNS_DB_NONSEC3, dns_dbiterator_current(), dns_dbiterator_destroy(), dns_dbiterator_first(), dns_dbiterator_next(), dns_dbiterator_seek(), dns_name_equal(), dns_name_issubdomain(), dns_rdatasetiter_destroy(), dns_rdatasetiter_first(), and ISC_R_NOMORE.

static isc_boolean_t signed_with_key ( dns_db_t db,
dns_dbnode_t node,
dns_dbversion_t version,
dns_rdatatype_t  type,
dst_key_t key 
) [static]

Definition at line 6435 of file zone.c.

References dns_db_findrdataset(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), dst_key_alg(), dst_key_id(), INSIST, ISC_FALSE, ISC_R_SUCCESS, and ISC_TRUE.

Referenced by sign_a_node().

static isc_result_t add_nsec ( dns_db_t db,
dns_dbversion_t version,
dns_name_t name,
dns_dbnode_t node,
dns_ttl_t  ttl,
isc_boolean_t  bottom,
dns_diff_t diff 
) [static]

Definition at line 6468 of file zone.c.

References CHECK, DNS_DIFFOP_ADD, dns_fixedname_init, dns_fixedname_name, DNS_NSEC_BUFFERSIZE, dns_nsec_buildrdata(), DNS_RDATA_INIT, fixed, next_active(), and update_one_rr().

static isc_result_t sign_a_node ( dns_db_t db,
dns_name_t name,
dns_dbnode_t node,
dns_dbversion_t version,
isc_boolean_t  build_nsec3,
isc_boolean_t  build_nsec,
dst_key_t key,
isc_stdtime_t  inception,
isc_stdtime_t  expire,
unsigned int  minimum,
isc_boolean_t  is_ksk,
isc_boolean_t  keyset_kskonly,
isc_boolean_t delegation,
dns_diff_t diff,
isc_int32_t signatures,
isc_mem_t mctx 
) [static]

Definition at line 6491 of file zone.c.

References add_nsec(), buffer, CHECK, dns_db_allrdatasets(), dns_db_origin(), DNS_DIFFOP_ADDRESIGN, dns_dnssec_sign(), dns_name_equal(), dns_nsec3_addnsec3s(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdataset_disassociate(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdatasetiter_current(), dns_rdatasetiter_destroy(), dns_rdatasetiter_first(), dns_rdatasetiter_next(), isc_buffer_clear, isc_buffer_init, ISC_FALSE, ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, ISC_TRUE, signed_with_key(), dns_rdataset::ttl, dns_rdataset::type, and update_one_rr().

Referenced by zone_sign().

static isc_result_t updatesecure ( dns_db_t db,
dns_dbversion_t version,
dns_name_t name,
dns_ttl_t  minimum,
isc_boolean_t  update_only,
dns_diff_t diff 
) [static]

Definition at line 6618 of file zone.c.

References add_nsec(), CHECK, delete_nsec(), dns_db_detachnode(), dns_db_findrdataset(), dns_db_getoriginnode(), dns_rdataset_disassociate(), dns_rdataset_init(), dns_rdataset_isassociated(), ISC_FALSE, ISC_R_NOTFOUND, and ISC_R_SUCCESS.

Referenced by updatesignwithkey(), zone_nsec3chain(), and zone_sign().

static isc_result_t updatesignwithkey ( dns_zone_t zone,
dns_signing_t *  signing,
dns_dbversion_t version,
isc_boolean_t  build_nsec3,
dns_ttl_t  minimum,
dns_diff_t diff 
) [static]

Definition at line 6650 of file zone.c.

References CHECK, dns_rdata::data, dns_db_class(), dns_db_detachnode(), dns_db_findrdataset(), dns_db_getoriginnode(), dns_db_origin(), DNS_DIFFOP_ADD, DNS_DIFFOP_DEL, dns_nsec3_addnsec3s(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), INSIST, ISC_FALSE, ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, ISC_TRUE, dns_rdata::length, origin, dns_rdata::rdclass, dns_rdataset::ttl, dns_rdata::type, update_one_rr(), and updatesecure().

Referenced by zone_sign().

static isc_result_t fixup_nsec3param ( dns_db_t db,
dns_dbversion_t ver,
dns_nsec3chain_t *  chain,
isc_boolean_t  active,
dns_rdatatype_t  privatetype,
dns_diff_t diff 
) [static]

Definition at line 6760 of file zone.c.

References buffer, CHECK, dns_rdata::data, dns_db_class(), dns_db_detachnode(), dns_db_findrdataset(), dns_db_getoriginnode(), dns_db_origin(), DNS_DIFFOP_ADD, DNS_DIFFOP_DEL, DNS_NSEC3PARAM_BUFFERSIZE, dns_nsec3param_fromprivate(), dns_nsec_nseconly(), dns_rdata_fromstruct(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), isc_buffer_init, ISC_FALSE, ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, RUNTIME_CHECK, dns_rdataset::ttl, and update_one_rr().

Referenced by zone_nsec3chain().

static isc_result_t deletematchingnsec3 ( dns_db_t db,
dns_dbversion_t ver,
dns_dbnode_t node,
dns_name_t name,
const dns_rdata_nsec3param_t *  param,
dns_diff_t diff 
) [static]

Definition at line 6927 of file zone.c.

References CHECK, dns_db_findrdataset(), DNS_DIFFOP_DEL, DNS_RDATA_INIT, dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_next(), ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, dns_rdataset::ttl, and update_one_rr().

Referenced by zone_nsec3chain().

static isc_result_t need_nsec_chain ( dns_db_t db,
dns_dbversion_t ver,
const dns_rdata_nsec3param_t *  param,
isc_boolean_t answer 
) [static]

Definition at line 6966 of file zone.c.

References CHECK, dns_db_detachnode(), dns_db_findrdataset(), dns_db_getoriginnode(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), ISC_FALSE, ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, ISC_TRUE, NSEC3REMOVE, and RUNTIME_CHECK.

Referenced by zone_nsec3chain().

static isc_result_t update_sigs ( dns_diff_t diff,
dns_db_t db,
dns_dbversion_t version,
dst_key_t zone_keys[],
unsigned int  nkeys,
dns_zone_t zone,
isc_stdtime_t  inception,
isc_stdtime_t  expire,
isc_stdtime_t  now,
isc_boolean_t  check_ksk,
isc_boolean_t  keyset_kskonly,
zonediff_t zonediff 
) [static]

Definition at line 7044 of file zone.c.

References add_sigs(), del_sigs(), zonediff_t::diff, dns_diff_appendminimal(), dns_name_equal(), dns_result_totext(), dns_zone_log(), INSIST, ISC_FALSE, ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_LIST_UNLINK, ISC_LOG_ERROR, ISC_R_SUCCESS, dns_diff::mctx, dns_difftuple::name, dns_difftuple::rdata, and dns_rdata::type.

Referenced by zone_nsec3chain(), and zone_sign().

static void zone_nsec3chain ( dns_zone_t zone  )  [static]

Definition at line 7096 of file zone.c.

References add_nsec(), add_sigs(), CHECK, cleanup(), del_sigs(), delete_nsec(), deletematchingnsec3(), zonediff_t::diff, dns_db_allrdatasets(), dns_db_attach(), dns_db_closeversion(), dns_db_detach(), dns_db_detachnode(), dns_db_find(), dns_db_getoriginnode(), dns_db_newversion(), dns_db_origin(), DNS_DBFIND_NOWILD, dns_dbiterator_current(), dns_dbiterator_destroy(), dns_dbiterator_first(), dns_dbiterator_next(), dns_dbiterator_pause(), dns_diff_clear(), dns_diff_init(), DNS_DUMP_DELAY, dns_fixedname_init, dns_fixedname_name, DNS_MAXZONEKEYS, dns_name_copy(), dns_name_equal(), dns_name_issubdomain(), dns_nsec3_addnsec3(), dns_nsec3_addnsec3s(), DNS_R_DELEGATION, DNS_R_DNAME, dns_rdataset_disassociate(), dns_rdataset_init(), dns_rdatasetiter_current(), dns_rdatasetiter_destroy(), dns_rdatasetiter_first(), dns_rdatasetiter_next(), dns_result_totext(), dns_zone_getsigvalidityinterval(), dns_zone_log(), DNS_ZONE_OPTION, DNS_ZONE_SETFLAG, DNS_ZONEFLG_NEEDNOTIFY, DNS_ZONEOPT_DNSKEYKSKONLY, DNS_ZONEOPT_UPDATECHECKKSK, dst_key_free(), ENTER, find_zone_keys(), fixed, fixup_nsec3param(), INSIST, ISC_FALSE, isc_interval_set(), ISC_LIST_APPEND, ISC_LIST_EMPTY, ISC_LIST_HEAD, ISC_LIST_INIT, ISC_LIST_NEXT, ISC_LIST_PREPEND, ISC_LIST_TAIL, ISC_LIST_UNLINK, ISC_LOG_DEBUG, ISC_LOG_ERROR, isc_mem_put, ISC_R_FAILURE, ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, isc_random_get(), isc_rwlocktype_read, isc_stdtime_get(), isc_time_nowplusinterval(), isc_time_settoepoch(), ISC_TRUE, jitter, keyset_kskonly, LOCK_ZONE, dns_diff::mctx, dns_db::mctx, need_nsec_chain(), now, NSEC3REMOVE, dns_db::origin, privatetype, RUNTIME_CHECK, set_resigntime(), dns_rdataset::type, UNLOCK_ZONE, update_sigs(), update_soa_serial(), updatesecure(), version, zone_journal(), zone_needdump(), ZONEDB_LOCK, ZONEDB_UNLOCK, and zonediff_init.

Referenced by zone_maintenance().

static isc_result_t del_sig ( dns_db_t db,
dns_dbversion_t version,
dns_name_t name,
dns_dbnode_t node,
unsigned int  nkeys,
dns_secalg_t  algorithm,
isc_uint16_t  keyid,
dns_diff_t diff 
) [static]

Definition at line 7881 of file zone.c.

References CHECK, dns_db_allrdatasets(), DNS_DIFFOP_DEL, DNS_DIFFOP_DELRESIGN, DNS_RDATA_INIT, dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), dns_rdatasetiter_current(), dns_rdatasetiter_destroy(), dns_rdatasetiter_first(), dns_rdatasetiter_next(), ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, dns_rdataset::ttl, dns_rdataset::type, and update_one_rr().

Referenced by zone_sign().

static void zone_sign ( dns_zone_t zone  )  [static]

Definition at line 7952 of file zone.c.

References add_sigs(), ALG, CHECK, cleanup(), commit(), del_sig(), del_sigs(), zonediff_t::diff, dns_db_attach(), dns_db_closeversion(), dns_db_detach(), dns_db_detachnode(), dns_db_find(), dns_db_newversion(), DNS_DBFIND_NOWILD, dns_dbiterator_current(), dns_dbiterator_destroy(), dns_dbiterator_first(), dns_dbiterator_next(), dns_dbiterator_pause(), dns_diff_clear(), dns_diff_init(), DNS_DUMP_DELAY, dns_fixedname_init, dns_fixedname_name, DNS_MAXZONEKEYS, dns_name_copy(), dns_name_equal(), dns_name_issubdomain(), dns_private_chains(), DNS_R_DELEGATION, DNS_R_DNAME, dns_rdataset_init(), dns_result_totext(), dns_zone_getsigvalidityinterval(), dns_zone_log(), DNS_ZONE_OPTION, DNS_ZONE_SETFLAG, DNS_ZONEFLG_NEEDNOTIFY, DNS_ZONEOPT_DNSKEYKSKONLY, DNS_ZONEOPT_UPDATECHECKKSK, dst_key_alg(), dst_key_free(), dst_key_id(), dst_key_isprivate(), ENTER, find_zone_keys(), fixed, INSIST, ISC_FALSE, isc_interval_set(), ISC_LIST_APPEND, ISC_LIST_EMPTY, ISC_LIST_HEAD, ISC_LIST_INIT, ISC_LIST_NEXT, ISC_LIST_PREPEND, ISC_LIST_UNLINK, ISC_LOG_ERROR, isc_mem_put, ISC_R_FAILURE, ISC_R_NOMORE, ISC_R_SUCCESS, isc_random_get(), isc_rwlocktype_read, isc_stdtime_get(), ISC_TF, isc_time_nowplusinterval(), isc_time_settoepoch(), ISC_TRUE, jitter, keyset_kskonly, KSK, LOCK_ZONE, dns_diff::mctx, dns_db::mctx, now, zonediff_t::offline, dns_db::origin, REVOKE, set_resigntime(), sign_a_node(), UNLOCK_ZONE, update_sigs(), update_soa_serial(), updatesecure(), updatesignwithkey(), version, zone_journal(), zone_needdump(), ZONEDB_LOCK, ZONEDB_UNLOCK, and zonediff_init.

Referenced by zone_maintenance().

static isc_result_t normalize_key ( dns_rdata_t rr,
dns_rdata_t target,
unsigned char *  data,
int  size 
) [static]

Definition at line 8430 of file zone.c.

References dns_keydata_todnskey(), DNS_KEYFLAG_REVOKE, dns_rdata_fromstruct(), dns_rdata_reset(), dns_rdata_tostruct(), INSIST, isc_buffer_init, ISC_R_SUCCESS, ISC_R_UNEXPECTEDEND, dns_rdata::rdclass, RUNTIME_CHECK, and dns_rdata::type.

Referenced by matchkey().

static isc_boolean_t matchkey ( dns_rdataset_t rdset,
dns_rdata_t rr 
) [static]

Definition at line 8476 of file zone.c.

References dns_rdata_compare(), dns_rdata_init(), dns_rdata_reset(), dns_rdataset_current(), dns_rdataset_first(), dns_rdataset_next(), ISC_FALSE, ISC_R_SUCCESS, ISC_TRUE, and normalize_key().

Referenced by keyfetch_done().

static isc_stdtime_t refresh_time ( dns_keyfetch_t *  kfetch,
isc_boolean_t  retry 
) [inline, static]

Definition at line 8516 of file zone.c.

References DNS_RDATA_INIT, dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_first(), dns_rdataset_isassociated(), dns_zone_mkey_day, dns_zone_mkey_hour, ISC_R_SUCCESS, isc_serial_gt(), isc_stdtime_get(), now, and RUNTIME_CHECK.

Referenced by keyfetch_done(), and minimal_update().

static isc_result_t minimal_update ( dns_keyfetch_t *  kfetch,
dns_dbversion_t ver,
dns_diff_t diff 
) [static]

Definition at line 8578 of file zone.c.

References CHECK, DNS_DIFFOP_ADD, DNS_DIFFOP_DEL, dns_fixedname_name, dns_rdata_fromstruct(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_first(), dns_rdataset_next(), isc_buffer_init, ISC_FALSE, ISC_R_SUCCESS, ISC_R_UNEXPECTEDEND, isc_stdtime_get(), ISC_TRUE, now, dns_rdata::rdclass, refresh_time(), set_refreshkeytimer(), and update_one_rr().

Referenced by keyfetch_done().

static isc_boolean_t revocable ( dns_keyfetch_t *  kfetch,
dns_rdata_keydata_t *  keydata 
) [static]

Definition at line 8630 of file zone.c.

References answer, dns_dnssec_keyfromrdata(), dns_dnssec_verify2(), dns_fixedname_init, dns_fixedname_name, dns_keydata_todnskey(), dns_rdata_fromstruct(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_first(), dns_rdataset_isassociated(), dns_rdataset_next(), dns_result_totext(), dns_zone_log(), dst_key_alg(), dst_key_free(), dst_key_rid(), fixed, isc_buffer_init, ISC_FALSE, ISC_LOG_DEBUG, ISC_R_SUCCESS, ISC_TRUE, dns_notify::mctx, dns_rdata::rdclass, REQUIRE, and RUNTIME_CHECK.

Referenced by keyfetch_done().

static void keyfetch_done ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 8700 of file zone.c.

References CHECK, cleanup(), commit(), compute_tag(), dns_db_closeversion(), dns_db_detach(), dns_db_detachnode(), dns_db_newversion(), dns_diff_clear(), dns_diff_init(), DNS_DIFFOP_ADD, DNS_DIFFOP_DEL, dns_dnssec_verify2(), DNS_EVENT_FETCHDONE, dns_fixedname_init, dns_fixedname_name, dns_keydata_fromdnskey(), DNS_KEYFLAG_KSK, DNS_KEYFLAG_REVOKE, dns_keynode_key(), dns_keytable_detach(), dns_keytable_detachkeynode(), dns_keytable_find(), dns_keytable_nextkeynode(), dns_name_format(), DNS_NAME_FORMATSIZE, dns_name_free(), dns_rdata_fromstruct(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_isassociated(), dns_rdataset_next(), dns_resolver_destroyfetch(), dns_result_totext(), dns_trust_none, dns_trust_secure, dns_view_getsecroots(), dns_view_untrust(), DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_log(), dns_zone_mkey_hour, dns_zone_mkey_month, DNS_ZONE_SETFLAG, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_REFRESHING, dst_key_alg(), dst_key_id(), exit_check(), fail_secure(), fixed, INSIST, isc_buffer_init, isc_event_free(), ISC_FALSE, ISC_LIST_EMPTY, ISC_LOG_DEBUG, ISC_LOG_WARNING, isc_mem_attach(), isc_mem_detach(), isc_mem_put, ISC_R_SUCCESS, isc_stdtime_get(), ISC_TF, ISC_TRUE, LOCK_ZONE, matchkey(), dns_notify::mctx, minimal_update(), namebuf, now, dns_rdata::rdclass, refresh_time(), revocable(), RUNTIME_CHECK, secure(), set_refreshkeytimer(), trust_key(), UNLOCK_ZONE, UNUSED, update_one_rr(), update_soa_serial(), zone_free(), zone_journal(), and zone_needdump().

Referenced by zone_refreshkeys().

static void zone_refreshkeys ( dns_zone_t zone  )  [static]

Definition at line 9204 of file zone.c.

References CHECK, commit(), dns_db_attach(), dns_db_closeversion(), dns_db_detach(), dns_db_newversion(), dns_diff_clear(), dns_diff_init(), DNS_DIFFOP_DEL, DNS_FETCHOPT_NOVALIDATE, dns_fixedname_init, dns_fixedname_name, dns_name_dup(), dns_name_free(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_clone(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), dns_resolver_createfetch(), dns_rriterator_current(), dns_rriterator_destroy(), dns_rriterator_first(), dns_rriterator_init(), dns_rriterator_nextrrset(), DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_log(), dns_zone_mkey_hour, DNS_ZONE_SETFLAG, DNS_ZONE_TIME_ADD, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_REFRESHING, ENTER, INSIST, ISC_FALSE, ISC_LIST_EMPTY, ISC_LOG_DEBUG, ISC_LOG_WARNING, isc_mem_get, isc_mem_put, ISC_R_SUCCESS, isc_rwlocktype_read, isc_stdtime_get(), isc_time_formattimestamp(), isc_time_settoepoch(), ISC_TRUE, keyfetch_done(), LOCK_ZONE, dns_diff::mctx, now, REQUIRE, RUNTIME_CHECK, TIME_NOW, dns_rdataset::type, UNLOCK_ZONE, update_one_rr(), update_soa_serial(), zone_journal(), zone_needdump(), zone_settimer(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by zone_maintenance().

void dns_zone_markdirty ( dns_zone_t zone  ) 

Mark a zone as 'dirty'.

Require:

Definition at line 9547 of file zone.c.

References DNS_DUMP_DELAY, DNS_R_NOTLOADED, dns_zone_master, inline_raw(), INSIST, ISC_R_SUCCESS, isc_rwlocktype_read, isc_thread_yield, LOCK_ZONE, secure(), set_resigntime(), TRYLOCK_ZONE, UNLOCK_ZONE, zone_get_from_db(), zone_needdump(), zone_send_secureserial(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by ixfr_commit(), and update_action().

void dns_zone_expire ( dns_zone_t zone  ) 

Mark the zone as expired. If the zone requires dumping cause it to be initiated. Set the refresh and retry intervals to there default values and unload the zone.

Require

Definition at line 9598 of file zone.c.

References DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, and zone_expire().

void dns_zone_refresh ( dns_zone_t zone  ) 

Initiate zone up to date checks. The zone must already be being managed.

Require

Definition at line 9624 of file zone.c.

References dns_result_totext(), DNS_ZONE_CLRFLAG, DNS_ZONE_FLAG, dns_zone_log(), DNS_ZONE_SETFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_HAVETIMERS, DNS_ZONEFLG_LOADING, DNS_ZONEFLG_NOEDNS, DNS_ZONEFLG_NOMASTERS, DNS_ZONEFLG_REFRESH, DNS_ZONEFLG_USEALTXFRSRC, ISC_FALSE, isc_interval_set(), ISC_LOG_ERROR, ISC_LOG_WARNING, ISC_MIN, ISC_R_SUCCESS, isc_random_jitter(), isc_time_nowplusinterval(), LOCK_ZONE, queue_soa_query(), REQUIRE, and UNLOCK_ZONE.

Referenced by dns_zone_notifyreceive(), ns_server_refreshcommand(), ns_server_reloadcommand(), and zone_maintenance().

isc_result_t dns_zone_flush ( dns_zone_t zone  ) 

Write the zone to database if there are uncommitted changes.

Require:

Definition at line 9686 of file zone.c.

References DNS_ZONE_FLAG, DNS_ZONE_SETFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_FLUSH, DNS_ZONEFLG_NEEDDUMP, ISC_FALSE, ISC_R_ALREADYRUNNING, ISC_R_SUCCESS, ISC_TRUE, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, was_dumping(), and zone_dump().

Referenced by flush(), freezezones(), ns_server_freeze(), ns_server_mkeys(), synczone(), and view_flushanddetach().

isc_result_t dns_zone_dump ( dns_zone_t zone  ) 

Write the zone to database.

Require:

Definition at line 9707 of file zone.c.

References DNS_ZONE_VALID, ISC_FALSE, ISC_R_ALREADYRUNNING, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, was_dumping(), and zone_dump().

static isc_result_t dumptostream ( dns_zone_t zone,
FILE *  fd,
const dns_master_style_t style,
dns_masterformat_t  format,
const isc_uint32_t  rawversion 
) [static]

Definition at line 9954 of file zone.c.

References dns_db_attach(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detach(), dns_master_dumptostream3(), dns_master_initrawheader(), DNS_MASTERRAW_COMPAT, DNS_MASTERRAW_SOURCESERIALSET, DNS_R_NOTLOADED, DNS_ZONE_VALID, dns_masterrawheader::flags, get_raw_serial(), inline_secure(), ISC_FALSE, isc_rwlocktype_read, REQUIRE, dns_masterrawheader::sourceserial, version, ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by dns_zone_dumptostream(), dns_zone_dumptostream2(), dns_zone_dumptostream3(), and dns_zone_fulldumptostream().

isc_result_t dns_zone_dumptostream3 ( dns_zone_t zone,
FILE *  fd,
dns_masterformat_t  format,
const dns_master_style_t style,
const isc_uint32_t  rawversion 
)

Write the zone to stream 'fd' in the specified 'format'. If the 'format' is dns_masterformat_text (RFC1035), 'style' also specifies the file style (e.g., &dns_master_style_default).

dns_zone_dumptostream() is a backward-compatible form of dns_zone_dumptostream2(), which always uses the dns_masterformat_text format and the dns_master_style_default style.

dns_zone_dumptostream2() is a backward-compatible form of dns_zone_dumptostream3(), which always uses the current default raw file format version.

Note that dns_zone_dumptostream3() is the most flexible form. It can also provide the functionality of dns_zone_fulldumptostream().

Require:

Definition at line 9989 of file zone.c.

References dumptostream().

Referenced by dump_zone().

isc_result_t dns_zone_dumptostream2 ( dns_zone_t zone,
FILE *  fd,
dns_masterformat_t  format,
const dns_master_style_t style 
)

Definition at line 9997 of file zone.c.

References DNS_RAWFORMAT_VERSION, and dumptostream().

isc_result_t dns_zone_dumptostream ( dns_zone_t zone,
FILE *  fd 
)

Definition at line 10003 of file zone.c.

References dns_master_style_default, dns_masterformat_text, and dumptostream().

isc_result_t dns_zone_fulldumptostream ( dns_zone_t zone,
FILE *  fd 
)

The same as dns_zone_dumptostream, but dumps the zone with different dump settings (dns_master_style_full).

Require:

Definition at line 10009 of file zone.c.

References dns_master_style_full, dns_masterformat_text, and dumptostream().

void dns_zone_unload ( dns_zone_t zone  ) 

detach the database from the zone structure.

Require:

Definition at line 10015 of file zone.c.

References DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, and zone_unload().

Referenced by do_addzone(), do_modzone(), and ns_server_delzone().

static void forward_cancel ( dns_zone_t zone  )  [static]

Definition at line 10044 of file zone.c.

References dns_request_cancel(), ISC_LIST_HEAD, ISC_LIST_NEXT, LOCKED_ZONE, dns_forward::request, and REQUIRE.

Referenced by dns_zonemgr_shutdown(), and zone_shutdown().

void dns_zone_setminrefreshtime ( dns_zone_t zone,
isc_uint32_t  val 
)

Set the minimum refresh time.

Requires:

Definition at line 10085 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_zone_configure().

void dns_zone_setmaxrefreshtime ( dns_zone_t zone,
isc_uint32_t  val 
)

Set the maximum refresh time.

Requires:

Definition at line 10093 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_zone_configure().

void dns_zone_setminretrytime ( dns_zone_t zone,
isc_uint32_t  val 
)

Set the minimum retry time.

Requires:

Definition at line 10101 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_zone_configure().

void dns_zone_setmaxretrytime ( dns_zone_t zone,
isc_uint32_t  val 
)

Set the maximum retry time.

Requires:

Definition at line 10109 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_zone_configure().

static isc_boolean_t notify_isqueued ( dns_zone_t zone,
unsigned int  flags,
dns_name_t name,
isc_sockaddr_t addr,
dns_tsigkey_t key 
) [static]

Definition at line 10117 of file zone.c.

References dns_name_dynamic(), dns_name_equal(), DNS_NOTIFY_STARTUP, dns_notify::dst, dns_notify::flags, isc_event_free(), ISC_FALSE, ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_R_SUCCESS, isc_ratelimiter_dequeue(), isc_ratelimiter_enqueue(), isc_sockaddr_equal(), ISC_TRUE, dns_notify::key, notify(), dns_notify::ns, dns_notify::request, dns_zonemgr::startupnotifyrl, and dns_notify::zone.

Referenced by notify_send(), and zone_notify().

static isc_boolean_t notify_isself ( dns_zone_t zone,
isc_sockaddr_t dst 
) [static]

Definition at line 10165 of file zone.c.

References dns_tsigkey_detach(), dns_view_getpeertsig(), ISC_FALSE, isc_netaddr_fromsockaddr(), ISC_R_NOTFOUND, ISC_R_SUCCESS, isc_sockaddr_any(), isc_sockaddr_any6(), isc_sockaddr_eqaddr(), isc_sockaddr_pf(), dns_notify::key, and PF_INET6.

Referenced by notify_send().

static void notify_destroy ( dns_notify_t notify,
isc_boolean_t  locked 
) [static]

Definition at line 10208 of file zone.c.

References dns_adb_destroyfind(), dns_name_dynamic(), dns_name_free(), DNS_NOTIFY_VALID, dns_request_destroy(), dns_tsigkey_detach(), dns_zone_idetach(), dns_notify::find, ISC_LINK_LINKED, ISC_LIST_UNLINK, isc_mem_detach(), isc_mem_put, dns_notify::key, LOCK_ZONE, LOCKED_ZONE, dns_notify::mctx, dns_notify::ns, dns_notify::request, REQUIRE, UNLOCK_ZONE, dns_notify::zone, and zone_idetach().

Referenced by notify_done(), notify_find_address(), notify_send(), notify_send_toaddr(), process_adb_event(), and zone_notify().

static isc_result_t notify_create ( isc_mem_t mctx,
unsigned int  flags,
dns_notify_t **  notifyp 
) [static]

Definition at line 10240 of file zone.c.

References dns_name_init(), dns_notify::dst, dns_notify::find, dns_notify::flags, ISC_LINK_INIT, isc_mem_attach(), isc_mem_get, ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_sockaddr_any(), dns_notify::key, dns_notify::magic, dns_notify::mctx, notify(), NOTIFY_MAGIC, dns_notify::ns, dns_notify::request, REQUIRE, and dns_notify::zone.

Referenced by notify_send(), and zone_notify().

static void process_adb_event ( isc_task_t task,
isc_event_t ev 
) [static]

Definition at line 10269 of file zone.c.

References dns_adb_destroyfind(), DNS_EVENT_ADBMOREADDRESSES, DNS_EVENT_ADBNOMOREADDRESSES, DNS_NOTIFY_VALID, dns_notify::find, INSIST, isc_event_free(), ISC_FALSE, LOCK_ZONE, notify(), notify_destroy(), notify_find_address(), notify_send(), REQUIRE, UNLOCK_ZONE, UNUSED, and dns_notify::zone.

Referenced by notify_find_address().

static isc_result_t notify_send_queue ( dns_notify_t notify,
isc_boolean_t  startup 
) [static]

Definition at line 10332 of file zone.c.

References DNS_EVENT_NOTIFYSENDTOADDR, INSIST, isc_event_allocate(), isc_event_free(), ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_ratelimiter_enqueue(), dns_notify::mctx, notify_send_toaddr(), and dns_notify::zone.

Referenced by notify_done(), notify_send(), and zone_notify().

void dns_zone_notify ( dns_zone_t zone  ) 

Generate notify events for this zone.

Requires:

Definition at line 10539 of file zone.c.

References DNS_ZONE_SETFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_NEEDNOTIFY, LOCK_ZONE, now, REQUIRE, TIME_NOW, UNLOCK_ZONE, and zone_settimer().

Referenced by ns_server_notifycommand(), and update_action().

static isc_result_t save_nsrrset ( dns_message_t message,
dns_name_t name,
dns_db_t db,
dns_dbversion_t version 
) [inline, static]

Definition at line 10777 of file zone.c.

References dns_db_addrdataset(), dns_db_detachnode(), dns_db_findnode(), dns_message_findname(), dns_name_issubdomain(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_first(), dns_rdataset_next(), DNS_SECTION_ADDITIONAL, DNS_SECTION_ANSWER, ISC_R_NOMORE, ISC_R_SUCCESS, ISC_TRUE, dns_notify::ns, and RUNTIME_CHECK.

Referenced by stub_callback().

static void get_edns_expire ( dns_zone_t zone,
dns_message_t message,
isc_uint32_t expirep 
) [static]

Definition at line 11125 of file zone.c.

References dns_rdata::data, DNS_OPT_EXPIRE, DNS_RDATA_INIT, dns_rdataset_current(), dns_rdataset_first(), dns_zone_log(), isc_buffer_add, isc_buffer_forward, isc_buffer_getuint16(), isc_buffer_getuint32(), isc_buffer_init, isc_buffer_remaininglength, ISC_LOG_DEBUG, ISC_R_SUCCESS, dns_rdata::length, dns_message::opt, and REQUIRE.

Referenced by refresh_callback().

static void setmodtime ( dns_zone_t zone,
isc_time_t expiretime 
) [static]

Definition at line 11173 of file zone.c.

References DNS_DUMP_DELAY, dns_result_totext(), DNS_ZONE_FLAG, dns_zone_log(), DNS_ZONEFLG_NEEDDUMP, isc_file_settime(), isc_interval_set(), ISC_LOG_ERROR, ISC_R_FAILURE, ISC_R_FILENOTFOUND, ISC_R_SUCCESS, isc_time_subtract(), and zone_needdump().

Referenced by refresh_callback().

static isc_result_t create_query ( dns_zone_t zone,
dns_rdatatype_t  rdtype,
dns_message_t **  messagep 
) [inline, static]

Definition at line 11643 of file zone.c.

References cleanup(), dns_message_addname(), dns_message_create(), dns_message_destroy(), dns_message_gettempname(), dns_message_gettemprdataset(), DNS_MESSAGE_INTENTRENDER, dns_message_puttempname(), dns_message_puttemprdataset(), dns_name_clone(), dns_name_init(), dns_opcode_query, dns_rdataset_init(), dns_rdataset_makequestion(), DNS_SECTION_QUESTION, ISC_LIST_APPEND, ISC_R_SUCCESS, dns_message::opcode, dns_rdataset::rdclass, and dns_message::rdclass.

Referenced by ns_query(), and soa_query().

static isc_result_t add_opt ( dns_message_t message,
isc_uint16_t  udpsize,
isc_boolean_t  reqnsid,
isc_boolean_t  reqexpire 
) [static]

Definition at line 11691 of file zone.c.

References dns_ednsopt::code, DNS_EDNSOPTIONS, dns_message_buildopt(), dns_message_setopt(), DNS_OPT_EXPIRE, DNS_OPT_NSID, ednsopts, INSIST, ISC_R_SUCCESS, dns_ednsopt::length, and dns_ednsopt::value.

Referenced by ns_query(), setup_lookup(), and soa_query().

static void zone_timer ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 12272 of file zone.c.

References DNS_ZONE_VALID, ENTER, isc_event_free(), REQUIRE, UNUSED, and zone_maintenance().

Referenced by dns_zone_link(), and dns_zonemgr_managezone().

isc_result_t dns_zone_notifyreceive ( dns_zone_t zone,
isc_sockaddr_t from,
dns_message_t msg 
)

Tell the zone that it has received a NOTIFY message from another server. This may cause some zone maintenance activity to occur.

Requires:

Returns:

Definition at line 12589 of file zone.c.

References dns_message::counts, dns_acl_match(), dns_message_findname(), dns_message_gettsigkey(), DNS_R_FORMERR, DNS_R_NOTIMP, DNS_R_REFUSED, DNS_RDATA_INIT, dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_first(), DNS_SECTION_ANSWER, DNS_SECTION_QUESTION, dns_tsigkey_identity, DNS_ZONE_FLAG, dns_zone_log(), dns_zone_master, dns_zone_notifyreceive(), dns_zone_refresh(), DNS_ZONE_SETFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_LOADED, DNS_ZONEFLG_NEEDREFRESH, DNS_ZONEFLG_NOREFRESH, DNS_ZONEFLG_REFRESH, dns_zonemgr_unreachabledel(), dns_zonestatscounter_notifyinv4, dns_zonestatscounter_notifyinv6, dns_zonestatscounter_notifyrej, IN6_IS_ADDR_V4MAPPED, inc_stats(), inline_secure(), INSIST, ISC_FALSE, ISC_LOG_INFO, ISC_LOG_NOTICE, isc_netaddr_equal(), isc_netaddr_fromsockaddr(), isc_netaddr_fromv4mapped(), ISC_R_SUCCESS, isc_serial_le(), isc_sockaddr_eqaddr(), isc_sockaddr_format(), ISC_SOCKADDR_FORMATSIZE, isc_sockaddr_pf(), ISC_TRUE, LOCK_ZONE, match(), REQUIRE, RUNTIME_CHECK, isc_sockaddr::sin6, sockaddr_in6::sin6_addr, tsigkey, isc_sockaddr::type, UNLOCK_ZONE, and zone_get_from_db().

Referenced by dns_zone_notifyreceive(), and ns_notify_start().

void dns_zone_setnotifyacl ( dns_zone_t zone,
dns_acl_t acl 
)

/ Get the DSCP value associated with the notify source.

Require:

Require:

Definition at line 12789 of file zone.c.

References dns_acl_attach(), dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

void dns_zone_setqueryacl ( dns_zone_t zone,
dns_acl_t acl 
)

Sets the query acl list for the zone.

Require:

Definition at line 12801 of file zone.c.

References dns_acl_attach(), dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by add_keydata_zone(), create_empty_zone(), dns64_reverse(), and ns_zone_configure().

void dns_zone_setqueryonacl ( dns_zone_t zone,
dns_acl_t acl 
)

Sets the query-on acl list for the zone.

Require:

Definition at line 12813 of file zone.c.

References dns_acl_attach(), dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by add_keydata_zone(), create_empty_zone(), dns64_reverse(), and ns_zone_configure().

void dns_zone_setupdateacl ( dns_zone_t zone,
dns_acl_t acl 
)

Sets the update acl list for the zone.

Require:

Definition at line 12825 of file zone.c.

References dns_acl_attach(), dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

void dns_zone_setforwardacl ( dns_zone_t zone,
dns_acl_t acl 
)

Sets the forward unsigned updates acl list for the zone.

Require:

Definition at line 12837 of file zone.c.

References dns_acl_attach(), dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

void dns_zone_setxfracl ( dns_zone_t zone,
dns_acl_t acl 
)

Sets the transfer acl list for the zone.

Require:

Definition at line 12849 of file zone.c.

References dns_acl_attach(), dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by create_empty_zone(), and ns_zone_configure().

dns_acl_t* dns_zone_getnotifyacl ( dns_zone_t zone  ) 

Returns the current notify acl or NULL.

Require:

Returns:

Definition at line 12861 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

dns_acl_t* dns_zone_getqueryacl ( dns_zone_t zone  ) 

Returns the current query acl or NULL.

Require:

Returns:

Definition at line 12869 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by query_validatezonedb(), redirect(), and update_action().

dns_acl_t* dns_zone_getqueryonacl ( dns_zone_t zone  ) 

Returns the current query-on acl or NULL.

Require:

Returns:

Definition at line 12877 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by query_validatezonedb().

dns_acl_t* dns_zone_getupdateacl ( dns_zone_t zone  ) 

Returns the current update acl or NULL.

Require:

Returns:

Definition at line 12885 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_zone_configure(), and update_action().

dns_acl_t* dns_zone_getforwardacl ( dns_zone_t zone  ) 

Returns the current forward unsigned updates acl or NULL.

Require:

Returns:

Definition at line 12893 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_update_start().

dns_acl_t* dns_zone_getxfracl ( dns_zone_t zone  ) 

Returns the current transfer acl or NULL.

Require:

Returns:

Definition at line 12901 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_xfr_start().

void dns_zone_clearupdateacl ( dns_zone_t zone  ) 

Clear the current update acl.

Require:

Definition at line 12909 of file zone.c.

References dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by create_empty_zone(), and ns_zone_configure().

void dns_zone_clearforwardacl ( dns_zone_t zone  ) 

Clear the current forward unsigned updates acl.

Require:

Definition at line 12920 of file zone.c.

References dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

void dns_zone_clearnotifyacl ( dns_zone_t zone  ) 

Clear the current notify acl.

Require:

Definition at line 12931 of file zone.c.

References dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by ns_zone_configure().

void dns_zone_clearqueryacl ( dns_zone_t zone  ) 

Clear the current query acl.

Require:

Definition at line 12942 of file zone.c.

References dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by create_empty_zone(), and ns_zone_configure().

void dns_zone_clearqueryonacl ( dns_zone_t zone  ) 

Clear the current query-on acl.

Require:

Definition at line 12953 of file zone.c.

References dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by create_empty_zone(), and ns_zone_configure().

void dns_zone_clearxfracl ( dns_zone_t zone  ) 

Clear the current transfer acl.

Require:

Definition at line 12964 of file zone.c.

References dns_acl_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by create_empty_zone(), and ns_zone_configure().

isc_boolean_t dns_zone_getupdatedisabled ( dns_zone_t zone  ) 

Return update disabled. Transient unless called when running in isc_task_exclusive() mode.

Definition at line 12975 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by freezezones(), ns_server_freeze(), and update_action().

void dns_zone_setupdatedisabled ( dns_zone_t zone,
isc_boolean_t  state 
)

Set update disabled. Should only be called only when running in isc_task_exclusive() mode. Failure to do so may result in updates being committed after the call has been made.

Definition at line 12982 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by freezezones(), and ns_server_freeze().

isc_boolean_t dns_zone_getzeronosoattl ( dns_zone_t zone  ) 

Return zero-no-soa-ttl status.

Definition at line 12988 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by query_find().

void dns_zone_setzeronosoattl ( dns_zone_t zone,
isc_boolean_t  state 
)

Set zero-no-soa-ttl status.

Definition at line 12995 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_zone_configure().

void dns_zone_setchecknames ( dns_zone_t zone,
dns_severity_t  severity 
)

Set the severity of name checking when loading a zone.

Require:

Definition at line 13001 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

dns_severity_t dns_zone_getchecknames ( dns_zone_t zone  ) 

Return the current severity of name checking.

Require:

Definition at line 13009 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

void dns_zone_setjournalsize ( dns_zone_t zone,
isc_int32_t  size 
)

Sets the journal size for the zone.

Requires:

Definition at line 13017 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by add_keydata_zone(), and ns_zone_configure().

isc_int32_t dns_zone_getjournalsize ( dns_zone_t zone  ) 

Return the journal size as set with a previous call to dns_zone_setjournalsize().

Requires:

Definition at line 13025 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

void dns_zone_name ( dns_zone_t zone,
char *  buf,
size_t  len 
)

Log the message 'msg...' at 'level', including text that identifies the message as applying to 'zone'.

Return the name of the zone with class and view.

Requires:

Definition at line 13133 of file zone.c.

References DNS_ZONE_VALID, REQUIRE, and zone_namerd_tostr().

Referenced by dns_xfrin_create3(), dumpdone(), and xfrin_log().

void dns_zone_logc ( dns_zone_t zone,
isc_logcategory_t category,
int  level,
const char *  fmt,
  ... 
)

Definition at line 13155 of file zone.c.

References dns_lctx, DNS_LOGMODULE_ZONE, dns_zone_key, dns_zone_redirect, ISC_FALSE, isc_log_wouldlog(), and isc_log_write().

void dns_zone_log ( dns_zone_t zone,
int  level,
const char *  fmt,
  ... 
)

Definition at line 13173 of file zone.c.

References dns_lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_ZONE, dns_zone_key, dns_zone_redirect, ISC_FALSE, isc_log_wouldlog(), and isc_log_write().

void dns_zone_setmaxxfrin ( dns_zone_t zone,
isc_uint32_t  maxxfrin 
)

Set the maximum time (in seconds) that a zone transfer in (AXFR/IXFR) of this zone will use before being aborted.

Requires:

Definition at line 13246 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_zone_configure().

isc_uint32_t dns_zone_getmaxxfrin ( dns_zone_t zone  ) 

Returns the maximum transfer time for this zone. This will be either the value set by the last call to dns_zone_setmaxxfrin() or the default value of 1 hour.

Requires:

Definition at line 13253 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by xfrin_create().

void dns_zone_setmaxxfrout ( dns_zone_t zone,
isc_uint32_t  maxxfrout 
)

Set the maximum time (in seconds) that a zone transfer out (AXFR/IXFR) of this zone will use before being aborted.

Requires:

Definition at line 13260 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_zone_configure().

isc_uint32_t dns_zone_getmaxxfrout ( dns_zone_t zone  ) 

Returns the maximum transfer time for this zone. This will be either the value set by the last call to dns_zone_setmaxxfrout() or the default value of 1 hour.

Requires:

Definition at line 13266 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_xfr_start().

dns_zonetype_t dns_zone_gettype ( dns_zone_t zone  ) 

Returns the type of the zone (master/slave/etc.).

Requires:

Definition at line 13273 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by create_empty_zone(), dns_view_find2(), freezezones(), ns_notify_start(), ns_server_delzone(), ns_server_freeze(), ns_server_refreshcommand(), ns_server_rekey(), ns_server_reloadcommand(), ns_server_retransfercommand(), ns_server_zonestatus(), ns_update_start(), ns_xfr_start(), ns_zone_reusable(), query_find(), query_validatezonedb(), and removed().

dns_name_t* dns_zone_getorigin ( dns_zone_t zone  ) 

Returns the value of the origin.

Require:

Definition at line 13280 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by add_nsec3param_records(), configure_staticstub(), configure_staticstub_serveraddrs(), configure_staticstub_servernames(), configure_zone_ssutable(), dlzconfigure_callback(), dns_nsec3param_deletechains(), dns_view_find2(), dns_xfrin_create3(), dns_zt_mount(), dns_zt_unmount(), freezezones(), ns_server_freeze(), ns_server_signing(), ns_server_sync(), ns_stats_dump(), query_getdb(), send_forward_event(), and update_log().

void dns_zone_settask ( dns_zone_t zone,
isc_task_t task 
)

Give a zone a task to work with. Any current task will be detached.

Requires:

Definition at line 13287 of file zone.c.

References dns_db_settask(), DNS_ZONE_VALID, isc_rwlocktype_read, isc_task_attach(), isc_task_detach(), LOCK_ZONE, REQUIRE, UNLOCK_ZONE, ZONEDB_LOCK, and ZONEDB_UNLOCK.

void dns_zone_gettask ( dns_zone_t zone,
isc_task_t **  target 
)

Attach '*target' to the zone's task.

Requires:

Definition at line 13302 of file zone.c.

References DNS_ZONE_VALID, isc_task_attach(), and REQUIRE.

Referenced by send_forward_event(), and send_update_event().

void dns_zone_setidlein ( dns_zone_t zone,
isc_uint32_t  idlein 
)

Requires:

Definition at line 13308 of file zone.c.

References DNS_DEFAULT_IDLEIN, DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_zone_configure().

isc_uint32_t dns_zone_getidlein ( dns_zone_t zone  ) 

Requires:.

Returns:

Definition at line 13317 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by xfrin_create().

void dns_zone_setidleout ( dns_zone_t zone,
isc_uint32_t  idleout 
)

Requires:

Definition at line 13324 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_zone_configure().

isc_uint32_t dns_zone_getidleout ( dns_zone_t zone  ) 

Requires:.

Returns:

Definition at line 13331 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_xfr_start().

static void update_log_cb ( void *  arg,
dns_zone_t zone,
int  level,
const char *  message 
) [static]

Definition at line 13406 of file zone.c.

References dns_zone_log(), and UNUSED.

Referenced by keydone(), receive_secure_serial(), and update_action().

static isc_result_t sync_secure_journal ( dns_zone_t zone,
dns_zone_t raw,
dns_journal_t journal,
isc_uint32_t  start,
isc_uint32_t  end,
dns_difftuple_t **  soatuplep,
dns_diff_t diff 
) [static]

Definition at line 13412 of file zone.c.

References CHECK, dns_diff_appendminimal(), DNS_DIFFOP_ADD, DNS_DIFFOP_DEL, dns_difftuple_create(), dns_difftuple_free(), dns_journal_current_rr(), dns_journal_first_rr(), dns_journal_iter_init(), dns_journal_next_rr(), DNS_R_UNCHANGED, dns_zone_log(), ISC_LOG_ERROR, ISC_R_FAILURE, ISC_R_NOMORE, ISC_R_SUCCESS, dns_diff::mctx, REQUIRE, and dns_rdata::type.

Referenced by receive_secure_serial().

static isc_result_t sync_secure_db ( dns_zone_t seczone,
dns_zone_t raw,
dns_db_t secdb,
dns_dbversion_t secver,
dns_difftuple_t **  soatuple,
dns_diff_t diff 
) [static]

Definition at line 13487 of file zone.c.

References dns_db_attach(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detach(), dns_db_diffx(), DNS_DIFFOP_ADD, DNS_DIFFOP_DEL, dns_difftuple_free(), dns_name_equal(), DNS_R_UNCHANGED, dns_rdata_tostruct(), DNS_ZONE_VALID, INSIST, ISC_FALSE, ISC_LIST_EMPTY, ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_LIST_UNLINK, ISC_R_SUCCESS, dns_difftuple::op, dns_difftuple::rdata, REQUIRE, RUNTIME_CHECK, and dns_rdata::type.

Referenced by receive_secure_serial().

static void receive_secure_serial ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 13586 of file zone.c.

References CHECK, dns_db_attach(), dns_db_closeversion(), dns_db_createsoatuple(), dns_db_currentversion(), dns_db_detach(), dns_db_newversion(), dns_diff_apply(), dns_diff_clear(), dns_diff_init(), DNS_DIFFOP_DEL, dns_difftuple_free(), DNS_DUMP_DELAY, dns_journal_commit(), dns_journal_destroy(), dns_journal_first_serial(), dns_journal_get_sourceserial(), dns_journal_open(), DNS_JOURNAL_READ, dns_journal_set_sourceserial(), DNS_JOURNAL_WRITE, DNS_R_CONTINUE, DNS_R_UNCHANGED, dns_result_totext(), dns_soa_getserial(), dns_soa_setserial(), dns_update_signaturesinc(), dns_zone_attach(), dns_zone_detach(), dns_zone_idetach(), dns_zone_log(), DNS_ZONE_SETFLAG, DNS_ZONEFLG_NEEDNOTIFY, do_one_tuple(), ENTER, INSIST, isc_event_free(), ISC_FALSE, ISC_LIST_APPEND, ISC_LIST_HEAD, ISC_LOG_ERROR, ISC_LOG_INFO, ISC_R_FAILURE, ISC_R_NOTFOUND, ISC_R_SUCCESS, isc_rwlocktype_read, isc_serial_gt(), isc_task_send(), ISC_TRUE, LOCK_ZONE, dns_difftuple::rdata, start, sync_secure_db(), sync_secure_journal(), TIME_NOW, UNLOCK_ZONE, UNUSED, update_log_cb(), update_soa_serial(), zone_journal(), zone_needdump(), zone_settimer(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by zone_send_secureserial().

static isc_result_t checkandaddsoa ( dns_db_t db,
dns_dbnode_t node,
dns_dbversion_t version,
dns_rdataset_t rdataset,
isc_uint32_t  oldserial 
) [static]

Definition at line 13827 of file zone.c.

References dns_db_addrdataset(), dns_fixedname_init, dns_fixedname_name, dns_rbtnode_nodename(), dns_rdata_fromstruct(), DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdatalist_init(), dns_rdatalist_tordataset(), dns_rdataset_current(), dns_rdataset_first(), dns_rdataset_getownercase(), dns_rdataset_init(), dns_rdataset_setownercase(), DNS_SOA_BUFFERSIZE, fixed, isc_buffer_init, ISC_LIST_APPEND, ISC_R_SUCCESS, isc_serial_gt(), dns_rdata::rdclass, dns_rdatalist::rdclass, dns_rdataset::rdclass, RUNTIME_CHECK, dns_rdataset::ttl, dns_rdatalist::ttl, dns_rdata::type, and dns_rdatalist::type.

Referenced by receive_secure_db().

static isc_result_t save_nsec3param ( dns_zone_t zone,
nsec3paramlist_t *  nsec3list 
) [static]

Definition at line 13888 of file zone.c.

References CHECK, dns_rdata::data, nsec3param::data, dns_db_attach(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detach(), dns_db_detachnode(), dns_db_findrdataset(), dns_db_getoriginnode(), dns_lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_ZONE, DNS_NSEC3PARAM_BUFFERSIZE, dns_nsec3param_fromprivate(), dns_nsec3param_toprivate(), DNS_RDATA_INIT, dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), DNS_ZONE_VALID, INSIST, ISC_FALSE, ISC_LINK_INIT, ISC_LIST_APPEND, ISC_LIST_EMPTY, ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_LIST_UNLINK, ISC_LOG_DEBUG, isc_log_write(), isc_mem_get, isc_mem_put, ISC_R_NOMEMORY, ISC_R_NOMORE, ISC_R_NOTFOUND, ISC_R_SUCCESS, dns_rdata::length, nsec3param::length, NSEC3REMOVE, REQUIRE, and version.

Referenced by receive_secure_db().

static isc_result_t restore_nsec3param ( dns_zone_t zone,
dns_db_t db,
dns_dbversion_t version,
nsec3paramlist_t *  nsec3list 
) [static]

Definition at line 14046 of file zone.c.

References CHECK, dns_rdata::data, nsec3param::data, dns_diff_clear(), dns_diff_init(), DNS_DIFFOP_ADD, dns_rdata_init(), DNS_ZONE_VALID, ISC_LIST_EMPTY, ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_LIST_UNLINK, isc_mem_put, ISC_R_SUCCESS, nsec3param::length, dns_rdata::length, dns_rdata::rdclass, REQUIRE, dns_rdata::type, and update_one_rr().

Referenced by receive_secure_db().

static void receive_secure_db ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 14097 of file zone.c.

References checkandaddsoa(), dns_db_addrdataset(), dns_db_allrdatasets(), dns_db_closeversion(), dns_db_create(), dns_db_createiterator(), dns_db_detach(), dns_db_detachnode(), dns_db_findnode(), dns_db_getsoaserial(), dns_db_newversion(), dns_dbiterator_current(), dns_dbiterator_destroy(), dns_dbiterator_first(), dns_dbiterator_next(), dns_dbtype_zone, dns_fixedname_init, dns_fixedname_name, dns_rdataset_disassociate(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdatasetiter_current(), dns_rdatasetiter_destroy(), dns_rdatasetiter_first(), dns_rdatasetiter_next(), dns_result_totext(), DNS_ZONE_FLAG, dns_zone_idetach(), dns_zone_log(), DNS_ZONE_SETFLAG, DNS_ZONEFLG_EXITING, DNS_ZONEFLG_NEEDNOTIFY, inline_secure(), INSIST, isc_event_free(), ISC_FALSE, ISC_LIST_EMPTY, ISC_LIST_HEAD, ISC_LIST_INIT, ISC_LIST_UNLINK, ISC_LOG_ERROR, isc_mem_put, ISC_R_SHUTTINGDOWN, ISC_R_SUCCESS, isc_rwlocktype_read, ISC_TRUE, LOCK_ZONE, restore_nsec3param(), save_nsec3param(), TIME_NOW, dns_rdataset::type, UNLOCK_ZONE, UNUSED, version, zone_needdump(), zone_postload(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by zone_send_securedb().

isc_result_t dns_zone_replacedb ( dns_zone_t zone,
dns_db_t db,
isc_boolean_t  dump 
)

Replace the database of "zone" with a new database "db".

If "dump" is ISC_TRUE, then the new zone contents are dumped into to the zone's master file for persistence. When replacing a zone database by one just loaded from a master file, set "dump" to ISC_FALSE to avoid a redundant redump of the data just loaded. Otherwise, it should be set to ISC_TRUE.

If the "diff-on-reload" option is enabled in the configuration file, the differences between the old and the new database are added to the journal file, and the master file dump is postponed.

Requires:

Returns:

Definition at line 14281 of file zone.c.

References DNS_ZONE_VALID, inline_raw(), INSIST, ISC_R_SUCCESS, isc_rwlocktype_write, isc_thread_yield, LOCK_ZONE, REQUIRE, secure(), TRYLOCK_ZONE, UNLOCK_ZONE, zone_replacedb(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

Referenced by axfr_finalize(), and create_empty_zone().

void dns_zone_getssutable ( dns_zone_t zone,
dns_ssutable_t **  table 
)

Get the simple-secure-update policy table.

Requires:

Definition at line 14858 of file zone.c.

References dns_ssutable_attach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by update_action().

void dns_zone_setssutable ( dns_zone_t zone,
dns_ssutable_t table 
)

Set / clear the simple-secure-update policy table.

Requires:

Definition at line 14870 of file zone.c.

References dns_ssutable_attach(), dns_ssutable_detach(), DNS_ZONE_VALID, LOCK_ZONE, REQUIRE, and UNLOCK_ZONE.

Referenced by configure_zone_ssutable(), and dns_dlz_writeablezone().

void dns_zone_setsigvalidityinterval ( dns_zone_t zone,
isc_uint32_t  interval 
)

Set the zone's RRSIG validity interval. This is the length of time for which DNSSEC signatures created as a result of dynamic updates to secure zones will remain valid, in seconds.

Requires:

Definition at line 14882 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_zone_configure().

isc_uint32_t dns_zone_getsigvalidityinterval ( dns_zone_t zone  ) 

Get the zone's RRSIG validity interval.

Requires:

Definition at line 14889 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by update_action(), zone_nsec3chain(), zone_resigninc(), and zone_sign().

void dns_zone_setsigresigninginterval ( dns_zone_t zone,
isc_uint32_t  interval 
)

Set the zone's RRSIG re-signing interval. A dynamic zone's RRSIG's will be re-signed 'interval' amount of time before they expire.

Requires:

Definition at line 14896 of file zone.c.

References DNS_ZONE_VALID, LOCK_ZONE, now, REQUIRE, set_resigntime(), TIME_NOW, UNLOCK_ZONE, and zone_settimer().

Referenced by ns_zone_configure().

isc_uint32_t dns_zone_getsigresigninginterval ( dns_zone_t zone  ) 

Get the zone's RRSIG re-signing interval.

Requires:

Definition at line 14912 of file zone.c.

References DNS_ZONE_VALID, and REQUIRE.

Referenced by ns_server_zonestatus().

static void forward_destroy ( dns_forward_t forward  )  [static]

Definition at line 15124 of file zone.c.

References dns_request_destroy(), dns_zone_idetach(), isc_buffer_free(), ISC_LINK_LINKED, ISC_LIST_UNLINK, isc_mem_putanddetach, LOCK, dns_forward::magic, dns_forward::mctx, dns_forward::msgbuf, dns_forward::request, UNLOCK, and dns_forward::zone.

Referenced by dns_zone_forwardupdate(), and forward_callback().

static isc_result_t sendtomaster ( dns_forward_t forward  )  [static]

Definition at line 15142 of file zone.c.

References dns_forward::addr, dns_request_createraw4(), DNS_ZONE_FLAG, DNS_ZONEFLG_EXITING, dns_notify::dscp, forward_callback(), ISC_LINK_LINKED, ISC_LIST_APPEND, ISC_R_CANCELED, ISC_R_NOMORE, ISC_R_NOTIMPLEMENTED, ISC_R_SUCCESS, isc_sockaddr_pf(), LOCK_ZONE, dns_forward::msgbuf, dns_forward::options, PF_INET6, dns_forward::request, UNLOCK_ZONE, dns_forward::which, and dns_forward::zone.

Referenced by dns_zone_forwardupdate(), and forward_callback().

isc_result_t dns_zone_forwardupdate ( dns_zone_t zone,
dns_message_t msg,
dns_updatecallback_t  callback,
void *  callback_arg 
)

Forward 'msg' to each master in turn until we get an answer or we have exhausted the list of masters. 'callback' will be called with ISC_R_SUCCESS if we get an answer and the returned message will be passed as 'answer_message', otherwise a non ISC_R_SUCCESS result code will be passed and answer_message will be NULL. The callback function is responsible for destroying 'answer_message'. (callback)(callback_arg, result, answer_message);.

Require:

Definition at line 15305 of file zone.c.

References dns_forward::callback, dns_forward::callback_arg, cleanup(), dns_message_getrawmessage(), DNS_REQUESTOPT_FIXEDID, DNS_REQUESTOPT_TCP, dns_zone_iattach(), DNS_ZONE_VALID, forward_destroy(), FORWARD_MAGIC, isc_buffer_allocate(), isc_buffer_copyregion(), ISC_LINK_INIT, isc_mem_attach(), isc_mem_get, ISC_R_NOMEMORY, ISC_R_SUCCESS, ISC_R_UNEXPECTEDEND, isc_region::length, dns_forward::magic, dns_forward::mctx, dns_forward::msgbuf, dns_forward::options, dns_forward::request, REQUIRE, sendtomaster(), dns_message::sig0, dns_forward::which, and dns_forward::zone.

Referenced by forward_action().

isc_result_t dns_zone_next ( dns_zone_t zone,
dns_zone_t **  next 
)

Find the next zone in the list of managed zones.

Requires:

Ensures:

Definition at line 15362 of file zone.c.

References DNS_ZONE_VALID, ISC_LIST_NEXT, ISC_R_NOMORE, ISC_R_SUCCESS, and REQUIRE.

Referenced by adjust_interfaces(), and ns_stats_dump().

isc_result_t dns_zone_first ( dns_zonemgr_t zmgr,
dns_zone_t **  first 
)

Find the first zone in the list of managed zones.

Requires:

Ensures:

Definition at line 15374 of file zone.c.

References DNS_ZONEMGR_VALID, ISC_LIST_HEAD, ISC_R_NOMORE, ISC_R_SUCCESS, REQUIRE, and dns_zonemgr::zones.

Referenced by adjust_interfaces(), and ns_stats_dump().

isc_result_t dns_zonemgr_create ( isc_mem_t mctx,
isc_taskmgr_t taskmgr,
isc_timermgr_t timermgr,
isc_socketmgr_t socketmgr,
dns_zonemgr_t **  zmgrp 
)

Create a zone manager. Note: the zone manager will not be able to manage any zones until dns_zonemgr_setsize() has been run.

Requires:

Definition at line 15390 of file zone.c.

References DESTROYLOCK, dns_zonemgr::high, dns_zonemgr::ioactive, dns_zonemgr::iolimit, dns_zonemgr::iolock, ISC_LIST_INIT, isc_mem_attach(), isc_mem_detach(), isc_mem_get, isc_mem_put, isc_mutex_init, ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_ratelimiter_create(), isc_ratelimiter_detach(), isc_rwlock_destroy(), isc_rwlock_init(), isc_task_create(), isc_task_detach(), isc_task_setname(), dns_zonemgr::loadtasks, dns_zonemgr::low, dns_zonemgr::magic, dns_zonemgr::mctx, dns_zonemgr::mctxpool, dns_zonemgr::notifyrate, dns_zonemgr::notifyrl, dns_zonemgr::refreshrl, dns_zonemgr::refs, dns_zonemgr::rwlock, dns_zonemgr::serialqueryrate, setrl(), dns_zonemgr::socketmgr, dns_zonemgr::startupnotifyrate, dns_zonemgr::startupnotifyrl, dns_zonemgr::startuprefreshrl, dns_zonemgr::startupserialqueryrate, dns_zonemgr::task, dns_zonemgr::taskmgr, dns_zonemgr::timermgr, dns_zonemgr::transfersin, dns_zonemgr::transfersperns, dns_zonemgr::unreachable, dns_zonemgr::urlock, dns_zonemgr::waiting_for_xfrin, dns_zonemgr::xfrin_in_progress, ZONEMGR_MAGIC, dns_zonemgr::zones, and dns_zonemgr::zonetasks.

Referenced by ATF_TC_BODY(), dns_test_setupzonemgr(), and ns_server_create().

isc_result_t dns_zonemgr_createzone ( dns_zonemgr_t zmgr,
dns_zone_t **  zonep 
)

Allocate a new zone using a memory context from the zone manager's memory context pool.

Require:

Definition at line 15501 of file zone.c.

References dns_zone_create(), DNS_ZONEMGR_VALID, isc_mem_attach(), isc_mem_detach(), isc_pool_get(), ISC_R_FAILURE, ISC_R_SUCCESS, dns_notify::mctx, dns_zonemgr::mctxpool, and REQUIRE.

Referenced by add_keydata_zone(), ATF_TC_BODY(), configure_zone(), and create_empty_zone().

isc_result_t dns_zonemgr_managezone ( dns_zonemgr_t zmgr,
dns_zone_t zone 
)

Bring the zone under control of a zone manager.

Require:

Definition at line 15528 of file zone.c.

References DNS_ZONE_VALID, DNS_ZONEMGR_VALID, INSIST, ISC_LIST_APPEND, ISC_R_FAILURE, ISC_R_SUCCESS, isc_rwlocktype_write, isc_task_detach(), isc_task_setname(), isc_taskpool_gettask(), isc_timer_create(), isc_timertype_inactive, dns_zonemgr::loadtasks, LOCK_ZONE, dns_zonemgr::refs, REQUIRE, dns_zonemgr::rwlock, RWLOCK, RWUNLOCK, dns_zonemgr::timermgr, UNLOCK_ZONE, zone_timer(), dns_zonemgr::zones, and dns_zonemgr::zonetasks.

Referenced by add_keydata_zone(), ATF_TC_BODY(), configure_zone(), create_empty_zone(), dlzconfigure_callback(), dns64_reverse(), and dns_test_managezone().

void dns_zonemgr_releasezone ( dns_zonemgr_t zmgr,
dns_zone_t zone 
)

Release 'zone' from the managed by 'zmgr'. 'zmgr' is implicitly detached from 'zone'.

Requires:

Ensures:

Definition at line 15585 of file zone.c.

References DNS_ZONE_VALID, DNS_ZONEMGR_VALID, ENSURE, free_now, ISC_FALSE, ISC_LIST_UNLINK, isc_rwlocktype_write, ISC_TRUE, LOCK_ZONE, dns_zonemgr::refs, REQUIRE, dns_zonemgr::rwlock, RWLOCK, RWUNLOCK, UNLOCK_ZONE, zonemgr_free(), and dns_zonemgr::zones.

Referenced by ATF_TC_BODY(), dns_test_releasezone(), and zone_shutdown().

void dns_zonemgr_attach ( dns_zonemgr_t source,
dns_zonemgr_t **  target 
)

Attach '*target' to 'source' incrementing its external reference count.

Require:

Definition at line 15610 of file zone.c.

References DNS_ZONEMGR_VALID, INSIST, isc_rwlocktype_write, dns_zonemgr::refs, REQUIRE, dns_zonemgr::rwlock, RWLOCK, and RWUNLOCK.

void dns_zonemgr_detach ( dns_zonemgr_t **  zmgrp  ) 

Detach from a zone manager.

Requires:

Ensures:

Definition at line 15623 of file zone.c.

References DNS_ZONEMGR_VALID, free_now, ISC_FALSE, isc_rwlocktype_write, ISC_TRUE, dns_zonemgr::refs, REQUIRE, dns_zonemgr::rwlock, RWLOCK, RWUNLOCK, and zonemgr_free().

Referenced by ATF_TC_BODY(), dns_test_closezonemgr(), and ns_server_destroy().

isc_result_t dns_zonemgr_forcemaint ( dns_zonemgr_t zmgr  ) 

Force zone maintenance of all zones managed by 'zmgr' at its earliest convenience.

Definition at line 15643 of file zone.c.

References dns_zone_maintenance(), DNS_ZONEMGR_VALID, ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_R_SUCCESS, isc_rwlocktype_read, isc_rwlocktype_write, ISC_TRUE, REQUIRE, dns_zonemgr::rwlock, RWLOCK, RWUNLOCK, zmgr_resume_xfrs(), and dns_zonemgr::zones.

Referenced by view_loaded().

void dns_zonemgr_resumexfrs ( dns_zonemgr_t zmgr  ) 

Attempt to start any stalled zone transfers.

Definition at line 15670 of file zone.c.

References DNS_ZONEMGR_VALID, isc_rwlocktype_write, ISC_TRUE, REQUIRE, dns_zonemgr::rwlock, RWLOCK, RWUNLOCK, and zmgr_resume_xfrs().

Referenced by load_new_zones().

void dns_zonemgr_shutdown ( dns_zonemgr_t zmgr  ) 

Shut down the zone manager.

Requires:

Definition at line 15680 of file zone.c.

References DNS_ZONEMGR_VALID, forward_cancel(), ISC_LIST_HEAD, ISC_LIST_NEXT, isc_pool_destroy(), isc_ratelimiter_shutdown(), isc_rwlocktype_read, isc_task_destroy(), isc_taskpool_destroy(), dns_zonemgr::loadtasks, LOCK_ZONE, dns_zonemgr::mctxpool, dns_zonemgr::notifyrl, dns_zonemgr::refreshrl, REQUIRE, dns_zonemgr::rwlock, RWLOCK, RWUNLOCK, dns_zonemgr::startupnotifyrl, dns_zonemgr::startuprefreshrl, dns_zonemgr::task, UNLOCK_ZONE, dns_zonemgr::zones, and dns_zonemgr::zonetasks.

Referenced by ATF_TC_BODY(), dns_test_closezonemgr(), and shutdown_server().

static isc_result_t mctxinit ( void **  target,
void *  arg 
) [static]

Definition at line 15712 of file zone.c.

References isc_mem_create(), isc_mem_setname(), ISC_R_SUCCESS, dns_notify::mctx, REQUIRE, and UNUSED.

Referenced by dns_zonemgr_setsize().

static void mctxfree ( void **  target  )  [static]

Definition at line 15730 of file zone.c.

References isc_mem_detach(), and dns_notify::mctx.

Referenced by dns_zonemgr_setsize().

isc_result_t dns_zonemgr_setsize ( dns_zonemgr_t zmgr,
int  num_zones 
)

Set the size of the zone manager task pool. This must be run before zmgr can be used for managing zones. Currently, it can only be run once; the task pool cannot be resized.

Requires:

Definition at line 15740 of file zone.c.

References DNS_ZONEMGR_VALID, isc_pool_create(), isc_pool_expand(), ISC_R_SUCCESS, isc_taskpool_create(), isc_taskpool_expand(), isc_taskpool_setprivilege(), ISC_TRUE, dns_zonemgr::loadtasks, dns_zonemgr::mctx, mctxfree(), mctxinit(), dns_zonemgr::mctxpool, ntasks, REQUIRE, dns_zonemgr::taskmgr, ZONES_PER_MCTX, ZONES_PER_TASK, and dns_zonemgr::zonetasks.

Referenced by ATF_TC_BODY(), dns_test_managezone(), load_configuration(), and ns_server_create().

void dns_zonemgr_settransfersin ( dns_zonemgr_t zmgr,
isc_uint32_t  value 
)

Set the maximum number of simultaneous transfers in allowed by the zone manager.

Requires:

Definition at line 15831 of file zone.c.

References DNS_ZONEMGR_VALID, REQUIRE, and dns_zonemgr::transfersin.

Referenced by load_configuration().

isc_uint32_t dns_zonemgr_getttransfersin ( dns_zonemgr_t zmgr  ) 

Return the maximum number of simultaneous transfers in allowed.

Requires:

Definition at line 15838 of file zone.c.

References DNS_ZONEMGR_VALID, REQUIRE, and dns_zonemgr::transfersin.

void dns_zonemgr_settransfersperns ( dns_zonemgr_t zmgr,
isc_uint32_t  value 
)

Set the number of zone transfers allowed per nameserver.

Requires:

Definition at line 15845 of file zone.c.

References DNS_ZONEMGR_VALID, REQUIRE, and dns_zonemgr::transfersperns.

Referenced by load_configuration().

isc_uint32_t dns_zonemgr_getttransfersperns ( dns_zonemgr_t zmgr  ) 

Return the number of transfers allowed per nameserver.

Requires:

Definition at line 15852 of file zone.c.

References DNS_ZONEMGR_VALID, REQUIRE, and dns_zonemgr::transfersperns.

void dns_zonemgr_setiolimit ( dns_zonemgr_t zmgr,
isc_uint32_t  iolimit 
)

Set the number of simultaneous file descriptors available for reading and writing masterfiles.

Requires:

Definition at line 16004 of file zone.c.

References DNS_ZONEMGR_VALID, dns_zonemgr::iolimit, and REQUIRE.

isc_uint32_t dns_zonemgr_getiolimit ( dns_zonemgr_t zmgr  ) 

Get the number of simultaneous file descriptors available for reading and writing masterfiles.

Requires:

Definition at line 16013 of file zone.c.

References DNS_ZONEMGR_VALID, dns_zonemgr::iolimit, and REQUIRE.

void dns_zonemgr_setnotifyrate ( dns_zonemgr_t zmgr,
unsigned int  value 
)

Set the number of NOTIFY requests sent per second.

Requires:

Definition at line 16217 of file zone.c.

Referenced by load_configuration().

void dns_zonemgr_setstartupnotifyrate ( dns_zonemgr_t zmgr,
unsigned int  value 
)

Set the number of startup NOTIFY requests sent per second.

Requires:

Definition at line 16225 of file zone.c.

Referenced by load_configuration().

void dns_zonemgr_setserialqueryrate ( dns_zonemgr_t zmgr,
unsigned int  value 
)

Set the number of SOA queries sent per second.

Requires:

Definition at line 16233 of file zone.c.

Referenced by load_configuration().

unsigned int dns_zonemgr_getnotifyrate ( dns_zonemgr_t zmgr  ) 

Return the number of NOTIFY requests sent per second.

Requires:

Definition at line 16243 of file zone.c.

unsigned int dns_zonemgr_getstartupnotifyrate ( dns_zonemgr_t zmgr  ) 

Return the number of startup NOTIFY requests sent per second.

Requires:

Definition at line 16250 of file zone.c.

unsigned int dns_zonemgr_getserialqueryrate ( dns_zonemgr_t zmgr  ) 

Return the number of SOA queries sent per second.

Requires:

Definition at line 16257 of file zone.c.

isc_boolean_t dns_zonemgr_unreachable ( dns_zonemgr_t zmgr,
isc_sockaddr_t remote,
isc_sockaddr_t local,
isc_time_t now 
)

Returns ISC_TRUE if the given local/remote address pair is found in the zone maanger's unreachable cache.

Requires:

Definition at line 16264 of file zone.c.

Referenced by ATF_TC_BODY(), got_transfer_quota(), and refresh_callback().

void dns_zonemgr_unreachabledel ( dns_zonemgr_t zmgr,
isc_sockaddr_t remote,
isc_sockaddr_t local 
)

Remove the pair of addresses from the unreachable cache.

Requires:

Definition at line 16295 of file zone.c.

Referenced by ATF_TC_BODY(), dns_zone_notifyreceive(), and xfrin_connect_done().

void dns_zonemgr_unreachableadd ( dns_zonemgr_t zmgr,
isc_sockaddr_t remote,
isc_sockaddr_t local,
isc_time_t now 
)

Add the pair of addresses to the unreachable cache.

Requires:

Definition at line 16334 of file zone.c.

Referenced by ATF_TC_BODY(), stub_callback(), and xfrin_connect_done().

void dns_zone_forcereload ( dns_zone_t zone  ) 

Force a reload of specified zone.

Requires:

Definition at line 16392 of file zone.c.

Referenced by ns_server_retransfercommand().

isc_boolean_t dns_zone_isforced ( dns_zone_t zone  ) 

Check if the zone is waiting a forced reload.

Requires:

Definition at line 16406 of file zone.c.

Referenced by xfr_rr().

isc_result_t dns_zone_setstatistics ( dns_zone_t zone,
isc_boolean_t  on 
)

This function is obsoleted by dns_zone_setrequeststats().

Definition at line 16413 of file zone.c.

isc_uint64_t* dns_zone_getstatscounters ( dns_zone_t zone  ) 

This function is obsoleted by dns_zone_getrequeststats().

Definition at line 16423 of file zone.c.

void dns_zone_setstats ( dns_zone_t zone,
isc_stats_t stats 
)

Set a general zone-maintenance statistics set 'stats' for 'zone'. This function is expected to be called only on zone creation (when necessary). Once installed, it cannot be removed or replaced. Also, there is no interface to get the installed stats from the zone; the caller must keep the stats to reference (e.g. dump) it later.

Requires:

Definition at line 16432 of file zone.c.

Referenced by add_keydata_zone(), configure_zone(), create_empty_zone(), dlzconfigure_callback(), and dns64_reverse().

void dns_zone_setrequeststats ( dns_zone_t zone,
isc_stats_t stats 
)

Definition at line 16443 of file zone.c.

Referenced by ns_zone_configure(), and setquerystats().

void dns_zone_setrcvquerystats ( dns_zone_t zone,
dns_stats_t stats 
)

Set additional statistics sets to zone. These are attached to the zone but are not counted in the zone module; only the caller updates the counters.

Requires:

Definition at line 16460 of file zone.c.

Referenced by ns_zone_configure().

isc_stats_t* dns_zone_getrequeststats ( dns_zone_t zone  ) 

Definition at line 16475 of file zone.c.

Referenced by inc_stats(), ns_stats_dump(), and rpz_log_rewrite().

dns_stats_t* dns_zone_getrcvquerystats ( dns_zone_t zone  ) 

Get the additional statistics for zone, if one is installed.

Requires:

Returns:

Definition at line 16495 of file zone.c.

Referenced by inc_stats().

void dns_zone_dialup ( dns_zone_t zone  ) 

Perform dialup-time maintenance on 'zone'.

Definition at line 16503 of file zone.c.

Referenced by dialup().

void dns_zone_setdialup ( dns_zone_t zone,
dns_dialuptype_t  dialup 
)

Set the dialup type of 'zone' to 'dialup'.

Requires:

Definition at line 16520 of file zone.c.

Referenced by add_keydata_zone(), create_empty_zone(), dns64_reverse(), and ns_zone_configure().

isc_result_t dns_zone_setkeydirectory ( dns_zone_t zone,
const char *  directory 
)

Sets the name of the directory where private keys used for online signing of dynamic zones are found.

Require:

Returns:

Definition at line 16556 of file zone.c.

Referenced by ns_zone_configure().

const char* dns_zone_getkeydirectory ( dns_zone_t zone  ) 

Gets the name of the directory where private keys used for online signing of dynamic zones are found.

Requires:

Returns: Pointer to null-terminated file name, or NULL.

Definition at line 16569 of file zone.c.

Referenced by find_zone_keys().

unsigned int dns_zonemgr_getcount ( dns_zonemgr_t zmgr,
int  state 
)

Returns the number of zones in the specified state.

Requires:

Definition at line 16576 of file zone.c.

Referenced by ATF_TC_BODY(), and ns_server_status().

isc_result_t dns_zone_checknames ( dns_zone_t zone,
dns_name_t name,
dns_rdata_t rdata 
)

Check if this record meets the check-names policy.

Requires: 'zone' to be valid. 'name' to be valid. 'rdata' to be valid.

Returns: DNS_R_SUCCESS passed checks. DNS_R_BADOWNERNAME failed ownername checks. DNS_R_BADNAME failed rdata checks.

Definition at line 16634 of file zone.c.

Referenced by axfr_putdata(), ixfr_putdata(), and update_action().

void dns_zone_setcheckmx ( dns_zone_t zone,
dns_checkmxfunc_t  checkmx 
)

Set the post load integrity callback function 'checkmx'. 'checkmx' will be called if the MX TARGET is not within the zone.

Require: 'zone' to be a valid zone.

Definition at line 16681 of file zone.c.

Referenced by load_zone().

void dns_zone_setchecksrv ( dns_zone_t zone,
dns_checkmxfunc_t  checksrv 
)

Set the post load integrity callback function 'checksrv'. 'checksrv' will be called if the SRV TARGET is not within the zone.

Require: 'zone' to be a valid zone.

Definition at line 16687 of file zone.c.

Referenced by load_zone().

void dns_zone_setcheckns ( dns_zone_t zone,
dns_checknsfunc_t  checkns 
)

Set the post load integrity callback function 'checkns'. 'checkns' will be called if the NS TARGET is not within the zone.

Require: 'zone' to be a valid zone.

Definition at line 16693 of file zone.c.

Referenced by load_zone().

void dns_zone_setisself ( dns_zone_t zone,
dns_isselffunc_t  isself,
void *  arg 
)

Set the isself callback function and argument.

isc_boolean_t isself(dns_view_t *myview, dns_tsigkey_t *mykey, isc_netaddr_t *srcaddr, isc_netaddr_t *destaddr, dns_rdataclass_t rdclass, void *arg);

'isself' returns ISC_TRUE if a non-recursive query from 'srcaddr' to 'destaddr' with optional key 'mykey' for class 'rdclass' would be delivered to 'myview'.

Definition at line 16699 of file zone.c.

Referenced by ns_zone_configure().

void dns_zone_setnotifydelay ( dns_zone_t zone,
isc_uint32_t  delay 
)

Set the minimum delay between sets of notify messages.

Requires: 'zone' to be valid.

Definition at line 16709 of file zone.c.

Referenced by ns_zone_configure().

isc_uint32_t dns_zone_getnotifydelay ( dns_zone_t zone  ) 

Get the minimum delay between sets of notify messages.

Requires: 'zone' to be valid.

Definition at line 16718 of file zone.c.

isc_result_t dns_zone_signwithkey ( dns_zone_t zone,
dns_secalg_t  algorithm,
isc_uint16_t  keyid,
isc_boolean_t  delete 
)

Initiate/resume signing of the entire zone with the zone DNSKEY(s) that match the given algorithm and keyid.

Definition at line 16725 of file zone.c.

Referenced by update_action().

isc_result_t dns_zone_addnsec3chain ( dns_zone_t zone,
dns_rdata_nsec3param_t *  nsec3param 
)

Incrementally add a NSEC3 chain that corresponds to 'nsec3param'.

Definition at line 16744 of file zone.c.

References dns_zone_log(), DNS_ZONE_VALID, hex, INSIST, ISC_LOG_NOTICE, LOCK_ZONE, REQUIRE, UNLOCK_ZONE, and zone_addnsec3chain().

Referenced by update_action().

void dns_zone_setnodes ( dns_zone_t zone,
isc_uint32_t  nodes 
)

Set the number of nodes that will be checked per quantum.

Definition at line 16772 of file zone.c.

Referenced by ns_zone_configure().

void dns_zone_setsignatures ( dns_zone_t zone,
isc_uint32_t  signatures 
)

Set the number of signatures that will be generated per quantum.

Definition at line 16781 of file zone.c.

Referenced by ns_zone_configure().

isc_uint32_t dns_zone_getsignatures ( dns_zone_t zone  ) 

Get the number of signatures that will be generated per quantum.

Definition at line 16796 of file zone.c.

Referenced by dns_update_signaturesinc().

void dns_zone_setprivatetype ( dns_zone_t zone,
dns_rdatatype_t  type 
)

Definition at line 16802 of file zone.c.

Referenced by ns_zone_configure().

dns_rdatatype_t dns_zone_getprivatetype ( dns_zone_t zone  ) 

Definition at line 16808 of file zone.c.

Referenced by add_nsec3param_records(), check_dnssec(), dns_nsec3param_deletechains(), dns_update_signaturesinc(), dnskey_sane(), ns_server_signing(), and update_action().

static void logmsg ( const char *  format,
  ... 
) [static]

Definition at line 16892 of file zone.c.

static void clear_keylist ( dns_dnsseckeylist_t *  list,
isc_mem_t mctx 
) [static]

Definition at line 16901 of file zone.c.

static isc_result_t next_keyevent ( dst_key_t key,
isc_stdtime_t timep 
) [static]

Definition at line 16912 of file zone.c.

References dst_key_gettime(), DST_MAX_TIMES, ISC_R_NOTFOUND, and ISC_R_SUCCESS.

static isc_result_t rr_exists ( dns_db_t db,
dns_dbversion_t ver,
dns_name_t name,
const dns_rdata_t rdata,
isc_boolean_t flag 
) [static]

Definition at line 16935 of file zone.c.

static isc_result_t add_signing_records ( dns_db_t db,
dns_rdatatype_t  privatetype,
dns_dbversion_t ver,
dns_diff_t diff,
isc_boolean_t  sign_all 
) [static]

Definition at line 16981 of file zone.c.

References CHECK, dns_rdata::data, dns_db_origin(), DNS_DIFFOP_ADD, DNS_DIFFOP_DEL, dns_difftuple_create(), DNS_KEYFLAG_OWNERMASK, DNS_KEYOWNER_ZONE, DNS_KEYTYPE_NOAUTH, DNS_RDATA_INIT, dns_rdata_toregion(), dns_rdata_tostruct(), do_one_tuple(), dst_region_computeid(), INSIST, ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_R_SUCCESS, dns_rdata::length, dns_diff::mctx, dns_difftuple::op, r, dns_difftuple::rdata, dns_rdata::rdclass, rr_exists(), RUNTIME_CHECK, and dns_rdata::type.

Referenced by update_action().

static isc_result_t sign_apex ( dns_zone_t zone,
dns_db_t db,
dns_dbversion_t ver,
dns_diff_t diff,
zonediff_t zonediff 
) [static]

Definition at line 17050 of file zone.c.

static isc_boolean_t dnskey_sane ( dns_zone_t zone,
dns_db_t db,
dns_dbversion_t ver,
dns_diff_t diff 
) [static]

Definition at line 17134 of file zone.c.

References CHECK, dns_rdata::data, DNS_DIFFOP_ADD, dns_nsec3_activex(), dns_nsec_nseconly(), dns_zone_getprivatetype(), dns_zone_log(), DST_ALG_DSA, DST_ALG_ECC, DST_ALG_RSAMD5, DST_ALG_RSASHA1, ISC_FALSE, ISC_LIST_HEAD, ISC_LIST_NEXT, ISC_LOG_ERROR, ISC_R_NOTFOUND, ISC_R_SUCCESS, ISC_TRUE, dns_difftuple::op, privatetype, dns_difftuple::rdata, and dns_rdata::type.

static isc_result_t clean_nsec3param ( dns_zone_t zone,
dns_db_t db,
dns_dbversion_t ver,
dns_diff_t diff 
) [static]

Definition at line 17186 of file zone.c.

static isc_boolean_t signed_with_alg ( dns_rdataset_t rdataset,
dns_secalg_t  alg 
) [static]

Definition at line 17216 of file zone.c.

References DNS_RDATA_INIT, dns_rdata_reset(), dns_rdata_tostruct(), dns_rdataset_current(), dns_rdataset_first(), dns_rdataset_isassociated(), dns_rdataset_next(), ISC_FALSE, ISC_R_SUCCESS, ISC_TRUE, REQUIRE, RUNTIME_CHECK, and dns_rdataset::type.

static isc_result_t add_chains ( dns_zone_t zone,
dns_db_t db,
dns_dbversion_t ver,
dns_diff_t diff 
) [static]

Definition at line 17242 of file zone.c.

void dns_zone_rekey ( dns_zone_t zone,
isc_boolean_t  fullsign 
)

Update the zone's DNSKEY set from the key repository.

If 'fullsign' is true, trigger an immediate full signing of the zone with the new key. Otherwise, if there are no keys or if the new keys are for algorithms that have already signed the zone, then the zone can be re-signed incrementally.

Definition at line 17602 of file zone.c.

Referenced by configure_zone(), and ns_server_rekey().

isc_result_t dns_zone_nscheck ( dns_zone_t zone,
dns_db_t db,
dns_dbversion_t version,
unsigned int *  errors 
)

Definition at line 17620 of file zone.c.

Referenced by update_action().

void dns_zone_setautomatic ( dns_zone_t zone,
isc_boolean_t  automatic 
)

Returns ISC_TRUE if the zone was originally added at runtime using "rndc addzone".

Requires:

Definition at line 17639 of file zone.c.

Referenced by create_empty_zone().

isc_boolean_t dns_zone_getautomatic ( dns_zone_t zone  ) 

Sets the value of zone->automatic, which should be ISC_TRUE for zones that were automatically added by named.

Requires:

Definition at line 17648 of file zone.c.

void dns_zone_setadded ( dns_zone_t zone,
isc_boolean_t  added 
)

Check if the name servers for the zone are sane (have address, don't refer to CNAMEs/DNAMEs. The number of constiancy errors detected in returned in '*errors'.

Requires:

Returns: ISC_R_SUCCESS if there were no errors examining the zone contents.

Definition at line 17654 of file zone.c.

Referenced by configure_zone(), dns_dlz_writeablezone(), and do_addzone().

isc_boolean_t dns_zone_getadded ( dns_zone_t zone  ) 

Sets the value of zone->added, which should be ISC_TRUE for zones that were originally added by "rndc addzone".

Requires:

Definition at line 17663 of file zone.c.

Referenced by do_modzone(), ns_server_delzone(), and ns_server_zonestatus().

isc_result_t dns_zone_dlzpostload ( dns_zone_t zone,
dns_db_t db 
)

Returns ISC_TRUE if the zone was added automatically by named.

Requires:

Definition at line 17669 of file zone.c.

Referenced by ns_zone_configure_writeable_dlz().

isc_result_t dns_zone_setrefreshkeyinterval ( dns_zone_t zone,
isc_uint32_t  interval 
)

Return true iff the zone is "dynamic", in the sense that the zone's master file (if any) is written by the server, rather than being updated manually and read by the server.

This is true for slave zones, stub zones, key zones, and zones that allow dynamic updates either by having an update policy ("ssutable") or an "allow-update" ACL with a value other than exactly "{ none; }".

If 'ignore_freeze' is true, then the zone which has had updates disabled will still report itself to be dynamic.

Requires:

Definition at line 17707 of file zone.c.

Referenced by ns_zone_configure().

void dns_zone_setrequestixfr ( dns_zone_t zone,
isc_boolean_t  flag 
)

Returns the true/false value of the request-ixfr option in the zone.

Requires:

Definition at line 17720 of file zone.c.

Referenced by ns_zone_configure().

isc_boolean_t dns_zone_getrequestixfr ( dns_zone_t zone  ) 

Sets the request-expire option for the zone. Either true or false. The default value is determined by the setting of this option in the view.

Requires:

Definition at line 17726 of file zone.c.

void dns_zone_setrequestexpire ( dns_zone_t zone,
isc_boolean_t  flag 
)

Returns the true/false value of the request-expire option in the zone.

Requires:

Definition at line 17732 of file zone.c.

Referenced by ns_zone_configure().

isc_boolean_t dns_zone_getrequestexpire ( dns_zone_t zone  ) 

Sets the frequency, in minutes, with which the key repository will be checked to see if the keys for this zone have been updated. Any value higher than 1440 minutes (24 hours) will be silently reduced. A value of zero will return an out-of-range error.

Requires:

Definition at line 17738 of file zone.c.

void dns_zone_setserialupdatemethod ( dns_zone_t zone,
dns_updatemethod_t  method 
)

Sets the request-ixfr option for the zone. Either true or false. The default value is determined by the setting of this option in the view.

Requires:

Definition at line 17744 of file zone.c.

Referenced by ns_zone_configure().

dns_updatemethod_t dns_zone_getserialupdatemethod ( dns_zone_t zone  ) 

Sets the update method to use when incrementing the zone serial number due to a DDNS update. Valid options are dns_updatemethod_increment and dns_updatemethod_unixtime.

Requires:

Definition at line 17750 of file zone.c.

Referenced by update_action().

isc_result_t dns_zone_link ( dns_zone_t zone,
dns_zone_t raw 
)

Returns the update method to be used when incrementing the zone serial number due to a DDNS update.

Requires:

Definition at line 17759 of file zone.c.

References DNS_ZONE_VALID, INSIST, ISC_LIST_APPEND, ISC_R_SUCCESS, isc_refcount_increment, isc_rwlocktype_write, isc_task_attach(), isc_timer_create(), isc_timertype_inactive, LOCK_ZONE, dns_zonemgr::refs, REQUIRE, dns_zonemgr::rwlock, RWLOCK, RWUNLOCK, dns_zonemgr::timermgr, UNLOCK_ZONE, zone_iattach(), zone_timer(), and dns_zonemgr::zones.

Referenced by configure_zone().

void dns_zone_getraw ( dns_zone_t zone,
dns_zone_t **  raw 
)

Definition at line 17820 of file zone.c.

Referenced by configure_zone(), create_empty_zone(), freezezones(), ns_server_delzone(), ns_server_freeze(), ns_server_refreshcommand(), ns_server_retransfercommand(), ns_server_zonestatus(), ns_update_start(), ns_xfr_start(), ns_zone_reusable(), query_find(), and synczone().

static void keydone ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 17840 of file zone.c.

References keydone::all, CHECK, keydone::data, dns_rdata::data, dns_db_attach(), dns_db_closeversion(), dns_db_currentversion(), dns_db_detach(), dns_db_detachnode(), dns_db_findrdataset(), dns_db_getoriginnode(), dns_db_newversion(), dns_diff_clear(), dns_diff_init(), DNS_DIFFOP_DEL, DNS_RDATA_INIT, dns_rdata_reset(), dns_rdataset_current(), dns_rdataset_disassociate(), dns_rdataset_first(), dns_rdataset_init(), dns_rdataset_isassociated(), dns_rdataset_next(), dns_result_totext(), dns_update_signatures(), dns_zone_idetach(), dns_zone_log(), DNS_ZONE_SETFLAG, DNS_ZONE_VALID, DNS_ZONEFLG_LOADED, ENTER, INSIST, isc_event_free(), ISC_FALSE, ISC_LIST_EMPTY, ISC_LOG_ERROR, ISC_R_NOTFOUND, ISC_R_SUCCESS, isc_rwlocktype_read, ISC_TRUE, dns_rdata::length, LOCK_ZONE, dns_diff::mctx, PENDINGFLAGS, dns_rdataset::ttl, UNLOCK_ZONE, UNUSED, update_log_cb(), update_one_rr(), update_soa_serial(), zone_journal(), zone_needdump(), ZONEDB_LOCK, and ZONEDB_UNLOCK.

isc_result_t dns_zone_keydone ( dns_zone_t zone,
const char *  keystr 
)

Definition at line 17964 of file zone.c.

Referenced by ns_server_signing().

static void setnsec3param ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 18031 of file zone.c.

isc_result_t dns_zone_setnsec3param ( dns_zone_t zone,
isc_uint8_t  hash,
isc_uint8_t  flags,
isc_uint16_t  iter,
isc_uint8_t  saltlen,
unsigned char *  salt,
isc_boolean_t  replace 
)

Definition at line 18203 of file zone.c.

Referenced by ns_server_signing().

isc_result_t dns_zone_getloadtime ( dns_zone_t zone,
isc_time_t loadtime 
)

Force the managed key zone to synchronize, and start the key maintenance timer.

Definition at line 18267 of file zone.c.

Referenced by ns_server_zonestatus().

isc_result_t dns_zone_getexpiretime ( dns_zone_t zone,
isc_time_t expiretime 
)

Return the time when the (slave) zone will need to be refreshed.

Definition at line 18278 of file zone.c.

Referenced by ns_server_zonestatus(), ns_xfr_start(), and query_find().

isc_result_t dns_zone_getrefreshtime ( dns_zone_t zone,
isc_time_t refreshtime 
)

Return the time when the zone was last loaded.

Definition at line 18289 of file zone.c.

Referenced by ns_server_zonestatus().

isc_result_t dns_zone_getrefreshkeytime ( dns_zone_t zone,
isc_time_t refreshkeytime 
)

Return the time when the (slave) zone will expire.

Definition at line 18300 of file zone.c.

Referenced by mkey_status(), and ns_server_zonestatus().

unsigned int dns_zone_getincludes ( dns_zone_t zone,
char ***  includesp 
)

Return the time of the next scheduled DNSSEC key event.

Definition at line 18311 of file zone.c.

Referenced by ns_server_zonestatus().

void dns_zone_setstatlevel ( dns_zone_t zone,
dns_zonestat_level_t  level 
)

Definition at line 18341 of file zone.c.

Referenced by ns_zone_configure(), and setquerystats().

dns_zonestat_level_t dns_zone_getstatlevel ( dns_zone_t zone  ) 

Definition at line 18348 of file zone.c.

static void setserial ( isc_task_t task,
isc_event_t event 
) [static]

Definition at line 18355 of file zone.c.

Referenced by ns_server_signing().

isc_result_t dns_zone_setserial ( dns_zone_t zone,
isc_uint32_t  serial 
)

Set and get the statistics reporting level for the zone; full, terse, or none.

Definition at line 18452 of file zone.c.

Referenced by ns_server_signing().


Variable Documentation

unsigned int dns_zone_mkey_hour = HOUR

Definition at line 721 of file zone.c.

Referenced by keyfetch_done(), parse_command_line(), refresh_time(), and zone_refreshkeys().

unsigned int dns_zone_mkey_day = DAY

Definition at line 722 of file zone.c.

Referenced by parse_command_line(), and refresh_time().

unsigned int dns_zone_mkey_month = MONTH

Definition at line 723 of file zone.c.

Referenced by keyfetch_done(), and parse_command_line().

const unsigned int dbargc_default = 1 [static]

Definition at line 820 of file zone.c.

Referenced by dns_zone_create().

const char* dbargv_default[] = { "rbt" } [static]

Definition at line 821 of file zone.c.

Referenced by dns_zone_create().

const char* hex = "0123456789ABCDEF" [static]

Definition at line 16741 of file zone.c.


Generated on Tue Apr 28 17:41:14 2015 by Doxygen 1.5.4 for BIND9 Internals 9.11.0pre-alpha