zone revision 9ba8f087afc600a12076d52ea4ed1f006f3b46d8
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews Zones
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews $Id: zone,v 1.4 1999/03/04 01:47:40 marka Exp $
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews
ed12ab17de6d192fd46914be8dc55fb573470664Mark AndrewsOverview
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews Zones are the unit of delegation in the DNS and may go from holding
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews RR's only at the zone top to holding the complete hierachy (private
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews roots zones). Zones are a container for the RRsets that make up the
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews zone.
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews Zone have certain properties associated with them.
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * name
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * class
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * master / slave / stub / hint / cache / forward
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * serial number
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * signed / unsigned
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * update periods (refresh / retry) (slave / stub)
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * last update time (slave / stub)
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * access restrictions
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * transfer restrictions (master / slave)
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * update restictions (master / slave)
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * expire period (slave / stub)
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * children => bottom
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * glue
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * rrsets / data
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * transfer "in" in progress
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * transfers "out" in progress
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * "current" check in progress
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * our masters
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * primary master name (required to auto generate our masters)
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * master file name
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * database name
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * transaction logs
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * notification lists
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * NS's
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * static additional sites (stealth servers)
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * dynamically leared sites (soa queries)
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews Zones have two types of versions associated with them.
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews Type 1.
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews The image of the "current" zone when a AXFR out is in progress.
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews There may be several of these at once but they cease to need
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews to exist once the AXFR's on this version has completed.
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews Type 2.
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews These are virtual versions of the zone and are required to
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews support IXFR requests. While the entire contents of the old
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews version does not need to be kept, a change log needs to be
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews kept. An index into this log would be useful in speeding
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews up replies. These versions have an explict expiry date.
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews "How long are we going to keep them operationally?"
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews While there are expriry dates based on last update /
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews change time + expire. In practice holding the deltas
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews for a few refresh periods should be enough. If the network
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews and servers are up one is enough.
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews "How are we going to generate them from a master file?"
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews UPDATE should not be the only answer to this question.
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews We need a tool that takes the current zone & new zone.
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews Verifies the new zone, generates a delta and feeds this
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews at named. It could well be part of ndc but does not have
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews to be.
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews Zones need to have certain operations performed on them. The need to
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews be:
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * loaded
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * unloaded
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * dumped
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * updated (UPDATE / IXFR)
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * copied out in full (AXFR) or as partial deltas (IXFR)
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * read from
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * validated
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews * generate a delta between two given versions.
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * signed / resigned
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews * maintenance
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews validate current soa
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews remove old deltas / consolidation
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews purge stale rrsets (cache)
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews * notification
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews responding to
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews generating
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark AndrewsTypes:
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews typedef enum {
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_zone_none = 0,
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_zone_master,
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_zone_slave,
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_zone_stub,
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_zone_hint,
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_zone_cache,
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_zone_forward
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews } dns_zonetypes_t;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews typedef struct dns_ixfr dns_ixfr_t;
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews struct dns_ixfr {
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews unsigned int magic; /* IXFR */
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews isc_uint32_t serial;
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews time_t expire;
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews unsigned int offset;
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews ISC_LINK(dns_ixfr_t) link;
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews };
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews struct dns_zone {
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews unsigned int magic; /* ZONE */
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_name_t name;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_rdataclass_t class;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_zonetypes_t type;
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_bt_t top;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews isc_uint32_t version;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews isc_uint32_t serial;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews isc_uint32_t refresh;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews isc_uint32_t retry;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews isc_uint32_t serial;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews char *masterfile;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_acl_t *access;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_acl_t *transfer;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews struct {
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_acl_t *acl;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews dns_scl_t *scl; /* tsig based acl */
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews } update;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews char *database;
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews ISC_LIST(dns_ixfr_t) ixfr;
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews ...
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews };
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark AndrewsOperations:
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark AndrewsLoading:
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark Andrews
f7cf0e6785e4a7e5574328a7000a9e8926a9bc9cMark AndrewsFunctions:
ed12ab17de6d192fd46914be8dc55fb573470664Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews void
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_init(dns_zone_t *zone, dns_rdataclass_t class, isc_mem_t *mxtc);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews void
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_invalidate(dns_zone_t *zone);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews void
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_ixfr_init(dns_ixfr_t *ixfr, unsigned long serial, time_t expire);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews void
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_ixfr_invalidate(dns_ixfr_t *ixfr);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_axfrout(dns_zone_t *zone);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Initiate outgoing zone transfer.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_axfrin(dns_zone_t *zone, isc_sockaddr_t *addr);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Initiate transfer of the zone from the given server or the
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews masters masters listed in the zone structure.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_maintenance(dns_zone_t *zone);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Perform any maintenance operations required on the zone
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews * initiate up to date checks
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews * expire zones
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews * initiate ixfr version expire consolidation
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_locateprimary(dns_zone_t *zone);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Working from the root zone locate the primary master for the zone.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Used if masters are not given in named.conf.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_locateservers(dns_zone_t *zone);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Working from the root zone locate the servers for the zone.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Primary master moved to first in list if in NS set. Remove self
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews from list.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Used if masters are not given in named.conf.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_notify(dns_zone_t *);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Queue notify messages.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_checkparents(dns_zone_t *);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews check that the parent nameservers NS lists for this zone agree with
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews the NS list this zone, check glue A records. Warn if not identical.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews This operation is performed on master zones.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_checkchildren(dns_zone_t *);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews check that the child zones NS lists agree with the NS lists in this
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews zone, check glue records. Warn if not identical.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_checkservers(dns_zone_t *);
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews check that all the listed servers for the zone agree on NS list and
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews serial number. NOTE only errors which continue over several refresh
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews periods to be reported.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_dump(dns_zone_t *, FILE *fp);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Write the contents of the zone to the file associated with fp.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_validate(dns_zone_t *);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Validate the zone contents using DNSSEC.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_tordatalist(dns_zone_t *zone, dns_rdatalist_t *list)
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_addmaster(dns_zone_t *zone, isc_sockaddr_t *addr);
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Add addr to the set of masters for the zone.
dfa22b7b17b17e50ee72ca39e992713db1a62097Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_clearmasters(dns_zone_t *zone);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Clear the master set.
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_setreadacl(dns_zone_t *, dns_acl_t *)
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_setxfracl(dns_zone_t *, dns_acl_t *)
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_addnotify(dns_zone_t *, isc_sockaddr_t *addr, isc_boolean_t perm);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_clearnotify(dns_zone_t *)
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_load(dns_zone_t *);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews dns_zone_consolidate(dns_zone_t *);
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews
9ba8f087afc600a12076d52ea4ed1f006f3b46d8Mark Andrews Consolidate on disk copy of zone.