<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vilimek-yang-cbor-inst-id-00" category="std" consensus="true" submissionType="IETF" updates="RFC9254" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="yang-cbor-inst-id">Encoding rules of YANG 'instance-identifier' in the Concise Binary Object Representation (CBOR)</title>
    <seriesInfo name="Internet-Draft" value="draft-vilimek-yang-cbor-inst-id-00"/>
    <author initials="V." surname="Vilímek" fullname="Vojtěch Vilímek">
      <organization>CZ.NIC</organization>
      <address>
        <postal>
          <street>Milesovska 1136/5</street>
          <city>Praha</city>
          <code>13000</code>
          <country>Czech Republic</country>
        </postal>
        <email>vojtech.vilimek@nic.cz</email>
      </address>
    </author>
    <date year="2025" month="November" day="02"/>
    <area>AREA</area>
    <workgroup>WG Working Group</workgroup>
    <keyword>YANG-CBOR</keyword>
    <keyword>YANG</keyword>
    <keyword>CBOR</keyword>
    <abstract>
      <?line 48?>

<t>Encoding rules of YANG-CBOR <xref target="RFC9254"/> are incomplete for
'instance-identifier' YANG data type. This document defines missing encoding
rules for this data type.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-vilimek-yang-cbor-inst-id/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Constrained RESTful Environments (CoRE) Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/vvilimek/draft-vilimek-yang-cbor-inst-id"/>.</t>
    </note>
  </front>
  <middle>
    <?line 54?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The RFC 9254 Encoding Rules of Data Modeled with YANG in the Concise Binary
Object Representation (CBOR) does not define encoding rules for
'instance-identifier' pointing to list without keys entry instances and
instances of leaf-list entries. The goal of this document is to define the
missing rules and make clarifications in the used terminology.</t>
    </section>
    <section anchor="terminology-and-notation">
      <name>Terminology and Notation</name>
      <t>The key words "<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 "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The following terms are defiend in <xref target="RFC7950"/>:</t>
      <ul spacing="normal">
        <li>
          <t>list</t>
        </li>
        <li>
          <t>leaf-list</t>
        </li>
        <li>
          <t>leaf</t>
        </li>
        <li>
          <t>container</t>
        </li>
        <li>
          <t>instance-identifier</t>
        </li>
      </ul>
      <t>The following term is defined in <xref target="RFC8949"/>:</t>
      <ul spacing="normal">
        <li>
          <t>data item</t>
        </li>
      </ul>
      <t>The following terms are defined in <xref target="RFC9254"/>:</t>
      <ul spacing="normal">
        <li>
          <t>delta (of YANG SIDs)</t>
        </li>
        <li>
          <t>absolute SID</t>
        </li>
      </ul>
      <t>The following terms are defined in <xref target="RFC9595"/>:</t>
      <ul spacing="normal">
        <li>
          <t>item</t>
        </li>
        <li>
          <t>YANG Schema Item iDentifier (or "YANG SID" or simply "SID")</t>
        </li>
      </ul>
      <t>Note that the <xref target="RFC9254"/> also define term YANG Schema Item iDentifier but the definition describe the same term.</t>
      <t>TODO: use the "The following terms are used within this document:" header?</t>
      <dl>
        <dt>Keyless list:</dt>
        <dd>
          <t>Is config false YANG list without any keys.</t>
        </dd>
        <dt>Keyed list:</dt>
        <dd>
          <t>Is YANG list that is not a keyless list. It is either a config true list or
config false list with at least one key.</t>
        </dd>
        <dt>Single instance node:</dt>
        <dd>
          <t>Is a instance node with at most one possible instantiation. Instantiations of
top-level containers are single instance nodes, instantiations of leafs of
toplevel containers are single instance nodes. Container and leaf
instantiations of single instance node are also single instance nodes. No list
or leaf-list entries are
single instance nodes, even if they have max-elements equal to one. If instance
is a child of list entry it is not a single instance node. Note that this term is
defined so that set of instance nodes that are uniquely identified by only YANG
Schema Item iDentifier and set of single instance nodes are the same set.</t>
        </dd>
      </dl>
    </section>
    <section anchor="representing-yang-instance-identifier-type-in-cbor">
      <name>Representing YANG 'instance-identifier' Type in CBOR</name>
      <section anchor="sids-as-instance-identifier">
        <name>SIDs as 'instance-identifier'</name>
        <t>The definitions of <xref section="6.13.1" sectionFormat="of" target="RFC9254"/> applies with following
exceptions:</t>
        <t>The encoding rules for list apply only for keyed lists.</t>
        <t>In the case of a representation node that is an entry of a keyless list, a SID
is combined with the list entry index is used to identify each instance within the
keyless list. The index <bcp14>MUST</bcp14> be encoded using CBOR unsigned integer data item
(major type 0). The index <bcp14>MUST</bcp14> be 1-base to keep same indexing base as RESTCONF
<xref target="RFC8040"/> and NETCONF <xref target="RFC6241"/>.</t>
        <t>Instance-identifier of an instance that is not single instance node <bcp14>MUST</bcp14> be
encoded using a CBOR array item (major type 4) containing the following CBOR
data items:</t>
        <ul spacing="normal">
          <li>
            <t>The first element <bcp14>MUST</bcp14> be encoded as a CBOR unsigned integer data item (major
type 0) and set to the targeted schema node SID. No delta mechanism for SID is
used.</t>
          </li>
          <li>
            <t>The next elements <bcp14>MUST</bcp14> contain the value of each key required to identify the
instance of the targeted schema node. These keys <bcp14>MUST</bcp14> be ordered as defined in
the 'key' YANG statement for keyed list. The keys are encoded according the
rules defined in <xref target="RFC9254"/> and this document. If the list is keyless list
the key <bcp14>MUST</bcp14> be encoded using the CBOR unsigned integer data item (major type 0)
as specified in this document. The order of the keys and indices <bcp14>MUST</bcp14> be
same as walk from top-level node down to targeted schema node.</t>
          </li>
          <li>
            <t>If the instance is leaf-list entry, the last element <bcp14>MUST</bcp14> be encoded
according to encoding rules defined in <xref target="RFC9254"/> and this document.</t>
          </li>
        </ul>
        <t>This means that instance-identifier identifing a leaf-list instance with single
instance node parent will result in a CBOR array with two elements, the SID as
CBOR unsigned integer and leaf-list value representation.</t>
        <t>TODO: is this a good solution?</t>
        <t>The YANG 1.1 <xref target="RFC7950"/> allows leaf-list of state data to have duplicates. In
this case, it is not defined which element the instance-identifier identifies.</t>
        <section anchor="examples">
          <name>Examples</name>
          <t>Definition example adapted from <xref target="RFC7950"/>:</t>
          <sourcecode type="yang"><![CDATA[
container system {
  ...
  leaf reporting-entity {
    type instance-identifier;
  }
}
]]></sourcecode>
          <t>YANG model code snippet used for second and third example:</t>
          <sourcecode type="yang"><![CDATA[
container auth {
  leaf-list foreign-user {
    type string;
  }
}
]]></sourcecode>
          <t>All examples are considered to live inside the <tt>example</tt> module namespace if
not stated otherwise. Equivalent representation using the Names encoding may
help readers already familiar with YANG JSON encoding <xref target="RFC7951"/>, or similar XML
encoding defined in YANG 1.1 <xref target="RFC7950"/>.</t>
          <t><em>First example:</em></t>
          <t>The following example shows the encoding of the 'reporting-entity' value
referencing 'neighbor-sysid" (which is assumed to have SID 68000) of keyless
"/isis:adjacencies/adjacency" list's second list entry. The example is adapted from
<xref target="RFC9130"/> and therefore uses the <tt>isis</tt> namespace:</t>
          <sourcecode type="yang"><![CDATA[
// in module isis
container adjacencies {
  config false;
  list adjacency {
    leaf neighbor-sysid {
      type string;
    }
    leaf more-data {
      type binary;
    }
  }
}
]]></sourcecode>
          <t>CBOR diagnostic notation: <tt>[ 68000, 2 ]</tt></t>
          <t>CBOR encoding:
<!-- TODO FIXME the ~~~ cbor-pretty does not work, I did not found any ruby gem
     with this name... -->
<tt>
82 # array(2)
   1A 000109A0 # 68000
   02 # 2
</tt></t>
          <t>Equivalent instance-identifier encoded using the Names:
<tt>"/isis:adjacencies/adjacency[.=2]/neighbor-sysid"</tt></t>
          <t><em>Second example:</em></t>
          <t>The following example shows the encoding of the 'reporting-entity' value
referencing leaf-list instance "/auth/foreign-user" (which is assumed to have
SID 60000) entry "alice".</t>
          <t>CBOR diagnostic notation: <tt>[ 60000, "alice" ]</tt></t>
          <t>CBOR encoding:
<tt>
82               # array(2)
   19 F6F6       # unsigned(60000)
   65            # text(5)
      616c696365 # "alice"
</tt></t>
          <t>Equivalent instance-identifier encoded using the Names:
<tt>"/example:auth/foreigh-user[.="alice"]"</tt></t>
          <t><em>Third example:</em></t>
          <t>The following example show the encoding of the 'reporting-entity' value
referencing leaf-list instance "/auth/foreign-user" (SID 60000).</t>
          <t>CBOR diagnostic notation: <tt>60000</tt></t>
          <t>CBOR encoding: <tt>19 F6F6</tt></t>
          <t>Equivalent instance-identifier encoded using the Names: <tt>"/example:auth/foreigh-user"</tt></t>
          <t><em>Fourth example:</em></t>
          <t>The following example shows the encoding of the 'reporting-entity' value
referencing leaf-list instance "/user-group/user" (which is assumed to have SID
61000) entry "eve" for group-name "restricted".</t>
          <sourcecode type="yang"><![CDATA[
list user-group {
  config true;
  key "group-name"

  leaf group-name {
    type string;
  }

  leaf-list user {
    type string;
  }
}
]]></sourcecode>
          <t>CBOR diagnostic notation: <tt>[ 61000, "restricted", "eve" ]</tt></t>
          <t>CBOR encoding:
<tt>
83   # array(3)
   19 EE48  # 61000
   6A # text(10)
      72657374726963746564 # "resricted"
   63 # text(3)
      657665 # "eve"
</tt></t>
          <t>Equivalent instance-identifier encoded using the Names:
<tt>"/example:user-group[group-name="restricted"]/user[.="eve"]"</tt></t>
          <t><em>Fifth example:</em></t>
          <t>The following example shows the encoding of 'reporting-entity' value
referencing leaf-list instance "/user-group/user" for group name "restricted".</t>
          <t>CBOR diagnostic notation: <tt>[ 61000, "restricted" ]</tt></t>
          <t>CBOR encoding:
<tt>
83   # array(3)
   19 EE48 # 61000
   6A # text(10)
      72657374726963746564 # "resricted"
</tt></t>
          <t>Equivalent instance-identifier encoded using the Names:
<tt>"/example:user-group[group-name="restricted"]"</tt></t>
          <t>Note that this encoding is same as if the node user was a leaf.</t>
          <t><em>Sixth example:</em></t>
          <t>The following example shows the encoding of 'reporting-entity' value
referencing leaf-list instance "/working-group/chair" entry. This entry
references "/auth/foreign-user" leaf-list entry "John Smith". The
"/working-group/chair" is assumed to have SID 62000.</t>
          <sourcecode type="yang"><![CDATA[
list working-group {
  leaf name {
    type string;
  }

  leaf-list chair {
    type instance-identifier;
  }
}
]]></sourcecode>
          <t>CBOR diagnostic notation: <tt>[ 62000, "core", [ 60000, "John Smith" ] ]</tt></t>
          <t>CBOR encoding:
<tt>
83 # array(3)
   19 F230 # 62000
   64 # text(4)
      636F7265 # "core"
   82 # array(2)
      19 F6F6 # 60000
      6A # text(10)
         4a6f686e20536d697468 # "John Smith"
</tt></t>
          <t>Equivalent instance-identifier encoded using the Names:
<tt>"/example:working-group[name="core"]/chair=[.="/example:auth/foreign-user[.="John Smith"]"]</tt></t>
          <t>TODO longer chains of leaf-list instance-identifier lead to high nesting of the CBOR array data items. Shoul a cap for the contrained nodes by put to simplify the implementations?
I think cap around 8 should be suffient for most deployments. I think that using leaf-list instance-identifier chaining is not a good practise.</t>
          <t><em>Seventh example:</em></t>
          <t>The following exampke shows the encoding of 'reporting-entity' value
referencing leaf 'token-data' of device with 'id' "id01", first 'security' list
entry for user's 'bob' second 'access-token' list entry. The leaf 'token-data'
is assumed to have SID 61500.</t>
          <sourcecode type="yang"><![CDATA[
list device {
  key "id";

  leaf id {
    type string;
  }

  list security {
    config false;

    list user {
      key "name";
      leaf name;

      list access-token {
        leaf type {
          type identityref { base token; }
        }
        leaf token-data {
          type binary;
        }
      }
    }
  }
}

identity token;
]]></sourcecode>
          <t>CBOR diagnostic notation: <tt>[ 61500, "id01", 1, "bob", 2 ]</tt></t>
          <t>CBOR encoding:
<tt>
84 # array(4)
   19 F03C # 61500
   64 # text(4)
      69643031 # "id01"
   01 # 1
   63 # text(3)
      626F62 # "bob"
   02 # 2
</tt></t>
          <t>Equivalent instance-identifier encoded using the Names:
<tt>"/example:device[id="id01"]/security[.=1]/user[user="bob"]/access-token[.=2]/token-data"</tt></t>
        </section>
      </section>
    </section>
    <section anchor="content-types">
      <name>Content-Types</name>
      <t>TODO Is it possible to reuse the Content-types define in the <xref target="RFC9254"/>? It would be wasteful to assign new MIME content-type basically the same format.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC8949"/>, <xref target="RFC7950"/>, <xref target="RFC9254"/> and
<xref target="RFC9595"/> apply.</t>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>TODO Is it possible to keep the same IANA allocations of th <xref target="RFC9254"/>? This draft wants to be more of a bugfix document than new encoding scheme.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <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="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9254">
          <front>
            <title>Encoding of Data Modeled with YANG in the Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="A. Pelov" initials="A." surname="Pelov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>YANG (RFC 7950) is a data modeling language used to model configuration data, state data, parameters and results of Remote Procedure Call (RPC) operations or actions, and notifications.</t>
              <t>This document defines encoding rules for YANG in the Concise Binary Object Representation (CBOR) (RFC 8949).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9254"/>
          <seriesInfo name="DOI" value="10.17487/RFC9254"/>
        </reference>
        <reference anchor="RFC9595">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="A. Pelov" initials="A." role="editor" surname="Pelov"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>YANG Schema Item iDentifiers (YANG SIDs) are globally unique 63-bit unsigned integers used to identify YANG items. SIDs provide a more compact method for identifying those YANG items that can be used efficiently, notably in constrained environments (RFC 7228). This document defines the semantics, registration processes, and assignment processes for YANG SIDs for IETF-managed YANG modules. To enable the implementation of these processes, this document also defines a file format used to persist and publish assigned YANG SIDs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9595"/>
          <seriesInfo name="DOI" value="10.17487/RFC9595"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <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="RFC7951">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines encoding rules for representing configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, and notifications defined using YANG as JavaScript Object Notation (JSON) text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7951"/>
          <seriesInfo name="DOI" value="10.17487/RFC7951"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <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="RFC9130">
          <front>
            <title>YANG Data Model for the IS-IS Protocol</title>
            <author fullname="S. Litkowski" initials="S." role="editor" surname="Litkowski"/>
            <author fullname="D. Yeung" initials="D." surname="Yeung"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="J. Zhang" initials="J." surname="Zhang"/>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a YANG data model that can be used to configure and manage the IS-IS protocol on network elements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9130"/>
          <seriesInfo name="DOI" value="10.17487/RFC9130"/>
        </reference>
      </references>
    </references>
    <?line 433?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge. thank Andy Bierman for his friendly responses on mailing list.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
