<?xmlversion="1.0"?> <?rfc strict="yes"?> <?rfc toc="yes"?> <?rfc tocdepth="3"?> <?rfc symrefs="yes"?> <?rfc sortrefs="yes"?> <?rfc compact="yes"?> <?rfc subcompact="no"?>version="1.0" encoding="UTF-8"?> <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> <rfc docName="draft-ietf-dnsop-iana-class-type-yang-05" number="9108" ipr="trust200902"category="std"xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF"version="3" consensus="true">category="std" consensus="true" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" updates="" obsoletes="" xml:lang="en" version="3"> <front> <titleabbrev="iana-dns-class-rr-type-yang">YANGabbrev="YANG Types for DNS and RR">YANG Types for DNS Classes and Resource Record Types</title> <seriesInfoname="Internet-Draft" status="standard" value="draft-ietf-dnsop-iana-class-type-yang-03"/>name="RFC" value="9108"/> <author fullname="Ladislav Lhotka" initials="L." surname="Lhotka"> <organization>CZ.NIC</organization> <address> <postal> <country>Czech Republic</country> </postal> <email>ladislav.lhotka@nic.cz</email> </address> </author> <author fullname="PetrSpacek"Špaček" initials="P."surname="Spacek">surname="Špaček"> <organization>Internet Systems Consortium</organization> <address> <postal> <country>Czech Republic</country> </postal> <email>pspacek@isc.org</email> </address> </author> <dateday="17" month="June"month="September" year="2021"/> <area>Operations and Management</area> <workgroup>DNSOP Working Group</workgroup> <keyword>IANA registry</keyword> <keyword>DNA Parameters</keyword> <abstract> <t>This document introduces the YANG module"iana-dns-class-rr-type" that"iana-dns-class-rr-type", which contains derived types reflecting two IANA registries: DNS CLASSes and Resource Record (RR) TYPEs. These YANG types are intended asathe minimum basis for future data modeling work.</t> </abstract> </front> <middle> <section anchor="introduction" title="Introduction"> <t>YANG <xref target="RFC7950"/> has become a de facto standard as a language for modeling configuration and state data, as well as specifying management operations and asynchronous notifications. It is reasonable to expect that the approach based on utilizing such data models along with standard management protocols such as NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/> can be effectively used in DNS operations, too. In fact, several efforts are currently underway that attempt to use NETCONF or RESTCONF for configuring and managing</t> <ul> <li>authoritativeservers</li> <li>resolvers</li>servers,</li> <li>resolvers, and</li> <li>zone data.</li> </ul> <t>While it is possible to use the management protocols mentioned above with ad hoc or proprietary data models, their real potential can be realized only if there is a (completely or partly) unified data model supported by multiple DNS software implementations. Operators can then, for instance, run several DNS server implementations in parallel, and use a common configuration and management interface and data for all of them. Also, it becomes considerably easier to migrate to another implementation.</t> <t>Based on the previous experience from the IETF Routing Area, it is to be expected that the development of unified data models for DNS will be a lengthy and complicated process that will require active cooperation andcompromisescompromise from the vendors and developers of major DNS server platforms. Nevertheless, it is likely that any DNS-related data modeling effort will need to use various DNS parameters and enumerations that are specified in several IANA registries. For use with YANG, these parameters and enumerations have to be translated into corresponding YANG types or other structures. Such translations should be straightforward and relatively uncontroversial.</t> <t>This document provides a translation of two fundamental DNS-related IANA registries to YANG. It contains the initialrevisionversion of the YANG module"iana-dns-class-rr-type" that"iana-dns-class-rr-type", which defines derived types for the common parameters of DNS resource records (RR): class and type. These YANG types, "dns-class" and "rr-type", reflect the IANA registries "DNS CLASSes" and "Resource Record (RR) TYPEs" <xref target="IANA-DNS-PARAMETERS"/>.</t> <t><xref target="app.xslt"/> contains an XSLT 1.0 stylesheet that is intended to be used by IANA for generating the initialrevisionversion of the "iana-dns-class-rr-type" YANG module. Subsequently, whenever a new class or RR type is added to the above registries, IANA will also update the "iana-dns-class-rr-type" YANG module, following the instructions in <xref target="iana"/> below.</t> </section> <section anchor="terminology" title="Terminology"><t>The<t> The key words"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY","<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and"OPTIONAL""<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shownhere.</t>here. </t> <t>The terminology for describing YANG data models can be found in <xref target="RFC7950"/>. DNS terminology used in this document can be found in <xref target="RFC1035"/> and <xref target="RFC8499"/>.</t> </section> <section anchor="design" title="YANG Design Considerations"> <t>At the time of writing, theIANA document"Domain Name System (DNS) Parameters" <xref target="IANA-DNS-PARAMETERS"/> contains altogether thirteen registries. The YANG module "iana-dns-class-rr-type" defines derived types corresponding to only two of the registries that are essential for data models involving zone data, namely "DNS CLASSes" and "Resource Record (RR) TYPEs". It is expected that the remaining registries in <xref target="IANA-DNS-PARAMETERS"/>, as well as other DNS-related IANA registries, will be analogously reflected in future YANG modules as necessary. This way, an appropriate combination of YANG modules can be chosen depending on which YANG types are needed for a given data modeling purpose.</t> <t>The registries "DNS CLASSes" and "Resource Record (RR) TYPEs" are transformed into YANG enumeration types "dns-class-name" and "rr-type-name", respectively. This is the initial fragment of the former:</t> <sourcecode type="yang"> typedef dns-class-name { type enumeration { enum IN { value 1; description "Internet (IN)"; reference "RFC 1035"; } ... } ... } </sourcecode> <t>The other derived type, "rr-type-name", is defined similarly.</t> <t><xref target="RFC3597"/> introduced the option of specifying a class or RR type via its assigned decimalnumber,number as an alternative to the mnemonic name. For example, the "IN" class can be equivalently written as "CLASS1", and "AAAA" type can be written as "TYPE28".</t> <t>Accordingly, the derived types "dns-class" and "rr-type" are defined in the YANG module as a union of two member types:</t> <ul> <li>16-bit decimal integer ("uint16")</li> <li>mnemonic name belonging to the enumerations "dns-class-name" and "rr-type-name", respectively.</li> </ul> <t>For instance, the "rr-type" type is defined as follows:</t> <sourcecode type="yang"> typedef rr-type { type union { type uint16; type rr-type-name; } description "This type allowsfor referringreference to a DNS resource record type using either the assigned mnemonic name or numeric value."; } </sourcecode> <t>As unassigned and reserved class and RR type values are not included in the mnemonic name enumerations, they can only be specified using their decimal values.</t> </section> <section anchor="iana" title="IANA Considerations"><t>RFC Editor: In this section, replace all occurrences of "XXXX" with the actual RFC number (and remove this note).</t><t>This section deals with actions and processes necessary for IANA to undertake to maintain the "iana-dns-class-rr-type" YANG module. This YANG module is intended to reflect the "DNS CLASSes" and "Resource Record (RR) TYPEs" registries in <xref target="IANA-DNS-PARAMETERS"/>. The most recentrevisionversion of the YANG module is available from the "YANG Parameters" registry <xref target="IANA-YANG-PARAMETERS"/>.</t><t>Upon<t>With the publication of this document, IANA has created and posted the initialrevisionversion of the "iana-dns-class-rr-type" YANG moduleSHALL be createdby applying the XSLT stylesheet from <xref target="app.xslt"/> to the XML version of <xref target="IANA-DNS-PARAMETERS"/>.</t> <t>IANASHALL addhas added this note to the "iana-dns-class-rr-type" item of the "YANG Module Names" registry <xref target="IANA-YANG-PARAMETERS"/>:</t> <blockquote> Classes and types of DNS resource records must not be directly added to the "iana-dns-class-rr-type" YANG module. They must instead be added to the "DNS CLASSes" and "Resource Record (RR) TYPEs" registries, respectively. </blockquote> <t>When a new DNS class or RR type is added to the "DNS CLASSes" or "Resource Record (RR) TYPEs" registry, a new "enum" statementSHALL<bcp14>SHALL</bcp14> be added to the "dns-class-name" or "rr-type-name" type, respectively. The assigned name defined by the "enum" statementSHALL<bcp14>SHALL</bcp14> be the same as the mnemonic name of the new class or type. The following substatements to the "enum" statementSHALL<bcp14>SHALL</bcp14> be defined:</t><dl><dl indent="16"> <dt>"value":</dt> <dd>Use the decimal value from the registry.</dd> <dt>"status":</dt> <dd>Include only if a class or type registration has been deprecated or obsoleted. IANA "deprecated" maps to YANG status "deprecated", and IANA "obsolete" maps to YANG status "obsolete".</dd> <dt>"description":</dt> <dd>Replicate the corresponding information from the registry, namely the full name of the new DNS class, or the meaning of the new RR type, if any.</dd> <dt>"reference":</dt> <dd>Replicate the reference(s) from the registry.</dd> </dl> <t>Unassigned or reserved valuesSHALL NOT<bcp14>SHALL NOT</bcp14> be included in the "dns-class-name" and "rr-type-name" enumeration types.</t> <t>Each time the "iana-dns-class-rr-type" YANG module is updated, a new "revision" statementSHALL<bcp14>SHALL</bcp14> be added before the existing "revision" statements.</t> <t>IANASHALL addhas added thisnewnote to the "DNS CLASSes" and "Resource Record (RR) TYPEs" registries:</t> <blockquote> When this registry is modified, the YANG module "iana-dns-class-rr-type" must be updated as defined inRFC XXXX.[RFC9108]. </blockquote> <t>The "Reference" text in the "DNS CLASSes" registrySHALL behas been updated as follows:</t> <t> OLD:</t> <blockquote><artwork> OLD:[RFC6895]NEW: [RFC6895][RFCXXXX] </artwork></blockquote> <t> NEW:</t> <blockquote> [RFC6895][RFC9108] </blockquote> <t>The "Reference" text in the "Resource Record (RR) TYPEs" registrySHALL behas been updated as follows:</t> <t> OLD:</t> <blockquote><artwork> OLD:[RFC6895][RFC1035]NEW: [RFC6895][RFC1035][RFCXXXX] </artwork></blockquote> <t> NEW:</t> <blockquote> [RFC6895][RFC1035][RFC9108] </blockquote> <section title="URI Registrations"> <t>This document registers a URI in the "IETF XML Registry" <xref target="RFC3688"/>. The following registration has been made:</t><blockquote> <artwork> URI: urn:ietf:params:xml:ns:yang:iana-dns-class-rr-type Registrant Contact: The IESG. XML: N/A,<dl spacing="compact"> <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:iana-dns-class-rr-type</dd> <dt>Registrant Contact:</dt><dd>The IESG.</dd> <dt>XML:</dt><dd>N/A, the requested URI is an XMLnamespace. </artwork> </blockquote>namespace.</dd> </dl> </section> <section title="YANG Module Registrations"> <t>This document registers a YANG module in the "YANG Module Names" registry <xref target="RFC6020"/>. The following registration has been made:</t><blockquote> <artwork> name: iana-dns-class-rr-type namespace: urn:ietf:params:xml:ns:yang:iana-dns-class-rr-type prefix: dnsct reference: RFC XXXX </artwork> </blockquote><dl spacing="compact"> <dt>Name:</dt><dd>iana-dns-class-rr-type</dd> <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:iana-dns-class-rr-type</dd> <dt>Prefix:</dt><dd>dnsct</dd> <dt>Reference:</dt><dd>RFC 9108</dd> </dl> </section> </section> <section anchor="security" title="Security Considerations"> <t>This document translates two IANA registries into YANG data types and otherwise introduces no technology or protocol. The definitions themselves have no security impact on the Internet, but their use in concrete YANG modules might have. The security considerations spelled out in the YANG specification <xref target="RFC7950"/> applyforto this document as well.</t> </section> </middle> <back> <references> <name>References</name> <references title="Normative References"> <reference anchor="IANA-DNS-PARAMETERS" target="https://www.iana.org/assignments/dns-parameters"> <front> <title>Domain Name System (DNS) Parameters</title> <author><organization>Internet Assigned Numbers Authority</organization><organization>IANA</organization> </author> </front> </reference> <reference anchor="IANA-YANG-PARAMETERS" target="https://www.iana.org/assignments/yang-parameters"> <front> <title>YANG Parameters</title> <author><organization>Internet Assigned Numbers Authority</organization><organization>IANA</organization> </author> </front> </reference><reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119"> <front> <title>Key words for use in RFCs to Indicate Requirement Levels</title> <author initials="S." surname="Bradner" fullname="S. Bradner"><organization/></author> <date year="1997" month="March"/> <abstract><t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract> </front> <seriesInfo name="BCP" value="14"/> <seriesInfo name="RFC" value="2119"/> <seriesInfo name="DOI" value="10.17487/RFC2119"/> </reference> <reference anchor="RFC3688" target="https://www.rfc-editor.org/info/rfc3688"> <front> <title>The IETF XML Registry</title> <author initials="M." surname="Mealling" fullname="M. Mealling"><organization/></author> <date year="2004" month="January"/> <abstract><t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t></abstract> </front> <seriesInfo name="BCP" value="81"/> <seriesInfo name="RFC" value="3688"/> <seriesInfo name="DOI" value="10.17487/RFC3688"/> </reference> <reference anchor="RFC6020" target="https://www.rfc-editor.org/info/rfc6020"> <front> <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title> <author initials="M." surname="Bjorklund" fullname="M. Bjorklund" role="editor"><organization/></author> <date year="2010" month="October"/> <abstract><t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t></abstract> </front> <seriesInfo name="RFC" value="6020"/> <seriesInfo name="DOI" value="10.17487/RFC6020"/> </reference> <reference anchor="RFC7950" target="https://www.rfc-editor.org/info/rfc7950"> <front> <title>The YANG 1.1 Data Modeling Language</title> <author initials="M." surname="Bjorklund" fullname="M. Bjorklund" role="editor"><organization/></author> <date year="2016" month="August"/> <abstract><t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t></abstract> </front> <seriesInfo name="RFC" value="7950"/> <seriesInfo name="DOI" value="10.17487/RFC7950"/> </reference> <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174"> <front> <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> <author initials="B." surname="Leiba" fullname="B. Leiba"><organization/></author> <date year="2017" month="May"/> <abstract><t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t></abstract> </front> <seriesInfo name="BCP" value="14"/> <seriesInfo name="RFC" value="8174"/> <seriesInfo name="DOI" value="10.17487/RFC8174"/> </reference><xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> <reference anchor="W3C.REC-xslt-19991116" target="https://www.w3.org/TR/1999/REC-xslt-19991116"> <front> <title>XSL Transformations (XSLT) Version 1.0</title> <author initials="J." surname="Clark" fullname="James Clark"> <organization/> </author> <date month="November"day="16"year="1999"/> </front> <seriesInfoname="World Wide Web Consortiumname="W3C Recommendation" value="REC-xslt-19991116"/><format type="HTML" target="https://www.w3.org/TR/1999/REC-xslt-19991116"/></reference> </references> <references title="Informative References"><reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035"> <front> <title>Domain names - implementation and specification</title> <author initials="P.V." surname="Mockapetris" fullname="P.V. Mockapetris"><organization/></author> <date year="1987" month="November"/> <abstract><t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t></abstract> </front> <seriesInfo name="STD" value="13"/> <seriesInfo name="RFC" value="1035"/> <seriesInfo name="DOI" value="10.17487/RFC1035"/> </reference> <reference anchor="RFC3597" target="https://www.rfc-editor.org/info/rfc3597"> <front> <title>Handling of Unknown DNS Resource Record (RR) Types</title> <author initials="A." surname="Gustafsson" fullname="A. Gustafsson"><organization/></author> <date year="2003" month="September"/> <abstract><t>Extending the Domain Name System (DNS) with new Resource Record (RR) types currently requires changes to name server software. This document specifies the changes necessary to allow future DNS implementations to handle new RR types transparently. [STANDARDS-TRACK]</t></abstract> </front> <seriesInfo name="RFC" value="3597"/> <seriesInfo name="DOI" value="10.17487/RFC3597"/> </reference> <reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6241"> <front> <title>Network Configuration Protocol (NETCONF)</title> <author initials="R." surname="Enns" fullname="R. Enns" role="editor"><organization/></author> <author initials="M." surname="Bjorklund" fullname="M. Bjorklund" role="editor"><organization/></author> <author initials="J." surname="Schoenwaelder" fullname="J. Schoenwaelder" role="editor"><organization/></author> <author initials="A." surname="Bierman" fullname="A. Bierman" role="editor"><organization/></author> <date year="2011" month="June"/> <abstract><t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t></abstract> </front> <seriesInfo name="RFC" value="6241"/> <seriesInfo name="DOI" value="10.17487/RFC6241"/> </reference> <reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8040"> <front> <title>RESTCONF Protocol</title> <author initials="A." surname="Bierman" fullname="A. Bierman"><organization/></author> <author initials="M." surname="Bjorklund" fullname="M. Bjorklund"><organization/></author> <author initials="K." surname="Watsen" fullname="K. Watsen"><organization/></author> <date year="2017" month="January"/> <abstract><t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t></abstract> </front> <seriesInfo name="RFC" value="8040"/> <seriesInfo name="DOI" value="10.17487/RFC8040"/> </reference> <reference anchor="RFC8499" target="https://www.rfc-editor.org/info/rfc8499"> <front> <title>DNS Terminology</title> <author initials="P." surname="Hoffman" fullname="P. Hoffman"><organization/></author> <author initials="A." surname="Sullivan" fullname="A. Sullivan"><organization/></author> <author initials="K." surname="Fujiwara" fullname="K. Fujiwara"><organization/></author> <date year="2019" month="January"/> <abstract><t>The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has sometimes changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t><t>This document obsoletes RFC 7719 and updates RFC 2308.</t></abstract> </front> <seriesInfo name="BCP" value="219"/> <seriesInfo name="RFC" value="8499"/> <seriesInfo name="DOI" value="10.17487/RFC8499"/> </reference><xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3597.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8499.xml"/> </references> </references> <section anchor="app.xslt" title="XSLT Stylesheet"><t>RFC Editor: In this section, replace all occurrences of "XXXX" with the actual RFC number (and remove this note).</t><t>This appendix contains an XSLT 1.0 stylesheet <xref target="W3C.REC-xslt-19991116"/> that isintendedto be usedfor generatingto generate the initial revision of the "iana-dns-class-rr-type" YANG module. This is achieved by applying the stylesheet to the XML version of the IANA registry "Domain Name System (DNS) Parameters" <xref target="IANA-DNS-PARAMETERS"/> that was current at the timewhenthis document was published.</t> <t>Using the ubiquitous xsltproc tool, the YANG module text can be generated with this command:</t> <sourcecode type="bash"> $ xsltproc iana-dns-class-rr-type.xsl dns-parameters.xml </sourcecode> <sourcecode markers="true" name="iana-dns-class-rr-type.xsl"type="xml"> <?xmltype="xml"><![CDATA[ <?xml version="1.0"standalone="yes"?> <stylesheetstandalone="yes"?> <stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:iana="http://www.iana.org/assignments"version="1.0"> <output method="text"/> <strip-space elements="*"/> <variable name="dq">"</variable> <variable name="sq">'</variable> <variable name="module-intro"> <text>moduleversion="1.0"> <output method="text"/> <strip-space elements="*"/> <variable name="dq">"</variable> <variable name="sq">'</variable> <variable name="module-intro"> <text>module iana-dns-class-rr-type { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:iana-dns-class-rr-type"; prefix dnsct; organization "Internet Assigned Numbers Authority (IANA)"; contact " Internet Assigned Numbers Authority Postal: ICANN4676 Admiralty Way,12025 Waterfront Drive, Suite330 Marina del Rey,300 Los Angeles, CA9029290094 Tel: +1310 823 9358 &lt;mailto:iana@iana.org&gt;";424 254 5300 <mailto:iana@iana.org>"; description "This YANG module translates IANA registries 'DNS CLASSes' and 'Resource Record (RR) TYPEs' toYANG derivedYANG-derived types. Copyright (c)20202021 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). Thisinitialversion of this YANG module was generated from the corresponding IANA registries using an XSLT stylesheet from Appendix A of RFCXXXX (https://www.rfc-editor.org/info/rfcXXXX);9108 (https://www.rfc-editor.org/info/rfc9108); see the RFC itself for full legal notices."; reference "IANA 'Domain Name System (DNS) Parameters' registryhttps://www.iana.org/assignments/dns-parameters";</text> <text>&#xA;&#xA;</text> </variable> <template name="enum"> <param name="id"/> <value-ofhttps://www.iana.org/assignments/dns-parameters";</text> <text>

</text> </variable> <template name="enum"> <param name="id"/> <value-of select="concat(' enum ',$id)"/> <text> {&#xA;$id)"/> <text> {
 value</text> <value-of</text> <value-of select="concat(iana:value,';&#xA;')"/> <if';
')"/> <if test="contains(iana:description,'OBSOLETE')"> <text>'OBSOLETE')"> <text> statusobsolete;&#xA;</text> </if> <apply-templates select="iana:description"/> <variableobsolete;
</text> </if> <apply-templates select="iana:description"/> <variable name="xrefs"select="iana:xref[@type!='note']"/> <if test="$xrefs"> <text> reference&#xA; "</text> <if test="count($xrefs)&gt;1">- </if> <apply-templates select="iana:xref[@type!='note']"/> </if> <text> }&#xA;</text> </template> <template match="/"> <value-of select="$module-intro"/> <apply-templates select="iana:registry[@id='dns-parameters']"/> <text>}&#xA;</text> </template> <template match="iana:registry[@id='dns-parameters']"> <apply-templates select="iana:updated"/> <apply-templates select="iana:registry[@id='dns-parameters-2']"/> <apply-templates select="iana:registry[@id='dns-parameters-4']"/> </template> <template match="iana:updated"> <value-ofselect="iana:xref[@type!='note']"/> <if test="$xrefs"> <text> reference
 "</text> <if test="count($xrefs)>1">- </if> <apply-templates select="iana:xref[@type!='note']"/> </if> <text> }
</text> </template> <template match="/"> <value-of select="$module-intro"/> <apply-templates select="iana:registry[@id='dns-parameters']"/> <text>}
</text> </template> <template match="iana:registry[@id='dns-parameters']"> <apply-templates select="iana:updated"/> <apply-templates select="iana:registry[@id='dns-parameters-2']"/> <apply-templates select="iana:registry[@id='dns-parameters-4']"/> </template> <template match="iana:updated"> <value-of select="concat(' revision ', ., '{')"/> <text>{')"/> <text> description "Initial revision."; reference "RFCXXXX:9108: YANG Types for DNS Classes and Resource Record Types"; } /* Typedefs*/&#xA;&#xA;</text> </template> <template match="iana:registry[@id='dns-parameters-2']"> <text>*/

</text> </template> <template match="iana:registry[@id='dns-parameters-2']"> <text> typedef dns-class-name{&#xA;</text> <text>{
</text> <text> type enumeration{&#xA;</text> <apply-templates{
</text> <apply-templates select="iana:record[not(iana:description='Unassigned' or starts-with(iana:description,'Reserved'))]"mode="class"/> <text>mode="class"/> <text> } description "This enumeration type defines mnemonic names and corresponding numeric values of DNS classes."; reference "RFC 6895: Domain Name System (DNS) IANA Considerations"; } typedef dns-class { type union { type uint16; type dns-class-name; } description "This type allowsfor referringreference to a DNS class using either the assigned mnemonic name or numeric value.";}&#xA;&#xA;</text> </template> <template match="iana:registry[@id='dns-parameters-4']"> <text>}

</text> </template> <template match="iana:registry[@id='dns-parameters-4']"> <text> typedef rr-type-name{&#xA;</text> <text>{
</text> <text> type enumeration{&#xA;</text> <apply-templates{
</text> <apply-templates select="iana:record[iana:type!='Unassigned' and iana:type!='Private use' and iana:type!='Reserved']"mode="rr-type"/> <text>mode="rr-type"/> <text> } description "This enumeration type defines mnemonic names and corresponding numeric values of DNS resource record types."; reference "- RFC 6895: Domain Name System (DNS) IANA Considerations - RFC 1035: DomainNamesnames -Implementationimplementation andSpecification";specification"; } typedef rr-type { type union { type uint16; type rr-type-name; } description "This type allowsfor referringreference to a DNS resource record type using either the assigned mnemonic name or numeric value.";}&#xA;</text> </template> <template}
</text> </template> <template match="iana:record"mode="class"> <call-template name="enum"> <with-param name="id"> <choose> <when test="contains(iana:description,'(')"> <value-ofmode="class"> <call-template name="enum"> <with-param name="id"> <choose> <when test="contains(iana:description,'(')"> <value-of select="substring-before(substring-after( iana:description, '('),')')"/> </when> <otherwise> <value-of')')"/> </when> <otherwise> <value-of select="substring-after(iana:description, '')"/> </otherwise> </choose> </with-param> </call-template> </template> <template')"/> </otherwise> </choose> </with-param> </call-template> </template> <template match="iana:record"mode="rr-type"> <call-template name="enum"> <with-parammode="rr-type"> <call-template name="enum"> <with-param name="id"select="iana:type"/> </call-template> </template> <template match="iana:description"> <text> description&#xA; </text> <value-ofselect="iana:type"/> </call-template> </template> <template match="iana:description"> <text> description
 </text> <value-of select="concat($dq, ., $dq,';&#xA;')"/> </template> <template match="iana:xref"> <choose> <when test="@type='rfc'"> <value-of';
')"/> </template> <template match="iana:xref"> <choose> <when test="@type='rfc'"> <value-of select="concat('RFC ', substring-after(@data,'rfc'))"/> </when> <when test="@type='person'"> <apply-templates'rfc'))"/> </when> <when test="@type='person'"> <apply-templates select="/iana:registry/iana:people/iana:person[@id=current()/@data]"/> </when> <when test="@type='text'"> <value-of@id=current()/@data]"/> </when> <when test="@type='text'"> <value-of select="translate(., $dq,$sq)"/> </when> <otherwise> <value-of select="@data"/> </otherwise> </choose> <choose> <when test="position()=last()"> <text>";&#xA;</text> </when> <otherwise> <text>&#xA;$sq)"/> </when> <otherwise> <value-of select="@data"/> </otherwise> </choose> <choose> <when test="position()=last()"> <text>";
</text> </when> <otherwise> <text>
 -</text> </otherwise> </choose> </template> <template match="iana:person"> <value-of</text> </otherwise> </choose> </template> <template match="iana:person"> <value-of select="concat(iana:name, '&lt;',<', iana:uri,'&gt;')"/> </template> </stylesheet> </sourcecode>'>')"/> </template> </stylesheet> ]]></sourcecode> </section> </back> </rfc>