Zonemaster::Engine::Zone - Object representing a DNS zone
my $zone = Zonemaster::Engine::Zone->new({ name => 'nic.se' });
my $packet = $zone->parent->query_one($zone->name, 'NS');
Objects of this class represent zones in DNS. As far as possible,
test implementations should access information about zones via these
objects. Doing so will provide lazy-loading of the information, well-defined
methods in which the information is fetched, logging and the ability to do
things like testing zones that have not yet been delegated.
- name
- A Zonemaster::Engine::DNSName object representing the name of the
zone.
- parent
- A Zonemaster::Engine::Zone object for this domain's parent domain. As a
special case, the root zone is considered to be its own parent (so look
for that if you recurse up the tree).
- ns_names
- A reference to an array of Zonemaster::Engine::DNSName objects, holding
the names of the nameservers for the domain, as returned by the first
responding nameserver in the glue list.
- ns
- A reference to an array of Zonemaster::Engine::Nameserver objects for the
domain, built by taking the list returned from ns_names() and
looking up addresses for the names. One element will be added to this list
for each unique name/IP pair. Names for which no addresses could be found
will not be in this list. The list is lazy-loading, so take care to only
look at as many entries as you really need. There are zones with more than
20 nameserver, and looking up the addresses of them all can take som
considerable time.
- glue_names
- A reference to a an array of Zonemaster::Engine::DNSName objects, holding
the names of this zones nameservers as listed at the first responding
nameserver of the parent zone.
- glue
- A reference to an array of Zonemaster::Engine::Nameserver objects for the
domain, built by taking the list returned from glue_names() and
looking up addresses for the names. One element will be added to this list
for each unique name/IP pair. Names for which no addresses could be found
will not be in this list. In this case, the list is lazy-loading, so take
care to only look at as many entries as you really need. In case of
undelegated tests and fake delegation the IP associated with name servers
for the tested zone will be the ones set by users (saved in
%Zonemaster::Engine::Recursor::fake_addresses_cache),
instead of the ones found recursively.
- glue_addresses
- A list of Zonemaster::LDNS::RR::A and Zonemaster::LDNS::RR::AAAA records
returned in the Additional section of an NS query to the first listed
nameserver for the parent domain.
- query_one($name[,
$type[, $flags]])
- Sends (or retrieves from cache) a query for the given name, type and flags
sent to the first nameserver in the zone's ns list. If there is a
response, it will be returned in a Zonemaster::Engine::Packet object. If
the type arguments is not given, it defaults to 'A'. If the flags are not
given, they default to "class" IN and
"dnssec",
"usevc" and
"recurse" according to configuration
(which is by default off on all three).
- query_persistent($name[,
$type[, $flags]])
- Identical to query_one, except that instead of returning the packet from
the first server that returns one, it returns the first packet that
actually contains a resource record matching the requested name and
type.
- query_auth($name[,
$type[, $flags]])
- Identical to query_one, except that instead of returning the packet from
the first server that returns one, it returns the first packet that has
the AA flag set.
- query_all($name,
$type, $flags)
- Sends (or retrieves from cache) queries to all the nameservers listed in
the zone's ns list, and returns a reference to an array with the
responses. The responses can be either Zonemaster::Engine::Packet objects
or "undef" values. The arguments are the
same as for query_one.
- is_in_zone($name)
- Returns true if the given name is in the zone, false if not. If it could
not be determined with a sufficient degree of certainty if the name is in
the zone or not, "undef" is
returned.