draft-ietf-netmod-module-tags-10.txt | rfc8819.txt | |||
---|---|---|---|---|
Network Working Group C. Hopps | Internet Engineering Task Force (IETF) C. Hopps | |||
Internet-Draft LabN Consulting, L.L.C. | Request for Comments: 8819 L. Berger | |||
Updates: 8407 (if approved) L. Berger | Updates: 8407 LabN Consulting, L.L.C. | |||
Intended status: Standards Track LabN Consulting, LLC. | Category: Standards Track D. Bogdanovic | |||
Expires: September 1, 2020 D. Bogdanovic | ISSN: 2070-1721 Volta Networks | |||
Volta Networks | January 2021 | |||
February 29, 2020 | ||||
YANG Module Tags | YANG Module Tags | |||
draft-ietf-netmod-module-tags-10 | ||||
Abstract | Abstract | |||
This document provides for the association of tags with YANG modules. | This document provides for the association of tags with YANG modules. | |||
The expectation is for such tags to be used to help classify and | The expectation is for such tags to be used to help classify and | |||
organize modules. A method for defining, reading and writing a | organize modules. A method for defining, reading, and writing | |||
modules tags is provided. Tags may be registered and assigned during | modules tags is provided. Tags may be registered and assigned during | |||
module definition; assigned by implementations; or dynamically | module definition, assigned by implementations, or dynamically | |||
defined and set by users. This document also provides guidance to | defined and set by users. This document also provides guidance to | |||
future model writers; as such, this document updates RFC8407. | future model writers; as such, this document updates RFC 8407. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on September 1, 2020. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc8819. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
1.1. Some possible use cases for YANG module tags . . . . . . 3 | 1.1. Some Possible Use Cases for YANG Module Tags | |||
1.2. Conventions Used in This Document . . . . . . . . . . . . 4 | 1.2. Conventions Used in This Document | |||
2. Tag Values . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Tag Values | |||
2.1. IETF Tags . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. IETF Tags | |||
2.2. Vendor Tags . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Vendor Tags | |||
2.3. User Tags . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.3. User Tags | |||
2.4. Reserved Tags . . . . . . . . . . . . . . . . . . . . . . 5 | 2.4. Reserved Tags | |||
3. Tag Management . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Tag Management | |||
3.1. Module Definition Tagging . . . . . . . . . . . . . . . . 5 | 3.1. Module Definition Tagging | |||
3.2. Implementation Tagging . . . . . . . . . . . . . . . . . 5 | 3.2. Implementation Tagging | |||
3.3. User Tagging . . . . . . . . . . . . . . . . . . . . . . 5 | 3.3. User Tagging | |||
4. Tags Module Structure . . . . . . . . . . . . . . . . . . . . 6 | 4. Tags Module Structure | |||
4.1. Tags Module Tree . . . . . . . . . . . . . . . . . . . . 6 | 4.1. Tags Module Tree | |||
4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 6 | 4.2. YANG Module | |||
5. Other Classifications . . . . . . . . . . . . . . . . . . . . 9 | 5. Other Classifications | |||
6. Guidelines to Model Writers . . . . . . . . . . . . . . . . . 9 | 6. Guidelines to Model Writers | |||
6.1. Define Standard Tags . . . . . . . . . . . . . . . . . . 9 | 6.1. Define Standard Tags | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 7. IANA Considerations | |||
7.1. YANG Module Tag Prefixes Registry . . . . . . . . . . . . 9 | 7.1. YANG Module Tag Prefixes Registry | |||
7.2. IETF YANG Module Tags Registry . . . . . . . . . . . . . 10 | 7.2. IETF YANG Module Tags Registry | |||
7.3. Updates to the IETF XML Registry . . . . . . . . . . . . 12 | 7.3. Updates to the IETF XML Registry | |||
7.4. Updates to the YANG Module Names Registry . . . . . . . . 12 | 7.4. Updates to the YANG Module Names Registry | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 8. Security Considerations | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 9. References | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 13 | 9.1. Normative References | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 14 | 9.2. Informative References | |||
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 15 | Appendix A. Examples | |||
Appendix B. Acknowledgements . . . . . . . . . . . . . . . . . . 15 | Appendix B. Non-NMDA State Module | |||
Appendix C. Non-NMDA State Module. . . . . . . . . . . . . . . . 15 | Acknowledgements | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
The use of tags for classification and organization is fairly | The use of tags for classification and organization is fairly | |||
ubiquitous not only within IETF protocols, but in the internet itself | ubiquitous not only within IETF protocols but in the internet itself | |||
(e.g., "#hashtags"). One benefit of using tags for organization over | (e.g., "#hashtags"). One benefit of using tags for organization over | |||
a rigid structure is that it is more flexible and can more easily | a rigid structure is that it is more flexible and can more easily | |||
adapt over time as technologies evolve. Tags can be usefully | adapt over time as technologies evolve. Tags can be usefully | |||
registered, but they can also serve as a non-registered mechanism | registered, but they can also serve as a non-registered mechanism | |||
available for users to define themselves. This document provides a | available for users to define themselves. This document provides a | |||
mechanism to define tags and associate them with YANG modules in a | mechanism to define tags and associate them with YANG modules in a | |||
flexible manner. In particular, tags may be registered as well as | flexible manner. In particular, tags may be registered as well as | |||
assigned during module definition; assigned by implementations; or | assigned during module definition, assigned by implementations, or | |||
dynamically defined and set by users. | dynamically defined and set by users. | |||
This document defines a YANG module [RFC7950] which provides a list | This document defines a YANG module [RFC7950] that provides a list of | |||
of module entries to allow for adding or removing of tags as well as | module entries to allow for adding or removing tags as well as | |||
viewing the set of tags associated with a module. | viewing the set of tags associated with a module. | |||
This document defines an extension statement to be used to indicate | This document defines an extension statement to indicate tags that | |||
tags that SHOULD be added by the module implementation automatically | SHOULD be added by the module implementation automatically (i.e., | |||
(i.e., outside of configuration). | outside of configuration). | |||
This document also defines an IANA registry for tag prefixes as well | This document also defines an IANA registry for tag prefixes as well | |||
as a set of globally assigned tags. | as a set of globally assigned tags. | |||
Section 6 provides guidelines for authors of YANG data models. | Section 6 provides guidelines for authors of YANG data models. | |||
This document updates [RFC8407]. | This document updates [RFC8407]. | |||
The YANG data model in this document conforms to the Network | The YANG data model in this document conforms to the Network | |||
Management Datastore Architecture defined in [RFC8342]. | Management Datastore Architecture (NMDA) defined in [RFC8342]. | |||
1.1. Some possible use cases for YANG module tags | 1.1. Some Possible Use Cases for YANG Module Tags | |||
During this documents's development there were requests for example | During this document's development, there were requests for example | |||
uses of module tags. The following are a few example use cases for | uses of module tags. The following are a few example use cases for | |||
tags. This list is certainly not exhaustive. | tags. This list is certainly not exhaustive. | |||
One example use of tags would be to help filter different discrete | One example use of tags would be to help filter different discrete | |||
categories of YANG modules supported by a device. For example, if | categories of YANG modules supported by a device. For example, if | |||
modules are suitably tagged, then an XPath query can be used to list | modules are suitably tagged, then an XPath query can be used to list | |||
all of the vendor modules supported by a device. | all of the vendor modules supported by a device. | |||
Tags can also be used to help coordination when multiple semi- | Tags can also be used to help coordination when multiple, semi- | |||
independent clients are interacting with the same devices. For | independent clients are interacting with the same devices. For | |||
example, one management client could mark that some modules should | example, one management client could mark that some modules should | |||
not be used because they have not been verified to behave correctly, | not be used because they have not been verified to behave correctly, | |||
so that other management clients avoid querying the data associated | so that other management clients avoid querying the data associated | |||
with those modules. | with those modules. | |||
Tag classification is useful for users searching module repositories | Tag classification is useful for users searching module repositories | |||
(e.g., YANG catalog). A query restricted to the 'ietf:routing' | (e.g., YANG catalog). A query restricted to the 'ietf:routing' | |||
module tag could be used to return only the IETF YANG modules | module tag could be used to return only the IETF YANG modules | |||
associated with routing. Without tags, a user would need to know the | associated with routing. Without tags, a user would need to know the | |||
name of all the IETF routing protocol YANG modules. | name of all the IETF routing protocol YANG modules. | |||
Future management protocol extensions could allow for filtering | Future management protocol extensions could allow for filtering | |||
queries of configuration or operational state on a server based on | queries of configuration or operational state on a server based on | |||
tags. For example, return all operational state related to system- | tags (for example, return all operational state related to system | |||
management. | management). | |||
1.2. Conventions Used in This Document | 1.2. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
[RFC2119] [RFC8174] when, and only when, they appear in all capitals, | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
as shown here. | capitals, as shown here. | |||
2. Tag Values | 2. Tag Values | |||
All tags SHOULD begin with a prefix indicating who owns their | All tags SHOULD begin with a prefix indicating who owns their | |||
definition. An IANA registry (Section 7.1) is used to support | definition. An IANA registry (Section 7.1) is used to support | |||
registering tag prefixes. Currently 3 prefixes are defined. No | registering tag prefixes. Currently, three prefixes are defined. No | |||
further structure is imposed by this document on the value following | further structure is imposed by this document on the value following | |||
the registered prefix, and the value can contain any YANG type | the registered prefix, and the value can contain any YANG type | |||
'string' characters except carriage-returns, newlines and tabs. | 'string' characters except carriage returns, newlines, and tabs. | |||
Again, except for the conflict-avoiding prefix, this document is not | Again, except for the conflict-avoiding prefix, this document is | |||
specifying any structure on (i.e., restricting) the tag values on | purposefully not specifying any structure on (i.e., restricting) the | |||
purpose. The intent is to avoid arbitrarily restricting the values | tag values. The intent is to avoid arbitrarily restricting the | |||
that designers, implementers and users can use. As a result of this | values that designers, implementers, and users can use. As a result | |||
choice, designers, implementers, and users are free to add or not add | of this choice, designers, implementers, and users are free to add or | |||
any structure they may require to their own tag values. | not add any structure they may require to their own tag values. | |||
2.1. IETF Tags | 2.1. IETF Tags | |||
An IETF tag is a tag that has the prefix "ietf:". All IETF tags are | 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 | registered with IANA in a registry defined later in this document | |||
(Section 7.2). | (Section 7.2). | |||
2.2. Vendor Tags | 2.2. Vendor Tags | |||
A vendor tag is a tag that has the prefix "vendor:". These tags are | 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 | defined by the vendor that implements the module and are not | |||
registered; however, it is RECOMMENDED that the vendor include extra | registered; however, it is RECOMMENDED that the vendor include extra | |||
identification in the tag to avoid collisions such as using the | identification in the tag to avoid collisions, such as using the | |||
enterpise or organization name following the "vendor:" prefix (e.g., | enterprise or organization name following the "vendor:" prefix (e.g., | |||
vendor:example.com:vendor-defined-classifier). | vendor:example.com:vendor-defined-classifier). | |||
2.3. User Tags | 2.3. User Tags | |||
A user tag is any tag that has the prefix "user:". These tags are | 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. | defined by the user/administrator and are not meant to be registered. | |||
Users are not required to use the "user:" prefix; however, doing so | Users are not required to use the "user:" prefix; however, doing so | |||
is RECOMMENDED as it helps avoid collisions. | is RECOMMENDED as it helps avoid collisions. | |||
2.4. Reserved Tags | 2.4. Reserved Tags | |||
Any tag not starting with the prefix "ietf:", "vendor:" or "user:" is | Any tag not starting with the prefix "ietf:", "vendor:", or "user:" | |||
reserved for future use. These tag values are not invalid, but | is reserved for future use. These tag values are not invalid but | |||
simply reserved in the context of specifications (e.g., RFCs). | simply reserved in the context of specifications (e.g., RFCs). | |||
3. Tag Management | 3. Tag Management | |||
Tags can become associated with a module in a number of ways. Tags | Tags can become associated with a module in a number of ways. Tags | |||
may be defined and associated at module design time, at | may be defined and associated at module design time, at | |||
implementation time, or via user administrative control. As the main | implementation time, or via user administrative control. As the main | |||
consumer of tags are users, users may also remove any tag, no matter | consumer of tags are users, users may also remove any tag, no matter | |||
how the tag became associated with a module. | how the tag became associated with a module. | |||
3.1. Module Definition Tagging | 3.1. Module Definition Tagging | |||
A module definition MAY indicate a set of tags to be added by the | 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 implementer. These design-time tags are indicated using the | |||
module-tag extension statement. | module-tag extension statement. | |||
If the module is defined in an IETF standards track document, the | If the module is defined in an IETF Standards Track document, the | |||
tags MUST be IETF Tags (2.1). Thus, new modules can drive the | tags MUST be IETF tags (Section 2.1). Thus, new modules can drive | |||
addition of new IETF tags to the IANA registry defined in | the addition of new IETF tags to the IANA registry defined in | |||
Section 7.2, and the IANA registry can serve as a check against | Section 7.2, and the IANA registry can serve as a check against | |||
duplication. | duplication. | |||
3.2. Implementation Tagging | 3.2. Implementation Tagging | |||
An implementation MAY include additional tags associated with a | An implementation MAY include additional tags associated with a | |||
module. These tags SHOULD be IETF Tags (i.e., registered) or vendor | module. These tags SHOULD be IETF tags (i.e., registered) or vendor- | |||
specific tags. | specific tags. | |||
3.3. User Tagging | 3.3. User Tagging | |||
Tags of any kind, with or without a prefix, can be assigned and | Tags of any kind, with or without a prefix, can be assigned and | |||
removed by the user using normal configuration mechanisms. In order | removed by the user using normal configuration mechanisms. In order | |||
to remove a tag from the operational datastore the user adds a | to remove a tag from the operational datastore, the user adds a | |||
matching "masked-tag" entry for a given module. | matching "masked-tag" entry for a given module. | |||
4. Tags Module Structure | 4. Tags Module Structure | |||
4.1. Tags Module Tree | 4.1. Tags Module Tree | |||
The tree associated with the "ietf-module-tags" module follows. The | The tree associated with the "ietf-module-tags" module follows. The | |||
meaning of the symbols can be found in [RFC8340]. | meaning of the symbols can be found in [RFC8340]. | |||
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 | |||
Figure 1: YANG Module Tags Tree Diagram | Figure 1: YANG Module Tags Tree Diagram | |||
4.2. YANG Module | 4.2. YANG Module | |||
<CODE BEGINS> file "ietf-module-tags@2020-02-29.yang" | <CODE BEGINS> file "ietf-module-tags@2021-01-04.yang" | |||
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) 2021 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 2021-01-04 { | |||
// 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> | <CODE ENDS> | |||
Figure 2: Module Tags Module | ||||
Figure 2: Module Tags Module | ||||
5. Other Classifications | 5. Other Classifications | |||
It is worth noting that a different YANG module classification | It is worth noting that a different YANG module classification | |||
document exists [RFC8199]. That document only classifies modules in | document exists [RFC8199]. That document only classifies modules in | |||
a logical manner and does not define tagging or any other mechanisms. | a logical manner and does not define tagging or any other mechanisms. | |||
It divides YANG modules into two categories (service or element) and | It divides YANG modules into two categories (service or element) and | |||
then into one of three origins: standard, vendor or user. It does | then into one of three origins: standard, vendor, or user. It does | |||
provide a good way to discuss and identify modules in general. This | provide a good way to discuss and identify modules in general. This | |||
document defines IETF tags to support [RFC8199] style classification. | document defines IETF tags to support the classification style | |||
described in [RFC8199]. | ||||
6. Guidelines to Model Writers | 6. Guidelines to Model Writers | |||
This section updates [RFC8407]. | This section updates [RFC8407]. | |||
6.1. Define Standard Tags | 6.1. Define Standard Tags | |||
A module MAY indicate, using module-tag extension statements, a set | A module MAY indicate, using module-tag extension statements, a set | |||
of tags that are to be automatically associated with it (i.e., not | of tags that are to be automatically associated with it (i.e., not | |||
added through configuration). | added through configuration). | |||
module example-module { | module example-module { | |||
namespace "https://example.com/yang/example"; | ||||
prefix "ex"; | ||||
//... | //... | |||
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"; | |||
// ... | // ... | |||
} | } | |||
The module writer can use existing standard tags, or use new tags | The module writer can use existing standard tags or use new tags | |||
defined in the model definition, as appropriate. For IETF | defined in the model definition, as appropriate. For IETF | |||
standardized modules new tags MUST be assigned in the IANA registry | standardized modules, new tags MUST be assigned in the IANA registry | |||
defined below, see Section 7.2. | defined below, see Section 7.2. | |||
7. IANA Considerations | 7. IANA Considerations | |||
7.1. YANG Module Tag Prefixes Registry | 7.1. YANG Module Tag Prefixes Registry | |||
IANA is asked to create a new registry "YANG Module Tag Prefixes" | IANA has created the "YANG Module Tag Prefixes" subregistry in the | |||
grouped under a new "Protocol" category named "YANG Module Tags". | "YANG Module Tags" registry. | |||
This registry allocates tag prefixes. All YANG module tags SHOULD | This registry allocates tag prefixes. All YANG module tags SHOULD | |||
begin with one of the prefixes in this registry. | begin with one of the prefixes in this registry. | |||
Prefix entries in this registry should be short strings consisting of | Prefix entries in this registry should be short strings consisting of | |||
lowercase ASCII alpha-numeric characters and a final ":" character. | lowercase ASCII alpha-numeric characters and a final ":" character. | |||
The allocation policy for this registry is Specification Required | The allocation policy for this registry is Specification Required | |||
[RFC8126]. The Reference and Assignee values should be sufficient to | [RFC8126]. The Reference and Assignee values should be sufficient to | |||
identify and contact the organization that has been allocated the | identify and contact the organization that has been allocated the | |||
prefix. | prefix. | |||
The initial values for this registry are as follows. | The initial values for this registry are as follows. | |||
+---------+----------------------------------+-----------+----------+ | +=========+========================+===========+==========+ | |||
| Prefix | Description | Reference | Assignee | | | Prefix | Description | Reference | Assignee | | |||
+---------+----------------------------------+-----------+----------+ | +=========+========================+===========+==========+ | |||
| ietf: | IETF Tags allocated in the IANA | [This | IETF | | | ietf: | IETF tags allocated in | RFC 8819 | IETF | | |||
| | IETF YANG Module Tags registry. | document] | | | | | the IANA "IETF YANG | | | | |||
| | | | | | | | Module Tags" registry. | | | | |||
| vendor: | Non-registered tags allocated by | [This | IETF | | +---------+------------------------+-----------+----------+ | |||
| | the module implementer. | document] | | | | vendor: | Non-registered tags | RFC 8819 | IETF | | |||
| | | | | | | | allocated by the | | | | |||
| user: | Non-registered tags allocated by | [This | IETF | | | | module implementer. | | | | |||
| | and for the user. | document] | | | +---------+------------------------+-----------+----------+ | |||
+---------+----------------------------------+-----------+----------+ | | user: | Non-registered tags | RFC 8819 | IETF | | |||
| | allocated by and for | | | | ||||
| | the user. | | | | ||||
+---------+------------------------+-----------+----------+ | ||||
Other standards organizations (SDOs) wishing to allocate their own | Table 1 | |||
set of tags should allocate a prefix from this registry. | ||||
Other standards development organizations (SDOs) wishing to allocate | ||||
their own set of tags should allocate a prefix from this registry. | ||||
7.2. IETF YANG Module Tags Registry | 7.2. IETF YANG Module Tags Registry | |||
IANA is asked to create a new registry "IETF YANG Module Tags" | IANA has created the "IETF YANG Module Tags" subregistry within the | |||
grouped under a new "Protocol" category "IETF YANG Module Tags". | "YANG Module Tags" registry . This registry appears below the "YANG | |||
This registry should be included below "YANG Module Tag Prefixes" | Module Tag Prefixes" registry. | |||
when listed on the same page. | ||||
This registry allocates tags that have the registered prefix "ietf:". | This registry allocates tags that have the registered prefix "ietf:". | |||
New values should be well considered and not achievable through a | New values should be well considered and not achievable through a | |||
combination of already existing IETF tags. IANA assigned tags must | combination of already existing IETF tags. IANA assigned tags must | |||
conform to Net-Unicode as defined in [RFC5198] and they shall not | conform to Net-Unicode as defined in [RFC5198], and they shall not | |||
need normalization. | need normalization. | |||
The allocation policy for this registry is IETF Review [RFC8126]. | The allocation policy for this registry is IETF Review [RFC8126]. | |||
The initial values for this registry are as follows. | The initial values for this registry are as follows. | |||
+----------------------------+--------------------------+-----------+ | +============================+=======================+===========+ | |||
| Tag | Description | Reference | | | Tag | Description | Reference | | |||
+----------------------------+--------------------------+-----------+ | +============================+=======================+===========+ | |||
| ietf:network-element-class | [RFC8199] network | [RFC8199] | | | ietf:network-element-class | Network element as | [RFC8199] | | |||
| | element. | | | | | defined in [RFC8199]. | | | |||
| | | | | +----------------------------+-----------------------+-----------+ | |||
| ietf:network-service-class | [RFC8199] network | [RFC8199] | | | ietf:network-service-class | Network service as | [RFC8199] | | |||
| | service. | | | | | defined in [RFC8199]. | | | |||
| | | | | +----------------------------+-----------------------+-----------+ | |||
| ietf:sdo-defined-class | Module is defined by a | [RFC8199] | | | ietf:sdo-defined-class | Module is defined by | [RFC8199] | | |||
| | standards organization. | | | | | a standards | | | |||
| | | | | | | organization. | | | |||
| ietf:vendor-defined-class | Module is defined by a | [RFC8199] | | +----------------------------+-----------------------+-----------+ | |||
| | vendor. | | | | ietf:vendor-defined-class | Module is defined by | [RFC8199] | | |||
| | | | | | | a vendor. | | | |||
| ietf:user-defined-class | Module is defined by the | [RFC8199] | | +----------------------------+-----------------------+-----------+ | |||
| | user. | | | | ietf:user-defined-class | Module is defined by | [RFC8199] | | |||
| | | | | | | the user. | | | |||
| ietf:hardware | Relates to hardware | [This | | +----------------------------+-----------------------+-----------+ | |||
| | (e.g., inventory). | document] | | | ietf:hardware | Relates to hardware | RFC 8819 | | |||
| | | | | | | (e.g., inventory). | | | |||
| ietf:software | Relates to software | [This | | +----------------------------+-----------------------+-----------+ | |||
| | (e.g., installed OS). | document] | | | ietf:software | Relates to software | RFC 8819 | | |||
| | | | | | | (e.g., installed OS). | | | |||
| ietf:protocol | Represents a protocol | [This | | +----------------------------+-----------------------+-----------+ | |||
| | (often combined with | document] | | | ietf:protocol | Represents a protocol | RFC 8819 | | |||
| | another tag to refine). | | | | | (often combined with | | | |||
| | | | | | | another tag to | | | |||
| ietf:qos | Relates to quality of | [This | | | | refine). | | | |||
| | service. | document] | | +----------------------------+-----------------------+-----------+ | |||
| | | | | | ietf:qos | Relates to quality of | RFC 8819 | | |||
| ietf:network-service-app | Relates to a network | [This | | | | service. | | | |||
| | service application | document] | | +----------------------------+-----------------------+-----------+ | |||
| | (e.g., an NTP server, | | | | ietf:network-service-app | Relates to a network | RFC 8819 | | |||
| | DNS server, DHCP server, | | | | | service application | | | |||
| | etc). | | | | | (e.g., an NTP server, | | | |||
| | | | | | | DNS server, DHCP | | | |||
| ietf:system-management | Relates to system | [This | | | | server, etc.). | | | |||
| | management (e.g., a | document] | | +----------------------------+-----------------------+-----------+ | |||
| | system management | | | | ietf:system-management | Relates to system | RFC 8819 | | |||
| | protocol such as syslog, | | | | | management (e.g., a | | | |||
| | TACAC+, SNMP, netconf, | | | | | system management | | | |||
| | ...). | | | | | protocol such as | | | |||
| | | | | | | syslog, TACAC+, SNMP, | | | |||
| ietf:oam | Relates to Operations, | [This | | | | NETCONF, etc.). | | | |||
| | Administration, and | document] | | +----------------------------+-----------------------+-----------+ | |||
| | Maintenance (e.g., BFD). | | | | ietf:oam | Relates to | RFC 8819 | | |||
| | | | | | | Operations, | | | |||
| ietf:routing | Relates to routing. | [This | | | | Administration, and | | | |||
| | | document] | | | | Maintenance (e.g., | | | |||
| | | | | | | BFD). | | | |||
| ietf:security | Related to security. | [This | | +----------------------------+-----------------------+-----------+ | |||
| | | document] | | | ietf:routing | Relates to routing. | RFC 8819 | | |||
| | | | | +----------------------------+-----------------------+-----------+ | |||
| ietf:signaling | Relates to control plane | [This | | | ietf:security | Related to security. | RFC 8819 | | |||
| | signaling. | document] | | +----------------------------+-----------------------+-----------+ | |||
| | | | | | ietf:signaling | Relates to control- | RFC 8819 | | |||
| ietf:link-management | Relates to link | [This | | | | plane signaling. | | | |||
| | management. | document] | | +----------------------------+-----------------------+-----------+ | |||
+----------------------------+--------------------------+-----------+ | | ietf:link-management | Relates to link | RFC 8819 | | |||
| | management. | | | ||||
+----------------------------+-----------------------+-----------+ | ||||
Table 2 | ||||
7.3. Updates to the IETF XML Registry | 7.3. Updates to the IETF XML Registry | |||
This document registers a URI in the "IETF XML Registry" [RFC3688]. | This document registers a URI in the "IETF XML Registry" [RFC3688]. | |||
Following the format in [RFC3688], the following registrations have | Following the format in [RFC3688], the following registrations have | |||
been made: | been made: | |||
URI: | URI: urn:ietf:params:xml:ns:yang:ietf-module-tags | |||
urn:ietf:params:xml:ns:yang:ietf-module-tags | Registrant Contact: The IESG. | |||
XML: N/A; the requested URI is an XML namespace. | ||||
Registrant Contact: | ||||
The IESG. | ||||
XML: | ||||
N/A; the requested URI is an XML namespace. | ||||
URI: | ||||
urn:ietf:params:xml:ns:yang:ietf-module-tags-state | ||||
Registrant Contact: | ||||
The IESG. | ||||
XML: | URI: urn:ietf:params:xml:ns:yang:ietf-module-tags-state | |||
N/A; the requested URI is an XML namespace. | Registrant Contact: The IESG. | |||
XML: N/A; the requested URI is an XML namespace. | ||||
7.4. Updates to the YANG Module Names Registry | 7.4. Updates to the YANG Module Names Registry | |||
This document registers two YANG modules in the "YANG Module Names" | This document registers two YANG modules in the "YANG Module Names" | |||
registry [RFC6020]. Following the format in [RFC6020], the following | registry [RFC6020]. Following the format in [RFC6020], the following | |||
registration have been made: | registrations have been made: | |||
name: | ||||
ietf-module-tags | ||||
namespace: | ||||
urn:ietf:params:xml:ns:yang:ietf-module-tags | ||||
prefix: | ||||
tags | ||||
reference: | ||||
RFC XXXX (RFC Ed.: replace XXX with actual RFC number and remove | ||||
this note.) | ||||
name: | ||||
ietf-module-tags-state | ||||
namespace: | ||||
urn:ietf:params:xml:ns:yang:ietf-module-tags-state | ||||
prefix: | name: ietf-module-tags | |||
tags | namespace: urn:ietf:params:xml:ns:yang:ietf-module-tags | |||
prefix: tags | ||||
reference: RFC 8819 | ||||
reference: | name: ietf-module-tags-state | |||
RFC XXXX (RFC Ed.: replace XXX with actual RFC number and remove | namespace: urn:ietf:params:xml:ns:yang:ietf-module-tags-state | |||
this note.) | prefix: tags-s | |||
reference: RFC 8819 | ||||
8. Security Considerations | 8. Security Considerations | |||
The YANG module defined in this memo is designed to be accessed via | The YANG module defined in this memo is designed to be accessed via | |||
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | |||
secure transport layer and the mandatory-to-implement secure | secure transport layer and the mandatory-to-implement secure | |||
transport is SSH [RFC6242]. | transport is Secure Shell (SSH) [RFC6242]. | |||
This document adds the ability to associate tag meta-data with YANG | This document adds the ability to associate tag metadata with YANG | |||
modules. This document does not define any actions based on these | modules. This document does not define any actions based on these | |||
associations, and none are yet defined, and therefore it does not by | associations, and none are yet defined; therefore, it does not by | |||
itself introduce any new security considerations directly. | itself introduce any new security considerations directly. | |||
Users of the tag-meta data may define various actions to be taken | Users of the tag metadata may define various actions to be taken | |||
based on the tag meta-data. These actions and their definitions are | based on the tag metadata. These actions and their definitions are | |||
outside the scope of this document. Users will need to consider the | outside the scope of this document. Users will need to consider the | |||
security implications of any actions they choose to define, including | security implications of any actions they choose to define, including | |||
the potential for a tag to get 'masked' by another user. | the potential for a tag to get 'masked' by another user. | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
skipping to change at page 15, line 8 ¶ | skipping to change at line 645 ¶ | |||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
Appendix A. Examples | Appendix A. Examples | |||
The following is a fictional NETCONF example result from a query of | 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 | the module tags list. For the sake of brevity, only a few module | |||
results are imagined. | results are shown. | |||
<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> | ||||
<t:name>ietf-bfd</t:name> | ||||
<t:tag>ietf:network-element-class</t:tag> | ||||
<t:tag>ietf:oam</t:tag> | ||||
<t:tag>ietf:protocol</t:tag> | ||||
<t:tag>ietf:sdo-defined-class</t:tag> | ||||
</t:module> | ||||
<t:module> | ||||
<t:name>ietf-isis</t:name> | ||||
<t:tag>ietf:network-element-class</t:tag> | ||||
<t:tag>ietf:protocol</t:tag> | ||||
<t:tag>ietf:sdo-defined-class</t:tag> | ||||
<t:tag>ietf:routing</t:tag> | ||||
</t:module> | ||||
<t:module> | ||||
<t:name>ietf-ssh-server</t:name> | ||||
<t:tag>ietf:network-element-class</t:tag> | ||||
<t:tag>ietf:protocol</t:tag> | ||||
<t:tag>ietf:sdo-defined-class</t:tag> | ||||
<t:tag>ietf:system-management</t:tag> | ||||
</t:module> | ||||
</t:module-tags> | ||||
</ns0:data> | ||||
Figure 3: Example NETCONF Query Output | ||||
Appendix B. Acknowledgements | <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> | ||||
<t:name>ietf-bfd</t:name> | ||||
<t:tag>ietf:network-element-class</t:tag> | ||||
<t:tag>ietf:oam</t:tag> | ||||
<t:tag>ietf:protocol</t:tag> | ||||
<t:tag>ietf:sdo-defined-class</t:tag> | ||||
</t:module> | ||||
<t:module> | ||||
<t:name>ietf-isis</t:name> | ||||
<t:tag>ietf:network-element-class</t:tag> | ||||
<t:tag>ietf:protocol</t:tag> | ||||
<t:tag>ietf:sdo-defined-class</t:tag> | ||||
<t:tag>ietf:routing</t:tag> | ||||
</t:module> | ||||
<t:module> | ||||
<t:name>ietf-ssh-server</t:name> | ||||
<t:tag>ietf:network-element-class</t:tag> | ||||
<t:tag>ietf:protocol</t:tag> | ||||
<t:tag>ietf:sdo-defined-class</t:tag> | ||||
<t:tag>ietf:system-management</t:tag> | ||||
</t:module> | ||||
</t:module-tags> | ||||
</ns0:data> | ||||
Special thanks to Robert Wilton for his help improving the | Figure 3: Example NETCONF Query Output | |||
introduction and providing the example use cases, as well as | ||||
generating the non-NMDA module. | ||||
Appendix C. Non-NMDA State Module. | Appendix B. Non-NMDA State Module | |||
As per [RFC8407] the following is a non-NMDA module to support | As per [RFC8407], the following is a non-NMDA module to support | |||
viewing the operational state for non-NMDA compliant servers. | viewing the operational state for non-NMDA compliant servers. | |||
<CODE BEGINS> file "ietf-module-tags-state@2020-02-29.yang" | <CODE BEGINS> file "ietf-module-tags-state@2021-01-04.yang" | |||
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 { | ||||
prefix yang; | ||||
} | ||||
import ietf-module-tags { | ||||
prefix tags; | ||||
} | ||||
organization | import ietf-yang-types { | |||
"IETF NetMod Working Group (NetMod)"; | prefix yang; | |||
contact | } | |||
"WG Web: <https://tools.ietf.org/wg/netmod/> | import ietf-module-tags { | |||
WG List: <mailto:netmod@ietf.org> | prefix tags; | |||
} | ||||
Author: Christian Hopps | organization | |||
<mailto:chopps@chopps.org> | "IETF NetMod Working Group (NetMod)"; | |||
contact | ||||
"WG Web: <https://datatracker.ietf.org/wg/netmod/> | ||||
WG List: <mailto:netmod@ietf.org> | ||||
Author: Lou Berger | Author: Christian Hopps | |||
<mailto:lberger@labn.net> | <mailto:chopps@chopps.org> | |||
Author: Dean Bogdanovic | Author: Lou Berger | |||
<ivandean@gmail.com>"; | <mailto:lberger@labn.net> | |||
// RFC Ed.: replace XXXX with actual RFC number and | Author: Dean Bogdanovic | |||
// remove this note. | <mailto:ivandean@gmail.com>"; | |||
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) 2021 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 | revision 2021-01-04 { | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | description | |||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | "Initial revision."; | |||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | reference | |||
they appear in all capitals, as shown here."; | "RFC 8819: YANG Module Tags"; | |||
} | ||||
// RFC Ed.: update the date below with the date of RFC publication | container module-tags-state { | |||
// and RFC number and remove this note. | config false; | |||
status deprecated; | ||||
description | ||||
"Contains the list of modules and their associated tags."; | ||||
list module { | ||||
key "name"; | ||||
status deprecated; | ||||
description | ||||
"A list of modules and their associated tags."; | ||||
leaf name { | ||||
type yang:yang-identifier; | ||||
mandatory true; | ||||
status deprecated; | ||||
description | ||||
"The YANG module name."; | ||||
} | ||||
leaf-list tag { | ||||
type tags:tag; | ||||
status deprecated; | ||||
description | ||||
"Tags associated with the module. See the IANA 'YANG | ||||
Module Tag Prefixes' registry for reserved prefixes and | ||||
the IANA 'IETF YANG Module Tags' registry for IETF tags. | ||||
revision 2020-02-29 { | The contents of this list is constructed using the | |||
description | following steps: | |||
"Initial revision."; | ||||
reference | ||||
"RFC XXXX: YANG Module Tags"; | ||||
} | ||||
container module-tags-state { | 1) System tags (i.e., tags of added by the system) are | |||
config false; | added. | |||
status deprecated; | 2) User-configured tags (i.e., tags added by | |||
description | configuration) are added. | |||
"Contains the list of modules and their associated tags"; | 3) Any tag that is equal to a masked-tag present in the | |||
list module { | corresponding ietf-module-tags:module-tags:module-tag leaf | |||
key "name"; | list for this module is removed."; | |||
status deprecated; | } | |||
description | } | |||
"A list of modules and their associated tags"; | } | |||
leaf name { | } | |||
type yang:yang-identifier; | <CODE ENDS> | |||
mandatory true; | ||||
status deprecated; | ||||
description | ||||
"The YANG module name."; | ||||
} | ||||
leaf-list tag { | ||||
type tags:tag; | ||||
status deprecated; | ||||
description | ||||
"Tags associated with the module. See the IANA 'YANG Module | ||||
Tag Prefixes' registry for reserved prefixes and the IANA | ||||
'IETF YANG Module Tags' registry for IETF tags. | ||||
The contents of this list is constructed using the | Figure 4: Non-NMDA Module Tags State Module | |||
following steps: | ||||
1) System tags (i.e., tags of added by the system) are added. | Acknowledgements | |||
2) User configured tags (i.e., tags added by configuration) | ||||
are added. | ||||
3) Any tag that is equal to a masked-tag present in the | ||||
corresponding ietf-module-tags:module-tags:module-tag leaf | ||||
list for this module is removed."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
Figure 4: Non-NMDA Module Tags State Module | 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. | ||||
Authors' Addresses | Authors' Addresses | |||
Christian Hopps | Christian Hopps | |||
LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
Email: chopps@chopps.org | Email: chopps@chopps.org | |||
Lou Berger | Lou Berger | |||
LabN Consulting, LLC. | LabN Consulting, L.L.C. | |||
Email: lberger@labn.net | Email: lberger@labn.net | |||
Dean Bogdanovic | Dean Bogdanovic | |||
Volta Networks | Volta Networks | |||
Email: ivandean@gmail.com | Email: ivandean@gmail.com | |||
End of changes. 92 change blocks. | ||||
380 lines changed or deleted | 346 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/ |