Arguments for test case messages

Introduction

This document defines arguments. An argument is defined with its name, its type of value and its usage and formatting. The arguments are primarily used in a Zonemaster-Engine message, but can also be used in messages output by Zonemaster-CLI and Zonemaster-Backend. The messages, in the form of msgid strings, are primarily defined in the Perl modules for the test cases, e.g. Basic.pm. The arguments are also used in the translated messages, in the form of msgstr strings, in the PO files, e.g. fr.po and sv.po. When an argument is used in a message (msgid or msgstr) it is represented by its name which is put within curly brackets, e.g. as {ns}.

When a message is created or updated only arguments defined in this document should be used. If there is not a defined argument that can be used for the message then a new argument must be defined and this document is to be updated.

Multiple instances of the same argument

In a message the same argument can only be used once. In case a message needs more than one instance of an argument, the instances need to be disambiguated. This is done by adding different suffixes to the argument's name. The suffix is an underscore ("_") followed by a descriptive string of lower case "a-z0-9". The suffixed argument name is not to be listed in this document, it is just an instance of the argument name without the specific suffix.

Example of multiple instances

If two arguments of type "List of IP addresses" are to be used in a message, then both argument names should be ns_ip_list following the list of defined arguments below. If the relevant suffixes for those are "nsec" (connected to an NSEC record type) and "nsec3" (connected to an NSEC3 record type) then two resulting argument names should be ns_ip_list_nsec and ns_ip_list_nsec3, respectively.

The following is a message (msgid in this case) where this is in use:

The zone is inconsistent on NSEC and NSEC3. NSEC is fetched from nameservers with IP addresses "{ns_ip_list_nsec}". NSEC3 is fetched from nameservers with IP addresses "{ns_ip_list_nsec3}".

Defined arguments

When a suitable argument is found in this list, it should also be used in new and updated messages (msgids and msgstr).

Argument nameType of valueDescription and formatting
algo_descrTextThe human readable description of a DNSSEC algorithm as in table in DNSSEC05.
algo_mnemoTextThe mnemonic of a DNSSEC algorithm as in table in DNSSEC05.
algo_numNon-negative integerThe numeric value for a DNSSEC algorithm as in table in DNSSEC05.
cli_argTextCommand line (CLI) argument to an option, valid or invalid
domainDomain nameA domain name. If "nsname", "mailtarget" or "query_name" is also applicable, use that one instead.
ds_algo_descrTextThe human readable description of a DS Digest algorithm.
ds_algo_mnemoTextThe mnemonic of a DS Digest algorithm.
ds_algo_numNon-negative integerThe numeric value for a DS Digest algorithm.
intintegerAn integer. If "algo_num", "ds_also_num", "keytag", "soaserial" or some other specific name is applicable, use that instead.
ip_prefixIP prefixAn IP prefix (i.e., an IP address with a network mask in CIDR notation).
keytagNon-negative integerA keytag for a DNSKEY record or a keytag used in a DS or RRSIG record.
labelDomain name labelA single label, i.e. the string between the dots, from a domain name.
localeLocale labelA locale label, user provided or taken from the environment
mailtargetDomain nameThe domain name of the mailserver in an MX RDATA.
mailtarget_listList of domain namesA list of name servers, as specified by "mailtarget", separated by ";".
moduleA Zonemaster test module, or allThe name of a Zonemaster test module.
module_listList of Zonemaster test modulesA list of Zonemaster test modules, separated by ":".
nsDomain name and IP address pairThe name and IP address of a name server, separated by "/".
ns_ipIP addressThe IP address of a name server.
ns_ip_listList of IP addressesA list of name servers, as specified by "ns_ip", separated by ";".
ns_listList of domain name and IP address pairsA list of name servers, as specified by "ns", separated by ";".
nsnameDomain nameThe domain name of a name server.
nsname_listList of domain namesA list of name servers, as specified by "nsname", separated by ";".
query_nameDomain nameA query domain name (QNAME), as defined in RFC1035, section 4.1.2.
rcodeAn RCODE NameAn RCODE Name (not numeric code) from DNS RCODEs.
rrtypeA Resource Record TYPE NameA Resource Record TYPE Name (not numeric code) from DNS RR TYPEs.
soaserialNon-negative integerThe numeric value for the SERIAL field in an SOA record. Integer in range 0-4,294,967,295
soaserial_listList of non-negative integersA list of non-negative integers, as specified by "soaserial", separated by ";".
stringTextThe content of the RDATA of a TXT resource record.
testcaseA Zonemaster test case, or allA test case identifier.
unicode_nameUnicode name of a code pointThe name is a string in ASCII only and in upper case, e.g. "LATIN SMALL LETTER A"

Preliminary or proposed arguments

The arguments in in this table are not fully defined. If used it should follow the pattern of defined arguments, be fully defined and moved to the list of defined arguments.

Argument nameType of valueDescription and formatting
AS numberAn Autonomous Space number for an IP address.
Address record type (A or AAAA)Used to tell the difference between IPv4 and IPv6.
Count of different SOA RNAMEs.Total number of different SOA RNAME fields seen.
Count of different SOA serial numbersTotal number of different SOA serial numbers seen.
Count of different sets of NS name/IP seen.Total number of different sets of nameserver information seen.
Count of different time parameter sets seenTotal number of different sets of SOA time parameters seen.
Count of domain namesA count of domain names.
Count of nameserversA count of nameservers.
DNS packet sizeThe size in octets of a DNS packets.
DNSKEY key lengthThe key length for a DNSKEY. The interpretation of this value various quite a bit with the algorithm. Be careful when using it for algorithms that aren't RSA-based.
DNSSEC delegation verification failure reasonA somewhat human-readable reason why the delegation step between the tested zone and its parent is not secure.
dlength (?)Domain name label lengthThe length of a domain name label.
Duration in secondsAn integer number of seconds.
fqdn (?)FQDNA fully qualified domain name (with terminating dot).
fqdnlength (?)FQDN lengthThe length of an FQDN.
IP addressAn IPv4 or IPv6 address.
IP address or nothingAn IPv4 or IPv6 address, or no value.
IP rangeAn IP range.
IP reserved range descriptionA brief description what an IP range is reserved for.
Largest SOA serial number seenThe numerically largest SOA serial value seen.
List of AS numbersA list of Autonomous Space numbers.
List of DNSKEY keytagsA list of keytags from DNSKEY records.
List of DS keytagsA list of keytags from DS records.
List of DS/DNSKEY/RRSIG keytagsA list of keytags from DS, DNSKEY or RRSIG records.
List of IP addressesA list of IP addresses.
List of MX domain namesA list of domain names from MX records.
List of RR typesA list of RR types, typically from an NSEC or NSEC3 record.
List of SOA RNAMEsA list of RNAME values from SOA records.
List of SOA serial numbersA list of serial number values from SOA records.
List of domain namesA list of domain names.
NS names from childA list of nameserver names taken from a zone's child servers.
NS names from parentA list of nameserver names taken from a zone's parent servers.
NSEC3 iteration countAn iteration count from an NSEC3PARAM record.
Number of DNSKEY RRs in packetThe number of DNSKEY records found in a packet.
Number of RRSIG RRs in packetThe number of RRSIG records found in a packet.
Number of SOA RRs in packetThe number of SOA records found in a packet.
Protocol (UDP or TCP)The protocol used for a query.
RFC referenceA reference to an RFC.
rrtype (?)RR typeThe type of RR the message pertains to.
RRSIG Expiration dateThe time when a signature expires.
RRSIG validation error messageThe human-readable reason why the cryptographic validation of a signature failed.
SOA MNAMEThe MNAME value from a SOA record.
SOA RNAMEThe RNAME value from a SOA record.
SOA expireThe expire value from a SOA record.
SOA expire minimum valueThe lowest value considered OK for the SOA expire field.
SOA minimumThe minimum value from a SOA record.
SOA minimum maximum valueThe highest value considered OK for the SOA minimum field.
SOA minimum minimum valueThe lowest value considered OK for the SOA minimum field.
SOA refreshThe refresh value from a SOA record.
SOA refresh minimum valueThe lowest value considered OK for the SOA refresh field.
SOA retryThe retry value from a SOA record.
SOA retry minimum valueThe lowest value considered OK for the SOA retry field.
SOA serial numberThe serial number value from a SOA record.
Smallest SOA serial number seenThe smallest value seen in a SOA serial field in the tested zone.
TLDThe name of a top-level domain.
time_t value when RRSIG validation was attemptedThe time when an RRSIG validation was attempted, in Unix time_t format.

Message names marked with a question mark should not be considered stable.