rfc8819xml2.original.xml | rfc8819.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" []> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?> | ||||
<?rfc toc="yes"?> | ||||
<?rfc compact="no"?> | ||||
<?rfc subcompact="no"?> | ||||
<?rfc symrefs="yes" ?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc iprnotified="no"?> | ||||
<?rfc strict="yes"?> | ||||
<rfc ipr="trust200902" | ||||
category="std" | ||||
docName="draft-ietf-netmod-module-tags-10" updates="8407" | ||||
submissionType="IETF"> | ||||
<front> | ||||
<title abbrev="YANG Module Tags">YANG Module Tags</title> | ||||
<author initials='C.' surname='Hopps' fullname='Christian Hopps'><organization>L | ||||
abN Consulting, L.L.C.</organization><address><email>chopps@chopps.org</email></ | ||||
address></author> | ||||
<author initials='L.' surname='Berger' fullname='Lou Berger'><organization>LabN | ||||
Consulting, LLC.</organization><address><email>lberger@labn.net</email></address | ||||
></author> | ||||
<author initials='D.' surname='Bogdanovic' fullname='Dean Bogdanovic'><organizat | ||||
ion>Volta Networks</organization><address><email>ivandean@gmail.com</email></add | ||||
ress></author> <date/><abstract><t>This document provides for the association o | ||||
f tags with YANG modules. | ||||
The expectation is for such tags to be used to help classify and | ||||
organize modules. A method for defining, reading and writing a | ||||
modules tags is provided. Tags may be registered and assigned | ||||
during module definition; assigned by implementations; or dynamically | ||||
defined and set by users. This document also provides guidance to | ||||
future model writers; as such, this document updates RFC8407.</t></abstract> </ | ||||
front> <middle> | ||||
<section title="Introduction"> | ||||
<t>The use of tags for classification and organization is fairly | ||||
ubiquitous not only within IETF protocols, but in the internet itself | ||||
(e.g., <spanx style='verb'>#hashtags</spanx>). One benefit of using tags for org | ||||
anization over | ||||
a rigid structure is that it is more flexible and can more easily | ||||
adapt over time as technologies evolve. Tags can be usefully | ||||
registered, but they can also serve as a non-registered mechanism | ||||
available for users to define themselves. This document provides a | ||||
mechanism to define tags and associate them with YANG modules in a | ||||
flexible manner. In particular, tags may be registered as well as | ||||
assigned during module definition; assigned by implementations; or | ||||
dynamically defined and set by users.</t> | ||||
<t>This document defines a YANG module <xref target="RFC7950"/> which | ||||
provides a list of module entries to allow for adding or removing of | ||||
tags as well as viewing the set of tags associated with a module.</t> | ||||
<t>This document defines an extension statement to be used to indicate | ||||
tags that SHOULD be added by the module implementation automatically | ||||
(i.e., outside of configuration).</t> | ||||
<t>This document also defines an IANA registry for tag prefixes as well | ||||
as a set of globally assigned tags.</t> | ||||
<t><xref target="sec-guidelines-to-model-writers"></xref> provides guidelines fo | ||||
r authors of YANG | ||||
data models.</t> | ||||
<t>This document updates <xref target="RFC8407"/>.</t> | ||||
<t>The YANG data model in this document conforms to the Network | ||||
Management Datastore Architecture defined in <xref target="RFC8342"/>.</t> | ||||
<section title="Some possible use cases for YANG module tags"> | ||||
<t>During this documents's development there were requests for example | ||||
uses of module tags. The following are a few example use cases for | ||||
tags. This list is certainly not exhaustive.</t> | ||||
<t>One example use of tags would be to help filter different discrete | ||||
categories of YANG modules supported by a device. For example, if | ||||
modules are suitably tagged, then an XPath query can be used to list | ||||
all of the vendor modules supported by a device.</t> | ||||
<t>Tags can also be used to help coordination when multiple | ||||
semi-independent clients are interacting with the same devices. For | ||||
example, one management client could mark that some modules should | ||||
not be used because they have not been verified to behave correctly, | ||||
so that other management clients avoid querying the data associated | ||||
with those modules.</t> | ||||
<t>Tag classification is useful for users searching module repositories | ||||
(e.g., YANG catalog). A query restricted to the 'ietf:routing' module | ||||
tag could be used to return only the IETF YANG modules associated | ||||
with routing. Without tags, a user would need to know the name of all | ||||
the IETF routing protocol YANG modules.</t> | ||||
<t>Future management protocol extensions could allow for filtering | ||||
queries of configuration or operational state on a server based on | ||||
tags. For example, return all operational state related to | ||||
system-management.</t> | ||||
</section> | ||||
<section title="Conventions Used in This Document"> | ||||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in | ||||
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appe | ||||
ar in all capitals, as | ||||
shown here.</t> | ||||
</section> | ||||
</section> | ||||
<section title="Tag Values"> | ||||
<t>All tags SHOULD begin with a prefix indicating who owns their | ||||
definition. An IANA registry (<xref target="sec-yang-module-tag-prefixes-registr | ||||
y"></xref>) is | ||||
used to support registering tag prefixes. Currently 3 prefixes | ||||
are defined. No further structure is imposed by this document on the | ||||
value following the registered prefix, and the value can contain any | ||||
YANG type 'string' characters except carriage-returns, newlines and | ||||
tabs.</t> | ||||
<t>Again, except for the conflict-avoiding prefix, this document is not | ||||
specifying any structure on (i.e., restricting) the tag values on | ||||
purpose. The intent is to avoid arbitrarily restricting the values | ||||
that designers, implementers and users can use. As a result of this | ||||
choice, designers, implementers, and users are free to add or not | ||||
add any structure they may require to their own tag values.</t> | ||||
<section title="IETF Tags" anchor="sec-ietf-tags"> | ||||
<t>An IETF tag is a tag that has the prefix "ietf:". All IETF tags are | ||||
registered with IANA in a registry defined later in this document | ||||
(<xref target="sec-ietf-yang-module-tags-registry"></xref>).</t> | ||||
</section> | ||||
<section title="Vendor Tags"> | ||||
<t>A vendor tag is a tag that has the prefix "vendor:". These tags are | ||||
defined by the vendor that implements the module, and are not | ||||
registered; however, it is RECOMMENDED that the vendor include | ||||
extra identification in the tag to avoid collisions such as using the | ||||
enterpise or organization name following the "vendor:" prefix (e.g., | ||||
vendor:example.com:vendor-defined-classifier).</t> | ||||
</section> | ||||
<section title="User Tags"> | ||||
<t>A user tag is any tag that has the prefix "user:". These tags are | ||||
defined by the user/administrator and are not meant to be registered. | ||||
Users are not required to use the "user:" prefix; however, doing so | ||||
is RECOMMENDED as it helps avoid collisions.</t> | ||||
</section> | ||||
<section title="Reserved Tags"> | ||||
<t>Any tag not starting with the prefix "ietf:", "vendor:" or "user:" is | ||||
reserved for future use. These tag values are not invalid, but simply | ||||
reserved in the context of specifications (e.g., RFCs).</t> | ||||
</section> | ||||
</section> | ||||
<section title="Tag Management"> | ||||
<t>Tags can become associated with a module in a number of ways. Tags | ||||
may be defined and associated at module design time, at | ||||
implementation time, or via user administrative control. As the main | ||||
consumer of tags are users, users may also remove any tag, no matter | ||||
how the tag became associated with a module.</t> | ||||
<section title="Module Definition Tagging"> | ||||
<t>A module definition MAY indicate a set of tags to be added by the | ||||
module implementer. These design time tags are indicated using the | ||||
module-tag extension statement.</t> | ||||
<t>If the module is defined in an IETF standards track document, the | ||||
tags MUST be <xref format="counter" target="sec-ietf-tags">IETF Tags</xref>. Thu | ||||
s, new modules can drive the addition of | ||||
new IETF tags to the IANA registry defined in <xref target="sec-ietf-yang-module | ||||
-tags-registry"></xref>, and the IANA registry can serve as a check against | ||||
duplication.</t> | ||||
</section> | ||||
<section title="Implementation Tagging"> | ||||
<t>An implementation MAY include additional tags associated with a | ||||
module. These tags SHOULD be IETF Tags (i.e., registered) or vendor | ||||
specific tags.</t> | ||||
</section> | ||||
<section title="User Tagging"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" | |||
<t>Tags of any kind, with or without a prefix, can be assigned and | submissionType="IETF" category="std" consensus="true" | |||
removed by the user using normal configuration mechanisms. In order | number="8819" docName="draft-ietf-netmod-module-tags-10" updates="8407" | |||
to remove a tag from the operational datastore the user adds a | obsoletes="" xml:lang="en" tocInclude="true" symRefs="true" | |||
matching <spanx style='verb'>masked-tag</spanx> entry for a given module.</t> | sortRefs="true" version="3"> | |||
</section> | <!-- xml2rfc v2v3 conversion 2.41.0 --> | |||
<front> | ||||
<title abbrev="YANG Module Tags">YANG Module Tags</title> | ||||
<seriesInfo name="RFC" value="8819" /> | ||||
<author initials="C." surname="Hopps" fullname="Christian Hopps"> | ||||
<organization>LabN Consulting, L.L.C.</organization> | ||||
<address> | ||||
<email>chopps@chopps.org</email> | ||||
</address> | ||||
</author> | ||||
<author initials="L." surname="Berger" fullname="Lou Berger"> | ||||
<organization>LabN Consulting, LLC.</organization> | ||||
<address> | ||||
<email>lberger@labn.net</email> | ||||
</address> | ||||
</author> | ||||
<author initials="D." surname="Bogdanovic" fullname="Dean Bogdanovic"> | ||||
<organization>Volta Networks</organization> | ||||
<address> | ||||
<email>ivandean@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<date month="September" year="2020" /> | ||||
</section> | <keyword>YANG</keyword> | |||
<keyword>tags</keyword> | ||||
<section title="Tags Module Structure"> | <abstract> | |||
<section title="Tags Module Tree"> | <t>This document provides for the association of tags with YANG | |||
<t>The tree associated with the "ietf-module-tags" module follows. The | modules. The expectation is for such tags to be used to help classify | |||
meaning of the symbols can be found in <xref target="RFC8340"/>.</t> | and organize modules. A method for defining, reading, and writing | |||
modules tags is provided. Tags may be registered and assigned during | ||||
module definition, assigned by implementations, or dynamically defined | ||||
and set by users. This document also provides guidance to future model | ||||
writers; as such, this document updates RFC 8407.</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section numbered="true" toc="default"> | ||||
<name>Introduction</name> | ||||
<t>The use of tags for classification and organization is fairly | ||||
ubiquitous not only within IETF protocols but in the internet itself | ||||
(e.g., <tt>#hashtags</tt>). | ||||
<!--[rfced] When we converted this document to v3, xml2rfc converted <spanx | ||||
style="verb"> to <tt>. In the html and pdf output, the text enclosed in <tt> | ||||
is output in fixed-width font. In the txt output, the text enclosed in <tt> | ||||
appears in quotation marks. | ||||
<figure title="YANG Module Tags Tree Diagram" anchor="sec-yang-module-tags-tree- | Please review carefully and let us know if the output is acceptable or if any | |||
diagram"><artwork><![CDATA[ | updates are needed. | |||
--> | ||||
One benefit of using tags for organization | ||||
over a rigid structure is that it is more flexible and can more easily | ||||
adapt over time as technologies evolve. Tags can be usefully registered, | ||||
but they can also serve as a non-registered mechanism available for | ||||
users to define themselves. This document provides a mechanism to define | ||||
tags and associate them with YANG modules in a flexible manner. In | ||||
particular, tags may be registered as well as assigned during module | ||||
definition, assigned by implementations, or dynamically defined and set | ||||
by users.</t> | ||||
<t>This document defines a YANG module <xref target="RFC7950" | ||||
format="default"/> that provides a list of module entries to allow for | ||||
adding or removing tags as well as viewing the set of tags associated | ||||
with a module.</t> | ||||
<t>This document defines an extension statement to indicate | ||||
tags that <bcp14>SHOULD</bcp14> be added by the module implementation | ||||
automatically (i.e., outside of configuration).</t> | ||||
<t>This document also defines an IANA registry for tag prefixes as well | ||||
as a set of globally assigned tags.</t> | ||||
<t><xref target="sec-guidelines-to-model-writers" format="default"/> | ||||
provides guidelines for authors of YANG data models.</t> | ||||
<t>This document updates <xref target="RFC8407" format="default"/>.</t> | ||||
<t>The YANG data model in this document conforms to the Network | ||||
Management Datastore Architecture (NMDA) defined in <xref target="RFC8342" | ||||
format="default"/>.</t> | ||||
<section numbered="true" toc="default"> | ||||
<name>Some Possible Use Cases for YANG Module Tags</name> | ||||
<t>During this document's development, there were requests for example | ||||
uses of module tags. The following are a few example use cases for | ||||
tags. This list is certainly not exhaustive.</t> | ||||
<t>One example use of tags would be to help filter different discrete | ||||
categories of YANG modules supported by a device. For example, if | ||||
modules are suitably tagged, then an XPath query can be used to list | ||||
all of the vendor modules supported by a device.</t> | ||||
<t>Tags can also be used to help coordination when multiple, | ||||
semi-independent clients are interacting with the same devices. For | ||||
example, one management client could mark that some modules should not | ||||
be used because they have not been verified to behave correctly, so | ||||
that other management clients avoid querying the data associated with | ||||
those modules.</t> | ||||
<t>Tag classification is useful for users searching module | ||||
repositories (e.g., YANG catalog). A query restricted to the | ||||
'ietf:routing' module tag could be used to return only the IETF YANG | ||||
modules associated with routing. Without tags, a user would need to | ||||
know the name of all the IETF routing protocol YANG modules.</t> | ||||
<t>Future management protocol extensions could allow for filtering | ||||
queries of configuration or operational state on a server based on | ||||
tags (for example, return all operational state related to | ||||
system management).</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Conventions Used in This Document</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> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Tag Values</name> | ||||
<t>All tags <bcp14>SHOULD</bcp14> begin with a prefix indicating who | ||||
owns their definition. An IANA registry (<xref | ||||
target="sec-yang-module-tag-prefixes-registry" format="default"/>) is | ||||
used to support registering tag prefixes. Currently, three prefixes are | ||||
defined. No further structure is imposed by this document on the value | ||||
following the registered prefix, and the value can contain any YANG type | ||||
'string' characters except carriage returns, newlines, and tabs.</t> | ||||
<t>Again, except for the conflict-avoiding prefix, this document is | ||||
purposefully not specifying any structure on (i.e., restricting) the tag v | ||||
alues. | ||||
The intent is to avoid arbitrarily restricting the values that | ||||
designers, implementers, and users can use. As a result of this choice, | ||||
designers, implementers, and users are free to add or not add any | ||||
structure they may require to their own tag values.</t> | ||||
<section anchor="sec-ietf-tags" numbered="true" toc="default"> | ||||
<name>IETF Tags</name> | ||||
<t>An IETF tag is a tag that has the prefix "ietf:". All IETF tags are | ||||
registered with IANA in a registry defined later in this document | ||||
(<xref target="sec-ietf-yang-module-tags-registry" | ||||
format="default"/>).</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Vendor Tags</name> | ||||
<t>A vendor tag is a tag that has the prefix "vendor:". These tags are | ||||
defined by the vendor that implements the module and are not | ||||
registered; however, it is <bcp14>RECOMMENDED</bcp14> that the vendor | ||||
include extra identification in the tag to avoid collisions, such as | ||||
using the enterprise or organization name following the "vendor:" | ||||
prefix (e.g., vendor:example.com:vendor-defined-classifier).</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>User Tags</name> | ||||
<t>A user tag is any tag that has the prefix "user:". These tags are | ||||
defined by the user/administrator and are not meant to be | ||||
registered. Users are not required to use the "user:" prefix; however, | ||||
doing so is <bcp14>RECOMMENDED</bcp14> as it helps avoid | ||||
collisions.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Reserved Tags</name> | ||||
<t>Any tag not starting with the prefix "ietf:", "vendor:", or "user:" | ||||
is reserved for future use. These tag values are not invalid but | ||||
simply reserved in the context of specifications (e.g., RFCs).</t> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Tag Management</name> | ||||
<t>Tags can become associated with a module in a number of ways. Tags | ||||
may be defined and associated at module design time, at implementation | ||||
time, or via user administrative control. As the main consumer of tags | ||||
are users, users may also remove any tag, no matter how the tag became | ||||
associated with a module.</t> | ||||
<section numbered="true" toc="default"> | ||||
<name>Module Definition Tagging</name> | ||||
<t>A module definition <bcp14>MAY</bcp14> indicate a set of tags to be | ||||
added by the module implementer. These design-time tags are indicated | ||||
using the module-tag extension statement.</t> | ||||
<t>If the module is defined in an IETF Standards Track document, the | ||||
tags <bcp14>MUST</bcp14> be IETF Tags (<xref | ||||
target="sec-ietf-tags"/>). Thus, new modules can drive | ||||
the addition of new IETF tags to the IANA registry defined in <xref | ||||
target="sec-ietf-yang-module-tags-registry" format="default"/>, and | ||||
the IANA registry can serve as a check against duplication.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Implementation Tagging</name> | ||||
<t>An implementation <bcp14>MAY</bcp14> include additional tags | ||||
associated with a module. These tags <bcp14>SHOULD</bcp14> be IETF | ||||
Tags (i.e., registered) or vendor-specific tags.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>User Tagging</name> | ||||
<t>Tags of any kind, with or without a prefix, can be assigned and | ||||
removed by the user using normal configuration mechanisms. In order to | ||||
remove a tag from the operational datastore, the user adds a matching | ||||
<tt>masked-tag</tt> entry for a given module.</t> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Tags Module Structure</name> | ||||
<section numbered="true" toc="default"> | ||||
<name>Tags Module Tree</name> | ||||
<t>The tree associated with the "ietf-module-tags" module follows. The | ||||
meaning of the symbols can be found in <xref target="RFC8340" | ||||
format="default"/>.</t> | ||||
<figure anchor="sec-yang-module-tags-tree-diagram"> | ||||
<name>YANG Module Tags Tree Diagram</name> | ||||
<sourcecode type="yangtree"> | ||||
<![CDATA[ | ||||
module: ietf-module-tags | module: ietf-module-tags | |||
+--rw module-tags | +--rw module-tags | |||
+--rw module* [name] | +--rw module* [name] | |||
+--rw name yang:yang-identifier | +--rw name yang:yang-identifier | |||
+--rw tag* tag | +--rw tag* tag | |||
+--rw masked-tag* tag | +--rw masked-tag* tag | |||
]]></artwork></figure> | ]]> | |||
</sourcecode> | ||||
</section> | </figure> | |||
</section> | ||||
<section title="YANG Module"> | <section numbered="true" toc="default"> | |||
<figure title="Module Tags Module" anchor="sec-module-tags-module"><artwork><![C | <name>YANG Module</name> | |||
DATA[ | <figure anchor="sec-module-tags-module"> | |||
<CODE BEGINS> file "ietf-module-tags@2020-02-29.yang" | <name>Module Tags Module</name> | |||
<sourcecode name="ietf-module-tags@2020-08-05.yang" type="yang" marker | ||||
s="true"><![CDATA[ | ||||
module ietf-module-tags { | module ietf-module-tags { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-module-tags"; | namespace "urn:ietf:params:xml:ns:yang:ietf-module-tags"; | |||
prefix tags; | prefix tags; | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
} | } | |||
organization | organization | |||
"IETF NetMod Working Group (NetMod)"; | "IETF NetMod Working Group (NetMod)"; | |||
contact | contact | |||
"WG Web: <https://tools.ietf.org/wg/netmod/> | "WG Web: <https://datatracker.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
Author: Christian Hopps | Author: Christian Hopps | |||
<mailto:chopps@chopps.org> | <mailto:chopps@chopps.org> | |||
Author: Lou Berger | Author: Lou Berger | |||
<mailto:lberger@labn.net> | <mailto:lberger@labn.net> | |||
Author: Dean Bogdanovic | Author: Dean Bogdanovic | |||
<ivandean@gmail.com>"; | <mailto:ivandean@gmail.com>"; | |||
// RFC Ed.: replace XXXX with actual RFC number and | ||||
// remove this note. | ||||
description | description | |||
"This module describes a mechanism associating tags with YANG | "This module describes a mechanism associating tags with YANG | |||
modules. Tags may be IANA assigned or privately defined. | modules. Tags may be IANA assigned or privately defined. | |||
Copyright (c) 2019 IETF Trust and the persons identified as | Copyright (c) 2020 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC 8819 | |||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfc8819); see the RFC itself | |||
for full legal notices. | for full legal notices. | |||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
// RFC Ed.: update the date below with the date of RFC publication | revision 2020-08-05 { | |||
// and RFC number and remove this note. | ||||
revision 2020-02-29 { | ||||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference "RFC XXXX: YANG Module Tags"; | reference | |||
"RFC 8819: YANG Module Tags"; | ||||
} | } | |||
typedef tag { | typedef tag { | |||
type string { | type string { | |||
length "1..max"; | length "1..max"; | |||
pattern '[\S ]+'; | pattern '[\S ]+'; | |||
} | } | |||
description | description | |||
"A tag is a type 'string' value that does not include carriage | "A tag is a type of 'string' value that does not include | |||
return, newline or tab characters. It SHOULD begin with a | carriage return, newline, or tab characters. It SHOULD begin | |||
registered prefix; however, tags without a registered prefix | with a registered prefix; however, tags without a registered | |||
SHOULD NOT be treated as invalid."; | prefix SHOULD NOT be treated as invalid."; | |||
} | } | |||
extension module-tag { | extension module-tag { | |||
argument tag; | argument tag; | |||
description | description | |||
"The argument 'tag' is of type 'tag'. This extension statement | "The argument 'tag' is of type 'tag'. This extension statement | |||
is used by module authors to indicate the tags that SHOULD be | is used by module authors to indicate the tags that SHOULD be | |||
added automatically by the system. As such the origin of the | added automatically by the system. As such, the origin of the | |||
value for the pre-defined tags should be set to 'system' | value for the predefined tags should be set to 'system' | |||
[RFC8342]."; | [RFC8342]."; | |||
} | } | |||
container module-tags { | container module-tags { | |||
description | description | |||
"Contains the list of modules and their associated tags"; | "Contains the list of modules and their associated tags."; | |||
list module { | list module { | |||
key "name"; | key "name"; | |||
description | description | |||
"A list of modules and their associated tags"; | "A list of modules and their associated tags."; | |||
leaf name { | leaf name { | |||
type yang:yang-identifier; | type yang:yang-identifier; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The YANG module name."; | "The YANG module name."; | |||
} | } | |||
leaf-list tag { | leaf-list tag { | |||
type tag; | type tag; | |||
description | description | |||
"Tags associated with the module. See the IANA 'YANG Module | "Tags associated with the module. See the IANA 'YANG | |||
Tag Prefixes' registry for reserved prefixes and the IANA | Module Tag Prefixes' registry for reserved prefixes and | |||
'IETF YANG Module Tags' registry for IETF tags. | the IANA 'IETF YANG Module Tags' registry for IETF tags. | |||
The 'operational' state [RFC8342] view of this list is | The 'operational' state [RFC8342] view of this list is | |||
constructed using the following steps: | constructed using the following steps: | |||
1) System tags (i.e., tags of 'system' origin) are added. | 1) System tags (i.e., tags of 'system' origin) are added. | |||
2) User configured tags (i.e., tags of 'intended' origin) | 2) User-configured tags (i.e., tags of 'intended' origin) | |||
are added. | are added. | |||
3) Any tag that is equal to a masked-tag is removed."; | 3) Any tag that is equal to a masked-tag is removed."; | |||
} | } | |||
leaf-list masked-tag { | leaf-list masked-tag { | |||
type tag; | type tag; | |||
description | description | |||
"The list of tags that should not be associated with this | "The list of tags that should not be associated with this | |||
module. The user can remove (mask) tags from the | module. The user can remove (mask) tags from the | |||
operational state datastore [RFC8342] by adding them to | operational state datastore [RFC8342] by adding them to | |||
this list. It is not an error to add tags to this list | this list. It is not an error to add tags to this list | |||
that are not associated with the module, but they have no | that are not associated with the module, but they have no | |||
operational effect."; | operational effect."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | ]]> | |||
]]></artwork></figure> | </sourcecode> | |||
</figure> | ||||
</section> | </section> | |||
</section> | ||||
</section> | <section numbered="true" toc="default"> | |||
<name>Other Classifications</name> | ||||
<section title="Other Classifications"> | <t>It is worth noting that a different YANG module classification | |||
<t>It is worth noting that a different YANG module classification | document exists <xref target="RFC8199" format="default"/>. That document | |||
document exists <xref target="RFC8199"/>. That document only classifies modules | only classifies modules in a logical manner and does not define tagging | |||
in a | or any other mechanisms. It divides YANG modules into two categories | |||
logical manner and does not define tagging or any other mechanisms. | (service or element) and then into one of three origins: standard, | |||
It divides YANG modules into two categories (service or element) and | vendor, or user. It does provide a good way to discuss and identify | |||
then into one of three origins: standard, vendor or user. It does | modules in general. This document defines IETF tags to support the | |||
provide a good way to discuss and identify modules in general. This | classification style described in <xref target="RFC8199" format="default"/ | |||
document defines IETF tags to support <xref target="RFC8199"/> style | >.</t> | |||
classification.</t> | </section> | |||
<section anchor="sec-guidelines-to-model-writers" numbered="true" toc="defau | ||||
lt"> | ||||
<name>Guidelines to Model Writers</name> | ||||
<t>This section updates <xref target="RFC8407" format="default"/>.</t> | ||||
<section numbered="true" toc="default"> | ||||
<name>Define Standard Tags</name> | ||||
<t>A module <bcp14>MAY</bcp14> indicate, using module-tag extension | ||||
statements, a set of tags that are to be automatically associated with | ||||
it (i.e., not added through configuration).</t> | ||||
<!-- [rfced] Section 6.1: Note that we have marked the following as | ||||
<sourcecode> instead of of <artwork>. Please review and let us know if this | ||||
is incorrect. If <sourcecode> is correct, should type be set to yang? | ||||
</section> | Orignal: | |||
module example-module { | ||||
//... | ||||
import module-tags { prefix tags; } | ||||
<section title="Guidelines to Model Writers" anchor="sec-guidelines-to-model-wri | tags:module-tag "ietf:some-new-tag"; | |||
ters"> | tags:module-tag "ietf:some-other-tag"; | |||
<t>This section updates <xref target="RFC8407"/>.</t> | // ... | |||
} | ||||
<section title="Define Standard Tags"> | --> | |||
<t>A module MAY indicate, using module-tag extension statements, a set | ||||
of tags that are to be automatically associated with it (i.e., not | ||||
added through configuration).</t> | ||||
<figure><artwork><![CDATA[ | <sourcecode name="" type=""><![CDATA[ | |||
module example-module { | module example-module { | |||
//... | //... | |||
import module-tags { prefix tags; } | import module-tags { prefix tags; } | |||
tags:module-tag "ietf:some-new-tag"; | tags:module-tag "ietf:some-new-tag"; | |||
tags:module-tag "ietf:some-other-tag"; | tags:module-tag "ietf:some-other-tag"; | |||
// ... | // ... | |||
} | } | |||
]]></artwork></figure> | ]]></sourcecode> | |||
<t>The module writer can use existing standard tags or use new tags | ||||
<t>The module writer can use existing standard tags, or use new tags | defined in the model definition, as appropriate. For IETF standardized | |||
defined in the model definition, as appropriate. For IETF | modules, new tags <bcp14>MUST</bcp14> be assigned in the IANA registry | |||
standardized modules new tags MUST be assigned in the IANA registry | defined below, see <xref target="sec-ietf-yang-module-tags-registry" | |||
defined below, see <xref target="sec-ietf-yang-module-tags-registry"></xref>.</t | format="default"/>.</t> | |||
> | </section> | |||
</section> | ||||
</section> | <section numbered="true" toc="default"> | |||
<name>IANA Considerations</name> | ||||
</section> | <section anchor="sec-yang-module-tag-prefixes-registry" numbered="true" | |||
toc="default"> | ||||
<section title="IANA Considerations"> | <name>YANG Module Tag Prefixes Registry</name> | |||
<section title="YANG Module Tag Prefixes Registry" anchor="sec-yang-module-tag-p | <t>IANA has created the "YANG Module Tag Prefixes" subregistry | |||
refixes-registry"> | in the "YANG Module Tags" registry.</t> | |||
<t>IANA is asked to create a new registry "YANG Module Tag Prefixes" | <t>This registry allocates tag prefixes. All YANG module tags | |||
grouped under a new "Protocol" category named "YANG Module Tags".</t> | <bcp14>SHOULD</bcp14> begin with one of the prefixes in this registry.</t | |||
> | ||||
<t>This registry allocates tag prefixes. All YANG module tags SHOULD | <t>Prefix entries in this registry should be short strings consisting | |||
begin with one of the prefixes in this registry.</t> | of lowercase ASCII alpha-numeric characters and a final ":" character.</t | |||
> | ||||
<t>Prefix entries in this registry should be short strings consisting of | <t>The allocation policy for this registry is Specification Required | |||
lowercase ASCII alpha-numeric characters and a final ":" character.</t> | <xref target="RFC8126" format="default"/>. The Reference and Assignee | |||
values should be sufficient to identify and contact the organization | ||||
<t>The allocation policy for this registry is Specification Required | that has been allocated the prefix.</t> | |||
<xref target="RFC8126"/>. The Reference and Assignee values should be sufficient | <t>The initial values for this registry are as follows.</t> | |||
to | ||||
identify and contact the organization that has been allocated the | ||||
prefix.</t> | ||||
<t>The initial values for this registry are as follows.</t> | ||||
<texttable> | ||||
<ttcol>Prefix</ttcol><ttcol>Description</ttcol><ttcol>Reference</ttcol><ttcol>As | ||||
signee</ttcol> | ||||
<c>ietf:</c><c>IETF Tags allocated in the IANA IETF YANG Module Tags registry.</ | ||||
c><c>[This document]</c><c>IETF</c> | ||||
<c>vendor:</c><c>Non-registered tags allocated by the module implementer.</c><c> | ||||
[This document]</c><c>IETF</c> | ||||
<c>user:</c><c>Non-registered tags allocated by and for the user.</c><c>[This do | ||||
cument]</c><c>IETF</c> | ||||
</texttable> | ||||
<t>Other standards organizations (SDOs) wishing to allocate their own | ||||
set of tags should allocate a prefix from this registry.</t> | ||||
</section> | ||||
<section title="IETF YANG Module Tags Registry" anchor="sec-ietf-yang-module-tag | ||||
s-registry"> | ||||
<t>IANA is asked to create a new registry "IETF YANG Module Tags" grouped | ||||
under a new "Protocol" category "IETF YANG Module Tags". This registry | ||||
should be included below "YANG Module Tag Prefixes" when listed on | ||||
the same page.</t> | ||||
<t>This registry allocates tags that have the registered prefix "ietf:". | ||||
New values should be well considered and not achievable through a | ||||
combination of already existing IETF tags. IANA assigned tags must | ||||
conform to Net-Unicode as defined in <xref target="RFC5198"/> and they shall not | ||||
need | ||||
normalization.</t> | ||||
<t>The allocation policy for this registry is IETF Review <xref target="RFC8126" | ||||
/>.</t> | ||||
<t>The initial values for this registry are as follows.</t> | ||||
<texttable> | ||||
<ttcol>Tag</ttcol><ttcol>Description</ttcol><ttcol>Reference</ttcol> | ||||
<c>ietf:network-element-class</c><c><xref target="RFC8199"/> network element.</c | ||||
><c><xref target="RFC8199"/></c> | ||||
<c>ietf:network-service-class</c><c><xref target="RFC8199"/> network service.</c | ||||
><c><xref target="RFC8199"/></c> | ||||
<c>ietf:sdo-defined-class</c><c>Module is defined by a standards organization.</ | ||||
c><c><xref target="RFC8199"/></c> | ||||
<c>ietf:vendor-defined-class</c><c>Module is defined by a vendor.</c><c><xref ta | ||||
rget="RFC8199"/></c> | ||||
<c>ietf:user-defined-class</c><c>Module is defined by the user.</c><c><xref targ | ||||
et="RFC8199"/></c> | ||||
<c>ietf:hardware</c><c>Relates to hardware (e.g., inventory).</c><c>[This docume | ||||
nt]</c> | ||||
<c>ietf:software</c><c>Relates to software (e.g., installed OS).</c><c>[This doc | ||||
ument]</c> | ||||
<c>ietf:protocol</c><c>Represents a protocol (often combined with another tag to | ||||
refine).</c><c>[This document]</c> | ||||
<c>ietf:qos</c><c>Relates to quality of service.</c><c>[This document]</c> | ||||
<c>ietf:network-service-app</c><c>Relates to a network service application (e.g. | ||||
, an NTP server, DNS server, DHCP server, etc).</c><c>[This document]</c> | ||||
<c>ietf:system-management</c><c>Relates to system management (e.g., a system man | ||||
agement protocol such as syslog, TACAC+, SNMP, netconf, ...).</c><c>[This docume | ||||
nt]</c> | ||||
<c>ietf:oam</c><c>Relates to Operations, Administration, and Maintenance (e.g., | ||||
BFD).</c><c>[This document]</c> | ||||
<c>ietf:routing</c><c>Relates to routing.</c><c>[This document]</c> | ||||
<c>ietf:security</c><c>Related to security.</c><c>[This document]</c> | ||||
<c>ietf:signaling</c><c>Relates to control plane signaling.</c><c>[This document | ||||
]</c> | ||||
<c>ietf:link-management</c><c>Relates to link management.</c><c>[This document]< | ||||
/c> | ||||
</texttable> | ||||
</section> | ||||
<section title="Updates to the IETF XML Registry"> | ||||
<t>This document registers a URI in the "IETF XML Registry" <xref target="RFC368 | ||||
8"/>. | ||||
Following the format in <xref target="RFC3688"/>, the following registrations ha | ||||
ve been | ||||
made:</t> | ||||
<t><list style="hanging"> | ||||
<t hangText="URI:"><vspace/>urn:ietf:params:xml:ns:yang:ietf-module-tags</t> | ||||
<t hangText="Registrant Contact:"><vspace/>The IESG.</t> | ||||
<t hangText="XML:"><vspace/>N/A; the requested URI is an XML namespace.</t> | ||||
<t hangText="URI:"><vspace/>urn:ietf:params:xml:ns:yang:ietf-module-tags-state</ | ||||
t> | ||||
<t hangText="Registrant Contact:"><vspace/>The IESG.</t> | ||||
<t hangText="XML:"><vspace/>N/A; the requested URI is an XML namespace.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Updates to the YANG Module Names Registry"> | ||||
<t>This document registers two YANG modules in the "YANG Module Names" | ||||
registry <xref target="RFC6020"/>. Following the format in <xref target="RFC6020 | ||||
"/>, the following | ||||
registration have been made:</t> | ||||
<t><list style="hanging"> | ||||
<t hangText="name:"><vspace/>ietf-module-tags</t> | ||||
<t hangText="namespace:"><vspace/>urn:ietf:params:xml:ns:yang:ietf-module-tags</ | ||||
t> | ||||
<t hangText="prefix:"><vspace/>tags</t> | ||||
<t hangText="reference:"><vspace/>RFC XXXX (RFC Ed.: replace XXX with actual RFC | ||||
number and remove this note.)</t> | ||||
<t hangText="name:"><vspace/>ietf-module-tags-state</t> | ||||
<t hangText="namespace:"><vspace/>urn:ietf:params:xml:ns:yang:ietf-module-tags-s | ||||
tate</t> | ||||
<t hangText="prefix:"><vspace/>tags</t> | ||||
<t hangText="reference:"><vspace/>RFC XXXX (RFC Ed.: replace XXX with actual RFC | ||||
number and remove this note.)</t> | ||||
</list></t> | ||||
</section> | ||||
</section> | ||||
<section title="Security Considerations"> | ||||
<t>The YANG module defined in this memo is designed to be accessed via | ||||
the NETCONF protocol <xref target="RFC6241"/>. The lowest NETCONF layer is the | ||||
secure transport layer and the mandatory-to-implement secure | ||||
transport is SSH <xref target="RFC6242"/>.</t> | ||||
<t>This document adds the ability to associate tag meta-data with YANG | ||||
modules. This document does not define any actions based on these | ||||
associations, and none are yet defined, and therefore it does not | ||||
by itself introduce any new security considerations directly.</t> | ||||
<t>Users of the tag-meta data may define various actions to be taken | ||||
based on the tag meta-data. These actions and their definitions are | ||||
outside the scope of this document. Users will need to consider the | ||||
security implications of any actions they choose to define, | ||||
including the potential for a tag to get 'masked' by another user.</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<references title="Normative References"> | ||||
<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 Comm | ||||
unity, 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='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 pro | ||||
tocols. 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 s | ||||
mall number of backward incompatibilities from YANG version 1. This document al | ||||
so 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='RFC8126' target='https://www.rfc-editor.org/info/rfc8126'> | ||||
<front> | ||||
<title>Guidelines for Writing an IANA Considerations Section in RFCs</title> | ||||
<author initials='M.' surname='Cotton' fullname='M. Cotton'><organization /></au | ||||
thor> | ||||
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></auth | ||||
or> | ||||
<author initials='T.' surname='Narten' fullname='T. Narten'><organization /></au | ||||
thor> | ||||
<date year='2017' month='June' /> | ||||
<abstract><t>Many protocols make use of points of extensibility that use constan | ||||
ts to identify various protocol parameters. To ensure that the values in these | ||||
fields do not have conflicting uses and to promote interoperability, their alloc | ||||
ations are often coordinated by a central record keeper. For IETF protocols, th | ||||
at role is filled by the Internet Assigned Numbers Authority (IANA).</t><t>To ma | ||||
ke assignments in a given registry prudently, guidance describing the conditions | ||||
under which new values should be assigned, as well as when and how modification | ||||
s to existing values can be made, is needed. This document defines a framework | ||||
for the documentation of these guidelines by specification authors, in order to | ||||
assure that the provided guidance for the IANA Considerations is clear and addre | ||||
sses the various issues that are likely in the operation of a registry.</t><t>Th | ||||
is is the third edition of this document; it obsoletes RFC 5226.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='26'/> | ||||
<seriesInfo name='RFC' value='8126'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8126'/> | ||||
</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 /></auth | ||||
or> | ||||
<date year='2017' month='May' /> | ||||
<abstract><t>RFC 2119 specifies common key words that may be used in protocol s | ||||
pecifications. This document aims to reduce the ambiguity by clarifying that on | ||||
ly UPPERCASE usage of the key words have the defined special meanings.</t></abs | ||||
tract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='14'/> | ||||
<seriesInfo name='RFC' value='8174'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8174'/> | ||||
</reference> | ||||
<reference anchor='RFC8342' target='https://www.rfc-editor.org/info/rfc8342'> | ||||
<front> | ||||
<title>Network Management Datastore Architecture (NMDA)</title> | ||||
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization | ||||
/></author> | ||||
<author initials='J.' surname='Schoenwaelder' fullname='J. Schoenwaelder'><organ | ||||
ization /></author> | ||||
<author initials='P.' surname='Shafer' fullname='P. Shafer'><organization /></au | ||||
thor> | ||||
<author initials='K.' surname='Watsen' fullname='K. Watsen'><organization /></au | ||||
thor> | ||||
<author initials='R.' surname='Wilton' fullname='R. Wilton'><organization /></au | ||||
thor> | ||||
<date year='2018' month='March' /> | ||||
<abstract><t>Datastores are a fundamental concept binding the data models writte | ||||
n in the YANG data modeling language to network management protocols such as the | ||||
Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an | ||||
architectural framework for datastores based on the experience gained with the | ||||
initial simpler model, addressing requirements that were not well supported in t | ||||
he initial model. This document updates RFC 7950.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='8342'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8342'/> | ||||
</reference> | ||||
<reference anchor='RFC8199' target='https://www.rfc-editor.org/info/rfc8199'> | ||||
<front> | ||||
<title>YANG Module Classification</title> | ||||
<author initials='D.' surname='Bogdanovic' fullname='D. Bogdanovic'><organizatio | ||||
n /></author> | ||||
<author initials='B.' surname='Claise' fullname='B. Claise'><organization /></au | ||||
thor> | ||||
<author initials='C.' surname='Moberg' fullname='C. Moberg'><organization /></au | ||||
thor> | ||||
<date year='2017' month='July' /> | ||||
<abstract><t>The YANG data modeling language is currently being considered for a | ||||
wide variety of applications throughout the networking industry at large. Many | ||||
standards development organizations (SDOs), open-source software projects, vend | ||||
ors, and users are using YANG to develop and publish YANG modules for a wide var | ||||
iety of applications. At the same time, there is currently no well-known termin | ||||
ology to categorize various types of YANG modules.</t><t>A consistent terminolog | ||||
y would help with the categorization of YANG modules, assist in the analysis of | ||||
the YANG data modeling efforts in the IETF and other organizations, and bring cl | ||||
arity to the YANG- related discussions between the different groups.</t><t>This | ||||
document describes a set of concepts and associated terms to support consistent | ||||
classification of YANG modules.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='8199'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8199'/> | ||||
</reference> | ||||
<reference anchor='RFC8407' target='https://www.rfc-editor.org/info/rfc8407'> | ||||
<front> | ||||
<title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Mo | ||||
dels</title> | ||||
<author initials='A.' surname='Bierman' fullname='A. Bierman'><organization /></ | ||||
author> | ||||
<date year='2018' month='October' /> | ||||
<abstract><t>This memo provides guidelines for authors and reviewers of specific | ||||
ations containing YANG modules. Recommendations and procedures are defined, whi | ||||
ch are intended to increase interoperability and usability of Network Configurat | ||||
ion Protocol (NETCONF) and RESTCONF protocol implementations that utilize YANG m | ||||
odules. This document obsoletes RFC 6087.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='216'/> | ||||
<seriesInfo name='RFC' value='8407'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8407'/> | ||||
</reference> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<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 standa | ||||
rds 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='RFC5198' target='https://www.rfc-editor.org/info/rfc5198'> | <table align="center"> | |||
<front> | <thead> | |||
<title>Unicode Format for Network Interchange</title> | <tr> | |||
<author initials='J.' surname='Klensin' fullname='J. Klensin'><organization /></ | <th align="left">Prefix</th> | |||
author> | <th align="left">Description</th> | |||
<author initials='M.' surname='Padlipsky' fullname='M. Padlipsky'><organization | <th align="left">Reference</th> | |||
/></author> | <th align="left">Assignee</th> | |||
<date year='2008' month='March' /> | </tr> | |||
<abstract><t>The Internet today is in need of a standardized form for the transm | </thead> | |||
ission of internationalized "text" information, paralleling the specif | <tbody> | |||
ications for the use of ASCII that date from the early days of the ARPANET. Thi | <tr> | |||
s document specifies that format, using UTF-8 with normalization and specific li | <td align="left">ietf:</td> | |||
ne-ending sequences. [STANDARDS-TRACK]</t></abstract> | <td align="left">IETF Tags allocated in the IANA "IETF YANG | |||
</front> | Module Tags" registry.</td> | |||
<seriesInfo name='RFC' value='5198'/> | <td align="left">RFC 8819</td> | |||
<seriesInfo name='DOI' value='10.17487/RFC5198'/> | <td align="left">IETF</td> | |||
</reference> | </tr> | |||
<tr> | ||||
<td align="left">vendor:</td> | ||||
<td align="left">Non-registered tags allocated by the module | ||||
implementer.</td> | ||||
<td align="left">RFC 8819</td> | ||||
<td align="left">IETF</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">user:</td> | ||||
<td align="left">Non-registered tags allocated by and for the | ||||
user.</td> | ||||
<td align="left">RFC 8819</td> | ||||
<td align="left">IETF</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>Other standards development organizations (SDOs) wishing to | ||||
allocate their own set of tags should allocate a prefix from this | ||||
registry.</t> | ||||
</section> | ||||
<section anchor="sec-ietf-yang-module-tags-registry" numbered="true" | ||||
toc="default"> | ||||
<name>IETF YANG Module Tags Registry</name> | ||||
<t>IANA has created the "IETF YANG Module Tags" subregistry | ||||
within the "YANG Module Tags" registry . This | ||||
registry appears below the "YANG Module Tag Prefixes" registry.</t> | ||||
<t>This registry allocates tags that have the registered prefix | ||||
"ietf:". New values should be well considered and not achievable | ||||
through a combination of already existing IETF tags. IANA assigned | ||||
tags must conform to Net-Unicode as defined in <xref target="RFC5198" | ||||
format="default"/>, and they shall not need normalization.</t> | ||||
<t>The allocation policy for this registry is IETF Review <xref | ||||
target="RFC8126" format="default"/>.</t> | ||||
<t>The initial values for this registry are as follows.</t> | ||||
<reference anchor='RFC6020' target='https://www.rfc-editor.org/info/rfc6020'> | <table align="center"> | |||
<front> | <thead> | |||
<title>YANG - A Data Modeling Language for the Network Configuration Protocol (N | <tr> | |||
ETCONF)</title> | <th align="left">Tag</th> | |||
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'> | <th align="left">Description</th> | |||
<organization /></author> | <th align="left">Reference</th> | |||
<date year='2010' month='October' /> | </tr> | |||
<abstract><t>YANG is a data modeling language used to model configuration and st | </thead> | |||
ate data manipulated by the Network Configuration Protocol (NETCONF), NETCONF re | <tbody> | |||
mote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t></abstract | <tr> | |||
> | <td align="left">ietf:network-element-class</td> | |||
</front> | <td align="left">Network element as defined in | |||
<seriesInfo name='RFC' value='6020'/> | <xref target="RFC8199" format="default"/>.</td> | |||
<seriesInfo name='DOI' value='10.17487/RFC6020'/> | <td align="left"> | |||
</reference> | <xref target="RFC8199" format="default"/></td> | |||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:network-service-class</td> | ||||
<td align="left">Network service as defined in | ||||
<xref target="RFC8199" format="default"/>.</td> | ||||
<td align="left"> | ||||
<xref target="RFC8199" format="default"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:sdo-defined-class</td> | ||||
<td align="left">Module is defined by a standards organization.</t | ||||
d> | ||||
<td align="left"> | ||||
<xref target="RFC8199" format="default"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:vendor-defined-class</td> | ||||
<td align="left">Module is defined by a vendor.</td> | ||||
<td align="left"> | ||||
<xref target="RFC8199" format="default"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:user-defined-class</td> | ||||
<td align="left">Module is defined by the user.</td> | ||||
<td align="left"> | ||||
<xref target="RFC8199" format="default"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:hardware</td> | ||||
<td align="left">Relates to hardware (e.g., inventory).</td> | ||||
<td align="left">RFC 8819</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:software</td> | ||||
<td align="left">Relates to software (e.g., installed OS).</td> | ||||
<td align="left">RFC 8819</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:protocol</td> | ||||
<td align="left">Represents a protocol (often combined with | ||||
another tag to refine).</td> | ||||
<td align="left">RFC 8819</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:qos</td> | ||||
<td align="left">Relates to quality of service.</td> | ||||
<td align="left">RFC 8819</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:network-service-app</td> | ||||
<td align="left">Relates to a network service application (e.g., | ||||
an NTP server, DNS server, DHCP server, etc.).</td> | ||||
<td align="left">RFC 8819</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:system-management</td> | ||||
<!-- [IANA] ask IANA to update this entry to use "etc" instead of ellipses - | ||||
similar to entry for ietf:network-service-app. | ||||
--> | ||||
<td align="left">Relates to system management (e.g., a system | ||||
management protocol such as syslog, TACAC+, SNMP, NETCONF, etc.).</ | ||||
td> | ||||
<td align="left">RFC 8819</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:oam</td> | ||||
<td align="left">Relates to Operations, Administration, and | ||||
Maintenance (e.g., BFD).</td> | ||||
<td align="left">RFC 8819</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:routing</td> | ||||
<td align="left">Relates to routing.</td> | ||||
<td align="left">RFC 8819</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:security</td> | ||||
<td align="left">Related to security.</td> | ||||
<td align="left">RFC 8819</td> | ||||
</tr> | ||||
<!-- [IANA] ask IANA to add the hyphen for "control-plane" --> | ||||
<tr> | ||||
<td align="left">ietf:signaling</td> | ||||
<td align="left">Relates to control-plane signaling.</td> | ||||
<td align="left">RFC 8819</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf:link-management</td> | ||||
<td align="left">Relates to link management.</td> | ||||
<td align="left">RFC 8819</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Updates to the IETF XML Registry</name> | ||||
<t>This document registers a URI in the "IETF XML Registry" <xref | ||||
target="RFC3688" format="default"/>. Following the format in <xref | ||||
target="RFC3688" format="default"/>, the following registrations have | ||||
been made:</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>URI:</dt> | ||||
<dd>urn:ietf:params:xml:ns:yang:ietf-module-tags</dd> | ||||
<dt>Registrant Contact:</dt> | ||||
<dd>The IESG.</dd> | ||||
<dt>XML:</dt> | ||||
<dd>N/A; the requested URI is an XML namespace.</dd> | ||||
</dl> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>URI:</dt> | ||||
<dd>urn:ietf:params:xml:ns:yang:ietf-module-tags-state</dd> | ||||
<dt>Registrant Contact:</dt> | ||||
<dd>The IESG.</dd> | ||||
<dt>XML:</dt> | ||||
<dd>N/A; the requested URI is an XML namespace.</dd> | ||||
</dl> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Updates to the YANG Module Names Registry</name> | ||||
<t>This document registers two YANG modules in the "YANG Module Names" | ||||
registry <xref target="RFC6020" format="default"/>. Following the | ||||
format in <xref target="RFC6020" format="default"/>, the following | ||||
registrations have been made:</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>name:</dt> | ||||
<dd>ietf-module-tags</dd> | ||||
<dt>namespace:</dt> | ||||
<dd>urn:ietf:params:xml:ns:yang:ietf-module-tags</dd> | ||||
<dt>prefix:</dt> | ||||
<dd>tags</dd> | ||||
<dt>reference:</dt> | ||||
<dd>RFC 8819</dd> | ||||
</dl> | ||||
<!-- [rfced] For the ietf-module-tags-state registration, IANA shows the | ||||
prefix as "tags-s". In addition, also uses "prefix tags-s;". Should the | ||||
IANA entry be updated to match? | ||||
<reference anchor='RFC6241' target='https://www.rfc-editor.org/info/rfc6241'> | Current: | |||
<front> | name: ietf-module-tags-state | |||
<title>Network Configuration Protocol (NETCONF)</title> | namespace: urn:ietf:params:xml:ns:yang:ietf-module-tags-state | |||
<author initials='R.' surname='Enns' fullname='R. Enns' role='editor'><organizat | prefix: tags | |||
ion /></author> | reference: RFC 8819 | |||
<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'><org | ||||
anization /></author> | ||||
<date year='2011' month='June' /> | ||||
<abstract><t>The Network Configuration Protocol (NETCONF) defined in this docume | ||||
nt provides mechanisms to install, manipulate, and delete the configuration of n | ||||
etwork devices. It uses an Extensible Markup Language (XML)-based data encoding | ||||
for the configuration data as well as the protocol messages. The NETCONF proto | ||||
col operations are realized as remote procedure calls (RPCs). This document obs | ||||
oletes RFC 4741. [STANDARDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='6241'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC6241'/> | ||||
</reference> | ||||
<reference anchor='RFC6242' target='https://www.rfc-editor.org/info/rfc6242'> | <dl newline="false" spacing="compact"> | |||
<front> | <dt>name:</dt> | |||
<title>Using the NETCONF Protocol over Secure Shell (SSH)</title> | <dd>ietf-module-tags-state</dd> | |||
<author initials='M.' surname='Wasserman' fullname='M. Wasserman'><organization | <dt>namespace:</dt> | |||
/></author> | <dd>urn:ietf:params:xml:ns:yang:ietf-module-tags-state</dd> | |||
<date year='2011' month='June' /> | <dt>prefix:</dt> | |||
<abstract><t>This document describes a method for invoking and running the Netwo | <dd>tags</dd> | |||
rk Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SS | <dt>reference:</dt> | |||
H subsystem. This document obsoletes RFC 4742. [STANDARDS-TRACK]</t></abstract | <dd>RFC 8819</dd> | |||
> | </dl> | |||
</front> | </section> | |||
<seriesInfo name='RFC' value='6242'/> | </section> | |||
<seriesInfo name='DOI' value='10.17487/RFC6242'/> | <section numbered="true" toc="default"> | |||
</reference> | <name>Security Considerations</name> | |||
<t>The YANG module defined in this memo is designed to be accessed via | ||||
the NETCONF protocol <xref target="RFC6241" format="default"/>. The | ||||
lowest NETCONF layer is the secure transport layer and the | ||||
mandatory-to-implement secure transport is Secure Shell (SSH) <xref | ||||
target="RFC6242" format="default"/>.</t> | ||||
<t>This document adds the ability to associate tag metadata with YANG | ||||
modules. This document does not define any actions based on these | ||||
associations, and none are yet defined; therefore, it does not by | ||||
itself introduce any new security considerations directly.</t> | ||||
<t>Users of the tag metadata may define various actions to be taken | ||||
based on the tag metadata. These actions and their definitions are | ||||
outside the scope of this document. Users will need to consider the | ||||
security implications of any actions they choose to define, including | ||||
the potential for a tag to get 'masked' by another user.</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7950.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8126.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8342.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8199.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8407.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.3688.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.5198.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6020.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6241.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6242.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8340.xml"/> | ||||
</references> | ||||
</references> | ||||
<section numbered="true" toc="default"> | ||||
<name>Examples</name> | ||||
<t>The following is a fictional NETCONF example result from a query of | ||||
the module tags list. For the sake of brevity, only a few module results | ||||
are shown.</t> | ||||
<figure anchor="sec-example-netconf-query-output"> | ||||
<name>Example NETCONF Query Output</name> | ||||
<reference anchor='RFC8340' target='https://www.rfc-editor.org/info/rfc8340'> | <!--[rfced] The second line in the figure "Example NETCONF Query Output" | |||
<front> | exceeds the 72-character limit. Please review and let us know how this line | |||
<title>YANG Tree Diagrams</title> | should be altered. | |||
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization | ||||
/></author> | ||||
<author initials='L.' surname='Berger' fullname='L. Berger' role='editor'><organ | ||||
ization /></author> | ||||
<date year='2018' month='March' /> | ||||
<abstract><t>This document captures the current syntax used in YANG module tree | ||||
diagrams. The purpose of this document is to provide a single location for this | ||||
definition. This syntax may be updated from time to time based on the evolutio | ||||
n of the YANG language.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='215'/> | ||||
<seriesInfo name='RFC' value='8340'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8340'/> | ||||
</reference> | ||||
</references> | ||||
<section title="Examples"> | 123456789012345678901234567890123456789012345678901234567890123456789012 | |||
<t>The following is a fictional NETCONF example result from a query of | <t:module-tags xmlns:t="urn:ietf:params:xml:ns:yang:ietf-module-tags"> | |||
the module tags list. For the sake of brevity only a few module | ||||
results are imagined.</t> | ||||
<figure title="Example NETCONF Query Output" anchor="sec-example-netconf-query-o | --> | |||
utput"><artwork><![CDATA[ | <sourcecode type="xml"><![CDATA[ | |||
<ns0:data xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0"> | <ns0:data xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<t:module-tags xmlns:t="urn:ietf:params:xml:ns:yang:ietf-module-tags"> | <t:module-tags xmlns:t="urn:ietf:params:xml:ns:yang:ietf-module-tags"> | |||
<t:module> | <t:module> | |||
<t:name>ietf-bfd</t:name> | <t:name>ietf-bfd</t:name> | |||
<t:tag>ietf:network-element-class</t:tag> | <t:tag>ietf:network-element-class</t:tag> | |||
<t:tag>ietf:oam</t:tag> | <t:tag>ietf:oam</t:tag> | |||
<t:tag>ietf:protocol</t:tag> | <t:tag>ietf:protocol</t:tag> | |||
<t:tag>ietf:sdo-defined-class</t:tag> | <t:tag>ietf:sdo-defined-class</t:tag> | |||
</t:module> | </t:module> | |||
<t:module> | <t:module> | |||
skipping to change at line 700 ¶ | skipping to change at line 725 ¶ | |||
</t:module> | </t:module> | |||
<t:module> | <t:module> | |||
<t:name>ietf-ssh-server</t:name> | <t:name>ietf-ssh-server</t:name> | |||
<t:tag>ietf:network-element-class</t:tag> | <t:tag>ietf:network-element-class</t:tag> | |||
<t:tag>ietf:protocol</t:tag> | <t:tag>ietf:protocol</t:tag> | |||
<t:tag>ietf:sdo-defined-class</t:tag> | <t:tag>ietf:sdo-defined-class</t:tag> | |||
<t:tag>ietf:system-management</t:tag> | <t:tag>ietf:system-management</t:tag> | |||
</t:module> | </t:module> | |||
</t:module-tags> | </t:module-tags> | |||
</ns0:data> | </ns0:data> | |||
]]></artwork></figure> | ]]></sourcecode> | |||
</section> | ||||
<section title="Acknowledgements"> | ||||
<t>Special thanks to Robert Wilton for his help improving the | ||||
introduction and providing the example use cases, as well as | ||||
generating the non-NMDA module.</t> | ||||
</section> | ||||
<section title="Non-NMDA State Module."> | ||||
<t>As per <xref target="RFC8407"/> the following is a non-NMDA module to support | ||||
viewing the operational state for non-NMDA compliant servers.</t> | ||||
<figure title="Non-NMDA Module Tags State Module" anchor="sec-non-nmda-module-ta | </figure> | |||
gs-state-module"><artwork><![CDATA[ | </section> | |||
<CODE BEGINS> file "ietf-module-tags-state@2020-02-29.yang" | <section numbered="true" toc="default"> | |||
<name>Non-NMDA State Module.</name> | ||||
<t>As per <xref target="RFC8407" format="default"/>, the following is a | ||||
non-NMDA module to support viewing the operational state for non-NMDA | ||||
compliant servers.</t> | ||||
<figure anchor="sec-non-nmda-module-tags-state-module"> | ||||
<name>Non-NMDA Module Tags State Module</name> | ||||
<sourcecode name="ietf-module-tags-state@2020-08-05.yang" type="yang" | ||||
markers="true"><![CDATA[ | ||||
module ietf-module-tags-state { | module ietf-module-tags-state { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-module-tags-state"; | namespace "urn:ietf:params:xml:ns:yang:ietf-module-tags-state"; | |||
prefix tags-s; | prefix tags-s; | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
} | } | |||
import ietf-module-tags { | import ietf-module-tags { | |||
prefix tags; | prefix tags; | |||
} | } | |||
organization | organization | |||
"IETF NetMod Working Group (NetMod)"; | "IETF NetMod Working Group (NetMod)"; | |||
contact | contact | |||
"WG Web: <https://tools.ietf.org/wg/netmod/> | "WG Web: <https://datatracker.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
Author: Christian Hopps | Author: Christian Hopps | |||
<mailto:chopps@chopps.org> | <mailto:chopps@chopps.org> | |||
Author: Lou Berger | Author: Lou Berger | |||
<mailto:lberger@labn.net> | <mailto:lberger@labn.net> | |||
Author: Dean Bogdanovic | Author: Dean Bogdanovic | |||
<ivandean@gmail.com>"; | <mailto:ivandean@gmail.com>"; | |||
// RFC Ed.: replace XXXX with actual RFC number and | ||||
// remove this note. | ||||
description | description | |||
"This module describes a mechanism associating tags with YANG | "This module describes a mechanism associating tags with YANG | |||
modules. Tags may be IANA assigned or privately defined. | modules. Tags may be IANA assigned or privately defined. | |||
This is a temporary non-NMDA module that is for use by | This is a temporary non-NMDA module that is for use by | |||
implementations that don't yet support NMDA. | implementations that don't yet support NMDA. | |||
Copyright (c) 2019 IETF Trust and the persons identified as | Copyright (c) 2020 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC 8819 | |||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfc8819); see the RFC itself | |||
for full legal notices. | for full legal notices."; | |||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | ||||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here."; | ||||
// RFC Ed.: update the date below with the date of RFC publication | ||||
// and RFC number and remove this note. | ||||
revision 2020-02-29 { | revision 2020-08-05 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: YANG Module Tags"; | "RFC 8819: YANG Module Tags"; | |||
} | } | |||
container module-tags-state { | container module-tags-state { | |||
config false; | config false; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"Contains the list of modules and their associated tags"; | "Contains the list of modules and their associated tags."; | |||
list module { | list module { | |||
key "name"; | key "name"; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"A list of modules and their associated tags"; | "A list of modules and their associated tags."; | |||
leaf name { | leaf name { | |||
type yang:yang-identifier; | type yang:yang-identifier; | |||
mandatory true; | mandatory true; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The YANG module name."; | "The YANG module name."; | |||
} | } | |||
leaf-list tag { | leaf-list tag { | |||
type tags:tag; | type tags:tag; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"Tags associated with the module. See the IANA 'YANG Module | "Tags associated with the module. See the IANA 'YANG | |||
Tag Prefixes' registry for reserved prefixes and the IANA | Module Tag Prefixes' registry for reserved prefixes and | |||
'IETF YANG Module Tags' registry for IETF tags. | the IANA 'IETF YANG Module Tags' registry for IETF tags. | |||
The contents of this list is constructed using the | The contents of this list is constructed using the | |||
following steps: | following steps: | |||
1) System tags (i.e., tags of added by the system) are added. | 1) System tags (i.e., tags of added by the system) are | |||
2) User configured tags (i.e., tags added by configuration) | added. | |||
are added. | 2) User-configured tags (i.e., tags added by | |||
3) Any tag that is equal to a masked-tag present in the | configuration) are added. | |||
corresponding ietf-module-tags:module-tags:module-tag leaf | 3) Any tag that is equal to a masked-tag present in the | |||
list for this module is removed."; | corresponding ietf-module-tags:module-tags:module-tag leaf | |||
list for this module is removed."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | ]]></sourcecode> | |||
]]></artwork></figure> | </figure> | |||
</section> | ||||
</section> | <section numbered="false" toc="default"> | |||
<name>Acknowledgements</name> | ||||
<t>Special thanks to <contact fullname="Robert Wilton"/> for his help | ||||
improving the introduction and providing the example use cases, as well | ||||
as generating the non-NMDA module.</t> | ||||
</section> | ||||
</back> | </back> | |||
<!--[rfced] Throughout the text, the following terminology appears to be used | ||||
inconsistently. Please review and let us know if/how they may be made | ||||
consistent. | ||||
IETF Tag vs. IETF tag | ||||
--> | ||||
</rfc> | </rfc> | |||
End of changes. 58 change blocks. | ||||
777 lines changed or deleted | 674 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |