draft-ietf-netmod-yang-usage-04.txt | draft-ietf-netmod-yang-usage-05.txt | |||
---|---|---|---|---|
Internet Engineering Task Force A. Bierman | Internet Engineering Task Force A. Bierman | |||
Internet-Draft InterWorking Labs | Internet-Draft InterWorking Labs | |||
Intended status: Informational April 20, 2010 | Intended status: Informational May 18, 2010 | |||
Expires: October 22, 2010 | Expires: November 19, 2010 | |||
Guidelines for Authors and Reviewers of YANG Data Model Documents | Guidelines for Authors and Reviewers of YANG Data Model Documents | |||
draft-ietf-netmod-yang-usage-04 | draft-ietf-netmod-yang-usage-05 | |||
Abstract | Abstract | |||
This memo provides guidelines for authors and reviewers of standards | This memo provides guidelines for authors and reviewers of standards | |||
track specifications containing YANG data model modules. Applicable | track specifications containing YANG data model modules. Applicable | |||
portions may be used as a basis for reviews of other YANG data model | portions may be used as a basis for reviews of other YANG data model | |||
documents. Recommendations and procedures are defined, which are | documents. Recommendations and procedures are defined, which are | |||
intended to increase interoperability and usability of NETCONF | intended to increase interoperability and usability of NETCONF | |||
implementations which utilize YANG data model modules. | implementations which utilize YANG data model modules. | |||
skipping to change at page 1, line 35 | skipping to change at page 1, line 35 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on October 22, 2010. | This Internet-Draft will expire on November 19, 2010. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2010 IETF Trust and the persons identified as the | Copyright (c) 2010 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 | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://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 | |||
skipping to change at page 3, line 22 | skipping to change at page 2, line 23 | |||
2.4. Terms . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.4. Terms . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3. General Documentation Guidelines . . . . . . . . . . . . . . . 7 | 3. General Documentation Guidelines . . . . . . . . . . . . . . . 7 | |||
3.1. Module Copyright . . . . . . . . . . . . . . . . . . . . . 7 | 3.1. Module Copyright . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.2. Narrative Sections . . . . . . . . . . . . . . . . . . . . 7 | 3.2. Narrative Sections . . . . . . . . . . . . . . . . . . . . 7 | |||
3.3. Definitions Section . . . . . . . . . . . . . . . . . . . 8 | 3.3. Definitions Section . . . . . . . . . . . . . . . . . . . 8 | |||
3.4. Security Considerations Section . . . . . . . . . . . . . 8 | 3.4. Security Considerations Section . . . . . . . . . . . . . 8 | |||
3.5. IANA Considerations Section . . . . . . . . . . . . . . . 8 | 3.5. IANA Considerations Section . . . . . . . . . . . . . . . 8 | |||
3.5.1. Documents that Create a New Name Space . . . . . . . . 8 | 3.5.1. Documents that Create a New Name Space . . . . . . . . 8 | |||
3.5.2. Documents that Extend an Existing Name Space . . . . . 9 | 3.5.2. Documents that Extend an Existing Name Space . . . . . 9 | |||
3.6. Reference Sections . . . . . . . . . . . . . . . . . . . . 9 | 3.6. Reference Sections . . . . . . . . . . . . . . . . . . . . 9 | |||
3.7. Copyright Notices . . . . . . . . . . . . . . . . . . . . 9 | 3.7. Intellectual Property Section . . . . . . . . . . . . . . 9 | |||
3.8. Intellectual Property Section . . . . . . . . . . . . . . 9 | ||||
4. YANG Usage Guidelines . . . . . . . . . . . . . . . . . . . . 10 | 4. YANG Usage Guidelines . . . . . . . . . . . . . . . . . . . . 10 | |||
4.1. Module Naming Conventions . . . . . . . . . . . . . . . . 10 | 4.1. Module Naming Conventions . . . . . . . . . . . . . . . . 10 | |||
4.2. Identifiers . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.2. Identifiers . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.3. Defaults . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.3. Defaults . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.4. Conditional Statements . . . . . . . . . . . . . . . . . . 11 | 4.4. Conditional Statements . . . . . . . . . . . . . . . . . . 11 | |||
4.5. Lifecycle Management . . . . . . . . . . . . . . . . . . . 12 | 4.5. XPath Usage . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.6. Header Contents . . . . . . . . . . . . . . . . . . . . . 12 | 4.6. Lifecycle Management . . . . . . . . . . . . . . . . . . . 12 | |||
4.7. Temporary Namespace Assignments . . . . . . . . . . . . . 13 | 4.7. Module Header, Meta, and Revision Statements . . . . . . . 13 | |||
4.8. Top Level Database Objects . . . . . . . . . . . . . . . . 14 | 4.8. Namespace Assignments . . . . . . . . . . . . . . . . . . 13 | |||
4.9. Data Types . . . . . . . . . . . . . . . . . . . . . . . . 15 | 4.9. Top Level Data Definitions . . . . . . . . . . . . . . . . 15 | |||
4.10. Reusable Type Definitions . . . . . . . . . . . . . . . . 15 | 4.10. Data Types . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
4.11. Object Definitions . . . . . . . . . . . . . . . . . . . . 16 | 4.11. Reusable Type Definitions . . . . . . . . . . . . . . . . 16 | |||
4.12. Operation Definitions . . . . . . . . . . . . . . . . . . 17 | 4.12. Data Definitions . . . . . . . . . . . . . . . . . . . . . 16 | |||
4.13. Notification Definitions . . . . . . . . . . . . . . . . . 17 | 4.13. Operation Definitions . . . . . . . . . . . . . . . . . . 17 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | 4.14. Notification Definitions . . . . . . . . . . . . . . . . . 18 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . . 21 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . . 21 | 8.1. Normative References . . . . . . . . . . . . . . . . . . . 22 | |||
Appendix A. Module Review Checklist . . . . . . . . . . . . . . . 22 | 8.2. Informative References . . . . . . . . . . . . . . . . . . 22 | |||
Appendix B. YANG Module Template . . . . . . . . . . . . . . . . 24 | Appendix A. Module Review Checklist . . . . . . . . . . . . . . . 23 | |||
Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 27 | Appendix B. YANG Module Template . . . . . . . . . . . . . . . . 25 | |||
C.1. Changes from 03 to 04 . . . . . . . . . . . . . . . . . . 27 | Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 28 | |||
C.2. Changes from 02 to 03 . . . . . . . . . . . . . . . . . . 28 | C.1. Changes from 04 to 05 . . . . . . . . . . . . . . . . . . 28 | |||
C.3. Changes from 01 to 02 . . . . . . . . . . . . . . . . . . 28 | C.2. Changes from 03 to 04 . . . . . . . . . . . . . . . . . . 28 | |||
C.4. Changes from 00 to 01 . . . . . . . . . . . . . . . . . . 28 | C.3. Changes from 02 to 03 . . . . . . . . . . . . . . . . . . 29 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 29 | C.4. Changes from 01 to 02 . . . . . . . . . . . . . . . . . . 29 | |||
C.5. Changes from 00 to 01 . . . . . . . . . . . . . . . . . . 29 | ||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
1. Introduction | 1. Introduction | |||
The standardization of network configuration interfaces for use with | The standardization of network configuration interfaces for use with | |||
the NETCONF [RFC4741] protocol requires a modular set of data models, | the NETCONF [RFC4741] protocol requires a modular set of data models, | |||
which can be reused and extended over time. | which can be reused and extended over time. | |||
This document defines a set of usage guidelines for standards track | This document defines a set of usage guidelines for standards track | |||
documents containing YANG [I-D.ietf-netmod-yang] data models. It is | documents containing YANG [I-D.ietf-netmod-yang] data models. It is | |||
similar to the MIB usage guidelines specification [RFC4181] in intent | similar to the SMIv2 usage guidelines specification [RFC4181] in | |||
and structure. | intent and structure. | |||
Many YANG constructs are defined as optional to use, such as the | Many YANG constructs are defined as optional to use, such as the | |||
description clause. However, in order to maximize interoperability | description statement. However, in order to maximize | |||
of NETCONF implementations utilizing YANG data models, it is | interoperability of NETCONF implementations utilizing YANG data | |||
desirable to define a set of usage guidelines which may require a | models, it is desirable to define a set of usage guidelines which may | |||
higher level of compliance than the minimum level defined in the YANG | require a higher level of compliance than the minimum level defined | |||
specification. | in the YANG specification. | |||
This document defines usage guidelines related to the NETCONF | This document defines usage guidelines related to the NETCONF | |||
operations layer, and NETCONF content layer, as defined in [RFC4741]. | operations layer, and NETCONF content layer, as defined in [RFC4741]. | |||
2. Terminology | 2. Terminology | |||
2.1. Requirements Notation | 2.1. Requirements Notation | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
RFC 2119 language is used here to express the views of the NETMOD | RFC 2119 language is used here to express the views of the NETMOD | |||
working group regarding YANG module content. Yang modules complying | working group regarding YANG module content. YANG modules complying | |||
with this document will treat the RFC 2119 terminology as if it were | with this document will treat the RFC 2119 terminology as if it were | |||
describing best current practices. | describing best current practices. | |||
2.2. NETCONF Terms | 2.2. NETCONF Terms | |||
The following terms are defined in [RFC4741] and are not redefined | The following terms are defined in [RFC4741] and are not redefined | |||
here: | here: | |||
o capabilities | o capabilities | |||
skipping to change at page 7, line 16 | skipping to change at page 7, line 16 | |||
YANG data model modules under review are likely to be contained in | YANG data model modules under review are likely to be contained in | |||
Internet Drafts. All guidelines for Internet Draft authors MUST be | Internet Drafts. All guidelines for Internet Draft authors MUST be | |||
followed. These guidelines are available online at: | followed. These guidelines are available online at: | |||
http://www.rfc-editor.org/rfc-editor/instructions2authors.txt | http://www.rfc-editor.org/rfc-editor/instructions2authors.txt | |||
The following sections MUST be present in an Internet Draft | The following sections MUST be present in an Internet Draft | |||
containing a module: | containing a module: | |||
o YANG data model boilerplate section | ||||
o Narrative sections | o Narrative sections | |||
o Definitions section | o Definitions section | |||
o Security Considerations section | o Security Considerations section | |||
o IANA Considerations section | o IANA Considerations section | |||
o References section | o References section | |||
3.1. Module Copyright | 3.1. Module Copyright | |||
The module description statement MUST contain the latest approved | The module description statement MUST contain a reference to the | |||
IETF Trust Copyright statement, which is available on-line, in | latest approved IETF Trust Copyright statement, which is available | |||
section 4 of the Trust Legal Provisions (TLP) document, at: | on-line at: | |||
http://trustee.ietf.org/license-info/ | http://trustee.ietf.org/license-info/ | |||
Each YANG module or submodule contained within an Internet Draft or | Each YANG module or submodule contained within an Internet Draft or | |||
RFC MUST be identified as a 'Code Component'. The strings '<CODE | RFC is considered to be a code component. The strings '<CODE | |||
BEGINS>' and '<CODE ENDS>' SHOULD be used to identify each Code | BEGINS>' and '<CODE ENDS>' SHOULD be used to identify each code | |||
Component. | component. | |||
The '<CODE BEGINS>' tag SHOULD be followed by a string identifying | ||||
the file name specified in section 5.2 of [I-D.ietf-netmod-yang]. | ||||
For example, if the latest revision date of the 'ietf-foo' module is | ||||
'2010-01-18', then the following '<CODE BEGINS>' line would be used: | ||||
<CODE BEGINS> file "ietf-foo@2010-01-18.yang" | ||||
3.2. Narrative Sections | 3.2. Narrative Sections | |||
The narrative part MUST include an overview section that describes | The narrative part MUST include an overview section that describes | |||
the scope and field of application of the module(s) defined by the | the scope and field of application of the module(s) defined by the | |||
specification and that specifies the relationship (if any) of these | specification and that specifies the relationship (if any) of these | |||
modules to other standards, particularly to standards containing | modules to other standards, particularly to standards containing | |||
other module modules. The narrative part SHOULD include one or more | other YANG modules. The narrative part SHOULD include one or more | |||
sections to briefly describe the structure of the modules defined in | sections to briefly describe the structure of the modules defined in | |||
the specification. | the specification. | |||
If the module(s) defined by the specification import definitions from | If the module(s) defined by the specification import definitions from | |||
other modules (except for those defined in the YANG | other modules (except for those defined in the YANG | |||
[I-D.ietf-netmod-yang] or YANG Types [I-D.ietf-netmod-yang-types] | [I-D.ietf-netmod-yang] or YANG Types [I-D.ietf-netmod-yang-types] | |||
documents) or are always implemented in conjunction with other | documents) or are always implemented in conjunction with other | |||
modules, then those facts MUST be noted in the overview section, as | modules, then those facts MUST be noted in the overview section, as | |||
MUST any special interpretations of objects in other modules. | MUST any special interpretations of definitions in other modules. | |||
3.3. Definitions Section | 3.3. Definitions Section | |||
This section contains the module(s) defined by the specification. | This section contains the module(s) defined by the specification. | |||
These modules MUST be written in YANG [I-D.ietf-netmod-yang]. | These modules MUST be written in YANG [I-D.ietf-netmod-yang]. | |||
See Section 4 for guidelines on YANG usage. | See Section 4 for guidelines on YANG usage. | |||
3.4. Security Considerations Section | 3.4. Security Considerations Section | |||
Each specification that defines one or more modules MUST contain a | Each specification that defines one or more modules MUST contain a | |||
section that discusses security considerations relevant to those | section that discusses security considerations relevant to those | |||
modules. This section MUST be patterned after the latest approved | modules. This section MUST be patterned after the latest approved | |||
template (available at http://www.ops.ietf.org/yang-security.html). | template (available at http://www.ops.ietf.org/yang-security.html). | |||
[ed.: this online document does not exist yet.] | ||||
In particular, writable module objects that could be especially | In particular, writable data nodes that could be especially | |||
disruptive if abused MUST be explicitly listed by name and the | disruptive if abused MUST be explicitly listed by name and the | |||
associated security risks MUST be spelled out; similarly, readable | associated security risks MUST be spelled out; similarly, readable | |||
module objects that contain especially sensitive information or that | data nodes that contain especially sensitive information or that | |||
raise significant privacy concerns MUST be explicitly listed by name | raise significant privacy concerns MUST be explicitly listed by name | |||
and the reasons for the sensitivity/privacy concerns MUST be | and the reasons for the sensitivity/privacy concerns MUST be | |||
explained. | explained. | |||
3.5. IANA Considerations Section | 3.5. IANA Considerations Section | |||
In order to comply with IESG policy as set forth in | In order to comply with IESG policy as set forth in | |||
http://www.ietf.org/ID-Checklist.html, every Internet-Draft that is | http://www.ietf.org/ID-Checklist.html, every Internet-Draft that is | |||
submitted to the IESG for publication MUST contain an IANA | submitted to the IESG for publication MUST contain an IANA | |||
Considerations section. The requirements for this section vary | Considerations section. The requirements for this section vary | |||
depending what actions are required of the IANA. | depending what actions are required of the IANA. Refer to the | |||
guidelines in [RFC5226] for more details. | ||||
3.5.1. Documents that Create a New Name Space | 3.5.1. Documents that Create a New Name Space | |||
If an Internet-Draft defines a new name space that is to be | If an Internet-Draft defines a new name space that is to be | |||
administered by the IANA, then the document MUST include an IANA | administered by the IANA, then the document MUST include an IANA | |||
Considerations section, that specifies how the name space is to be | Considerations section, that specifies how the name space is to be | |||
administered. | administered. | |||
Specifically, if any YANG module namespace statement value contained | Specifically, if any YANG module namespace statement value contained | |||
in the document is not already registered with IANA, then a new YANG | in the document is not already registered with IANA, then a new YANG | |||
skipping to change at page 9, line 21 | skipping to change at page 9, line 27 | |||
3.6. Reference Sections | 3.6. Reference Sections | |||
For every import or include statement which appears in a module | For every import or include statement which appears in a module | |||
contained in the specification, which identifies a module in a | contained in the specification, which identifies a module in a | |||
separate document, a corresponding normative reference to that | separate document, a corresponding normative reference to that | |||
document MUST appear in the Normative References section. The | document MUST appear in the Normative References section. The | |||
reference MUST correspond to the specific module version actually | reference MUST correspond to the specific module version actually | |||
used within the specification. | used within the specification. | |||
For every reference statement which appears in a module contained in | For every normative reference statement which appears in a module | |||
the specification, which identifies a separate document, a | contained in the specification, which identifies a separate document, | |||
corresponding normative reference to that document SHOULD appear in | a corresponding normative reference to that document SHOULD appear in | |||
the Normative References section. The reference SHOULD correspond to | the Normative References section. The reference SHOULD correspond to | |||
the specific document version actually used within the specification. | the specific document version actually used within the specification. | |||
If the reference statement identifies an informative reference, which | ||||
identifies a separate document, a corresponding informative reference | ||||
to that document MAY appear in the Informative References section. | ||||
3.7. Copyright Notices | 3.7. Intellectual Property Section | |||
The proper copyright notices MUST be present in the module | ||||
description statement. Refer to the IETF Trust Legal Provision for | ||||
the exact legal text that needs to be included. | ||||
3.8. Intellectual Property Section | ||||
The proper IPR statements MUST be present in the document, according | The proper IPR statements MUST be present in the document, according | |||
to the most current Internet Draft boilerplate. Refer to the IETF | to the most current Internet Draft boilerplate. Refer to the IETF | |||
Trust Legal Provision for the exact legal text that needs to be | Trust Legal Provision for the exact legal text that needs to be | |||
included. | included. | |||
4. YANG Usage Guidelines | 4. YANG Usage Guidelines | |||
In general, modules in IETF standards-track specifications MUST | In general, modules in IETF standards-track specifications MUST | |||
comply with all syntactic and semantic requirements of YANG. | comply with all syntactic and semantic requirements of YANG. | |||
skipping to change at page 10, line 38 | skipping to change at page 10, line 38 | |||
being defined to extend one or more existing modules, then the same | being defined to extend one or more existing modules, then the same | |||
word or acronym should be reused, instead of creating a new one. | word or acronym should be reused, instead of creating a new one. | |||
All published module names MUST be unique. | All published module names MUST be unique. | |||
Once a module name is published, it MUST not be reused, even if the | Once a module name is published, it MUST not be reused, even if the | |||
RFC containing the module is reclassified to 'Historic' status. | RFC containing the module is reclassified to 'Historic' status. | |||
4.2. Identifiers | 4.2. Identifiers | |||
Identifiers for all published modules, submodules, typedefs, | Identifiers for all YANG identifiers in published modules MUST be | |||
groupings, data objects, operations, and notifications MUST be | between 1 and 64 characters in length. These includes any construct | |||
between 1 and 64 characters in length. | specified as an 'identifier-arg-str' token in the ABNF in section 12 | |||
of [I-D.ietf-netmod-yang]. | ||||
4.3. Defaults | 4.3. Defaults | |||
In general, it is suggested that sub-statements containing default | In general, it is suggested that sub-statements containing very | |||
values SHOULD NOT be present. For example, 'status current;', | common default values SHOULD NOT be present. The following sub- | |||
'config true;', 'mandatory false;', and 'max-elements unbounded;' are | statements are commonly used with the default value, which would make | |||
common defaults which would make the module difficult to read if used | the module difficult to read if used everywhere they are allowed. | |||
everywhere they are allowed. | ||||
Instead, it is suggested that common statements SHOULD only be used | +---------------+---------------+ | |||
when being set to a value other than the default value. | | Statement | Default Value | | |||
+---------------+---------------+ | ||||
| config | true | | ||||
| | | | ||||
| mandatory | false | | ||||
| | | | ||||
| max-elements | unbounded | | ||||
| | | | ||||
| min-elements | 0 | | ||||
| | | | ||||
| ordered-by | system | | ||||
| | | | ||||
| status | current | | ||||
| | | | ||||
| yin-element | false | | ||||
+---------------+---------------+ | ||||
4.4. Conditional Statements | 4.4. Conditional Statements | |||
A module may be conceptually partitioned in several ways, using the | A module may be conceptually partitioned in several ways, using the | |||
'if-feature' and/or 'when' statements. | 'if-feature' and/or 'when' statements. | |||
Data model designers need to carefully consider all modularity | Data model designers need to carefully consider all modularity | |||
aspects, including the use of YANG conditional statements. | aspects, including the use of YANG conditional statements. | |||
Objects SHOULD NOT directly reference NETCONF capabilities, in order | If a data definition is optional, depending on server support for a | |||
to specify optional behavior. Instead, a 'feature' statement SHOULD | NETCONF protocol capability, then a YANG 'feature' statement SHOULD | |||
be defined instead of a NETCONF capability, and the 'if-feature' | be defined to indicate the NETCONF capability is supported within the | |||
statement SHOULD be used within the optional object definition. | data model. | |||
If the condition associated with the desired semantics is not | 4.5. XPath Usage | |||
dependent on any particular instance value within the database, then | ||||
an 'if-feature' statement SHOULD be used instead of a 'when' | ||||
statement. | ||||
The 'attribute' and 'namespace' axis SHOULD NOT be used because the | The 'attribute' and 'namespace' axes are not supported in YANG, and | |||
associated XML node types are not supported in YANG, and may not be | MAY be empty in a NETCONF server implementation. | |||
supported consistently across NETCONF server implementations. | ||||
The 'position' and 'last' functions MAY be used with caution, within | The 'position' and 'last' functions MAY be used with caution. A | |||
a single server implementation. These functions may be useful in | server is not required to maintain any particular XML document order | |||
some cases when processing user-ordered lists. A server is only | for system-ordered data nodes. A server is only required to maintain | |||
required to maintain the XML order of a user-ordered list or leaf- | the relative XML document order of all instances of a particular | |||
list. | user-ordered list or leaf-list. | |||
The 'preceding', and 'following' axes SHOULD NOT be used. These | The 'preceding', and 'following' axes SHOULD NOT be used. These | |||
constructs rely on XML document order within a NETCONF server | constructs rely on XML document order within a NETCONF server | |||
configuration database, which may not be supported consistently or | configuration database, which may not be supported consistently or | |||
produce reliable results across implementations. Predicate | produce reliable results across implementations. Predicate | |||
expressions based on static node properties (e.g., name, value, | expressions based on static node properties (e.g., name, value, | |||
ancestors, descendants) SHOULD be used instead. | ancestors, descendants) SHOULD be used instead. | |||
The 'preceding-sibling' and 'following-sibling' axes MAY be used, | The 'preceding-sibling' and 'following-sibling' axes MAY be used, | |||
with caution. A server is not required to maintain a persistent or | with caution. A server is not required to maintain a persistent or | |||
deterministic XML document order, which will affect use of these | deterministic XML document order, which will affect use of these | |||
axes. | axes. | |||
Implicit 'position' function calls within predicates SHOULD NOT be | Implicit 'position' function calls within predicates MAY be used with | |||
used. (e.g., //chapter[42]). | caution. (e.g., //chapter[42]). Note that a NETCONF server is only | |||
required to maintain relative document order for related instances of | ||||
a user-ordered list or leaf-list data definition (i.e., 'ordered-by' | ||||
statement set to 'user'). | ||||
Data nodes which use the 'int64' and 'uint64' built-in type MAY be | Data nodes which use the 'int64' and 'uint64' built-in type MAY be | |||
used with caution, within relational expressions. There are boundary | used with caution, within relational expressions. There are boundary | |||
conditions in which the translation from the YANG 64-bit type to an | conditions in which the translation from the YANG 64-bit type to an | |||
XPath number can cause incorrect results. Specifically, an XPath | XPath number can cause incorrect results. Specifically, an XPath | |||
double precision floating point number cannot represent very large | double precision floating point number cannot represent very large | |||
positive or negative 64-bit numbers because it only provides a total | positive or negative 64-bit numbers because it only provides a total | |||
precision of 53 bits. | precision of 53 bits. | |||
Data modelers need to be careful not to confuse the YANG value space | Data modelers need to be careful not to confuse the YANG value space | |||
and the XPath value space. The data types are not the same in both, | and the XPath value space. The data types are not the same in both, | |||
and conversion between YANG and XPath data types SHOULD be considered | and conversion between YANG and XPath data types SHOULD be considered | |||
carefully. | carefully. | |||
Explicit XPath data type conversions MAY be used (e.g., 'string', | Explicit XPath data type conversions MAY be used (e.g., 'string', | |||
'boolean', or 'number' functions), instead of implicit XPath data | 'boolean', or 'number' functions), instead of implicit XPath data | |||
type conversions. | type conversions. | |||
4.5. Lifecycle Management | 4.6. Lifecycle Management | |||
The status statement SHOULD NOT be present if its value is 'current'. | The status statement MUST be present if its value is 'deprecated' or | |||
It MUST be present if its value is 'deprecated' or 'obsolete'. | 'obsolete'. | |||
The module or submodule name MUST NOT be changed, once the document | The module or submodule name MUST NOT be changed, once the document | |||
containing the module or submodule is published. | containing the module or submodule is published. | |||
The module namespace URI value MUST NOT be changed, once the document | The module namespace URI value MUST NOT be changed, once the document | |||
containing the module is published. | containing the module is published. | |||
The revision-date sub-statement (within the imports statement) SHOULD | The revision-date sub-statement within the imports statement SHOULD | |||
be present if any groupings are used from the external module. | be present if any groupings are used from the external module. | |||
The revision-date sub-statement (within the include statement) SHOULD | The revision-date sub-statement within the include statement SHOULD | |||
be present if any groupings are used from the external sub-module. | be present if any groupings are used from the external sub-module. | |||
If submodules are used, then the document containing the main module | If submodules are used, then the document containing the main module | |||
MUST be updated so that the main module revision date is equal or | MUST be updated so that the main module revision date is equal or | |||
more recent than the revision date of any submodule which is | more recent than the revision date of any submodule which is | |||
(directly or indirectly) included by the main module. | (directly or indirectly) included by the main module. | |||
4.6. Header Contents | 4.7. Module Header, Meta, and Revision Statements | |||
For published modules, the namespace MUST be a globally unique URI, | For published modules, the namespace MUST be a globally unique URI, | |||
as defined in [RFC3986]. This value is usually assigned by the IANA. | as defined in [RFC3986]. This value is usually assigned by the IANA. | |||
The organization statement MUST be present. If the module is | The organization statement MUST be present. If the module is | |||
contained in a documented intended for standards-track status, then | contained in a documented intended for standards-track status, then | |||
the organization SHOULD be the IETF working group chartered to write | the organization SHOULD be the IETF working group chartered to write | |||
the document. | the document. | |||
The contact statement MUST be present. If the module is contained in | The contact statement MUST be present. If the module is contained in | |||
a document intended for standards-track status, then the working | a document intended for standards-track status, then the working | |||
group WEB and mailing information MUST be present, and the document | group WEB and mailing information MUST be present, and the document | |||
author contact information SHOULD be present. In addition, the Area | author contact information SHOULD be present. In addition, the Area | |||
Director and other contact information MAY be present. | Director and other contact information MAY be present. | |||
The description statement MUST be present. The appropriate IETF | The description statement MUST be present. The appropriate IETF | |||
Trust Copyright text MUST be present, as described in Section 3.1. | Trust Copyright text MUST be present, as described in Section 3.1. | |||
Modules are often extracted from their original documents and it is | ||||
useful for developers and operators to know how to find the original | ||||
source document in a consistent manner. | ||||
If the module relies on information contained in other documents, | If the module relies on information contained in other documents, | |||
which are not the same documents implied by the import statements | which are not the same documents implied by the import statements | |||
present in the module, then these documents MUST be identified in the | present in the module, then these documents MUST be identified in the | |||
reference statement. | reference statement. | |||
A revision statement MUST be present for each published version of | A revision statement MUST be present for each published version of | |||
the module. The revision statement MUST have a reference | the module. The revision statement MUST have a reference | |||
substatement. It MUST identify the published document which contains | substatement. It MUST identify the published document which contains | |||
the module. | the module. Modules are often extracted from their original | |||
documents and it is useful for developers and operators to know how | ||||
to find the original source document in a consistent manner. The | ||||
revision statement MAY have a description substatement. | ||||
Each new revision MUST include a revision date which is higher than | Each new revision MUST include a revision date which is higher than | |||
any other revision date in the module. | any other revision date in the module. | |||
It is acceptable to reuse the same revision statement within | It is acceptable to reuse the same revision statement within | |||
unpublished versions (i.e., Internet Drafts), but the revision date | unpublished versions (i.e., Internet Drafts), but the revision date | |||
MUST be updated to a higher value each time the Internet Draft is re- | MUST be updated to a higher value each time the Internet Draft is re- | |||
published. | published. | |||
4.7. Temporary Namespace Assignments | 4.8. Namespace Assignments | |||
It is desirable to include only valid YANG modules in documents, | It is desirable to include only valid YANG modules in documents, | |||
whether they are published yet or not. This allows: | whether they are published yet or not. This allows: | |||
o the module to compile correctly instead of generating disruptive | o the module to compile correctly instead of generating disruptive | |||
fatal errors. | fatal errors. | |||
o early implementors to use the modules without picking a random | o early implementors to use the modules without picking a random | |||
value for the XML namespace. | value for the XML namespace. | |||
o early interoperability testing since independent implementations | o early interoperability testing since independent implementations | |||
will use the same XML namespace value. | will use the same XML namespace value. | |||
Until a URI is assigned by the IANA, a temporary namespace URI MUST | Until a URI is assigned by the IANA, a proposed namespace URI MUST be | |||
be provided for the namespace statement in a YANG module. A value | provided for the namespace statement in a YANG module. A value | |||
SHOULD be selected which is not likely to collide with other YANG | SHOULD be selected which is not likely to collide with other YANG | |||
namespaces. | namespaces. Standard module names, prefixes, and URI strings already | |||
listed in the YANG Module Registry MUST NOT be used. | ||||
A standard namespace statement value SHOULD have the following form: | A standard namespace statement value SHOULD have the following form: | |||
<URN prefix string>:<module-name> | <URN prefix string>:<module-name> | |||
The following URN prefix string SHOULD be used for published and | The following URN prefix string SHOULD be used for published and | |||
unpublished YANG modules | unpublished YANG modules: | |||
urn:ietf:params:xml:ns:yang: | urn:ietf:params:xml:ns:yang: | |||
The following example URNs would be valid temporary namespace | The following example URNs would be valid temporary namespace | |||
statement values for standards-track modules: | statement values for standards-track modules: | |||
urn:ietf:params:xml:ns:yang:ietf-netconf-partial-lock | urn:ietf:params:xml:ns:yang:ietf-netconf-partial-lock | |||
urn:ietf:params:xml:ns:yang:ietf-netconf-state | urn:ietf:params:xml:ns:yang:ietf-netconf-state | |||
skipping to change at page 14, line 33 | skipping to change at page 15, line 5 | |||
the guidelines in [I-D.ietf-netmod-yang]. | the guidelines in [I-D.ietf-netmod-yang]. | |||
The following examples of non-standards track modules are only | The following examples of non-standards track modules are only | |||
suggestions. There are no guidelines for this type of URN in this | suggestions. There are no guidelines for this type of URN in this | |||
document: | document: | |||
http://example.com/ns/example-interfaces | http://example.com/ns/example-interfaces | |||
http://example.com/ns/example-system | http://example.com/ns/example-system | |||
4.8. Top Level Database Objects | 4.9. Top Level Data Definitions | |||
There SHOULD only be one top-level data node defined in each YANG | There SHOULD only be one top-level data node defined in each YANG | |||
module. However, there MAY be more than one if needed. | module. However, there MAY be more than one if needed. | |||
The top-level data organization SHOULD be considered carefully, in | The top-level data organization SHOULD be considered carefully, in | |||
advance. Data model designers need to consider how the functionality | advance. Data model designers need to consider how the functionality | |||
for a given protocol or protocol family will grow over time. | for a given protocol or protocol family will grow over time. | |||
The names and data organization SHOULD reflect persistent | The names and data organization SHOULD reflect persistent | |||
information, such as the name of a protocol. The name of the working | information, such as the name of a protocol. The name of the working | |||
group SHOULD NOT be used because this may change over time. | group SHOULD NOT be used because this may change over time. | |||
A mandatory database object is defined as a node that a client must | A mandatory database data definition is defined as a node that a | |||
provide for the database to be valid. The server will not provide a | client must provide for the database to be valid. The server is not | |||
value under any conditions. | required to provide a value. | |||
Top-level database objects MUST NOT be mandatory. If a mandatory | Top-level database data definitions MUST NOT be mandatory. If a | |||
node appears at the top-level, it will immediately cause the database | mandatory node appears at the top-level, it will immediately cause | |||
to be invalid. This can occur when the server boots or when a module | the database to be invalid. This can occur when the server boots or | |||
is loaded dynamically at runtime. | when a module is loaded dynamically at runtime. | |||
4.9. Data Types | 4.10. Data Types | |||
Selection of an appropriate data type (i.e., built-in type, existing | Selection of an appropriate data type (i.e., built-in type, existing | |||
derived type, or new derived type) is very subjective and therefore | derived type, or new derived type) is very subjective and therefore | |||
few requirements can be specified on that subject. | few requirements can be specified on that subject. | |||
Data model designers SHOULD use the most appropriate built-in data | Data model designers SHOULD use the most appropriate built-in data | |||
type for the particular application. | type for the particular application. | |||
If extensibility of enumerated values is required, then the | If extensibility of enumerated values is required, then the | |||
identityref data type SHOULD be used instead of an enumeration or | identityref data type SHOULD be used instead of an enumeration or | |||
other built-in type. | other built-in type. | |||
For string data types, if a machine-readable pattern can be defined | For string data types, if a machine-readable pattern can be defined | |||
for the desired semantics, then one or more pattern statements SHOULD | for the desired semantics, then one or more pattern statements SHOULD | |||
be present. | be present. | |||
For string data types, if the length of the string is required to | For string data types, if the length of the string is required to | |||
bounded in all implementations, then a length statement SHOULD be | bounded in all implementations, then a length statement SHOULD be | |||
present. | present. | |||
For string data types, object semantics SHOULD NOT rely on | For string data types, data definition semantics SHOULD NOT rely on | |||
preservation of leading and trailing whitespace characters. | preservation of leading and trailing whitespace characters. | |||
For numeric data types, if the values allowed by the intended | For numeric data types, if the values allowed by the intended | |||
semantics are different than those allowed by the unbounded intrinsic | semantics are different than those allowed by the unbounded intrinsic | |||
data type (e.g., int32), then a range statement SHOULD be present. | data type (e.g., int32), then a range statement SHOULD be present. | |||
The signed numeric data types (i.e., 'int8', 'int16', 'int32', and | The signed numeric data types (i.e., 'int8', 'int16', 'int32', and | |||
'int64') SHOULD NOT be used unless negative values are allowed for | 'int64') SHOULD NOT be used unless negative values are allowed for | |||
the desired semantics. | the desired semantics. | |||
For enumeration or bits data types, the semantics for each enum or | For enumeration or bits data types, the semantics for each enum or | |||
bit SHOULD be documented. A separate description statement (within | bit SHOULD be documented. A separate description statement (within | |||
each enum or bit statement) SHOULD be present. | each enum or bit statement) SHOULD be present. | |||
4.10. Reusable Type Definitions | 4.11. Reusable Type Definitions | |||
If an appropriate derived type exists in any standard module, such as | If an appropriate derived type exists in any standard module, such as | |||
[I-D.ietf-netmod-yang-types], then it SHOULD be used instead of | [I-D.ietf-netmod-yang-types], then it SHOULD be used instead of | |||
defining a new derived type. | defining a new derived type. | |||
If an appropriate units identifier can be associated with the desired | If an appropriate units identifier can be associated with the desired | |||
semantics, then a units statement SHOULD be present. | semantics, then a units statement SHOULD be present. | |||
If an appropriate default value can be associated with the desired | If an appropriate default value can be associated with the desired | |||
semantics, then a default statement SHOULD be present. | semantics, then a default statement SHOULD be present. | |||
skipping to change at page 16, line 16 | skipping to change at page 16, line 36 | |||
If a significant number of derived types are defined, and it is | If a significant number of derived types are defined, and it is | |||
anticipated that these data types will be reused by multiple modules, | anticipated that these data types will be reused by multiple modules, | |||
then these derived types SHOULD be contained in a separate module or | then these derived types SHOULD be contained in a separate module or | |||
submodule, to allow easier reuse without unnecessary coupling. | submodule, to allow easier reuse without unnecessary coupling. | |||
The description statement MUST be present. | The description statement MUST be present. | |||
If the type definition semantics are defined in an external document, | If the type definition semantics are defined in an external document, | |||
then the reference statement SHOULD be present. | then the reference statement SHOULD be present. | |||
4.11. Object Definitions | 4.12. Data Definitions | |||
The description statement MUST be present in the following body | The description statement MUST be present in the following YANG | |||
statements: | statements: | |||
o extension | o anyxml | |||
o feature | ||||
o identity | ||||
o typedef | ||||
o grouping | ||||
o augment | o augment | |||
o rpc | o choice | |||
o notification | o container | |||
The description statement MUST be present in the following data | o extension | |||
definition constructs: | o feature | |||
o container | o grouping | |||
o identity | ||||
o leaf | o leaf | |||
o leaf-list | o leaf-list | |||
o list | o list | |||
o choice | o notification | |||
o anyxml | o rpc | |||
If the object semantics are defined in an external document, then a | ||||
reference statement SHOULD be present. | o typedef | |||
If the data definition semantics are defined in an external document, | ||||
then a reference statement SHOULD be present. | ||||
The 'anyxml' construct MAY be used with caution within configuration | The 'anyxml' construct MAY be used with caution within configuration | |||
data. This may be useful to represent an HTML banner for example. | data. This may be useful to represent an HTML banner containing | |||
However, this construct SHOULD NOT be used if other YANG data node | markup elements, such as <b> and </b>. However, this construct | |||
types can be used instead to represent the desired syntax and | SHOULD NOT be used if other YANG data node types can be used instead | |||
semantics. | to represent the desired syntax and semantics. | |||
If there are referential integrity constraints associated with the | If there are referential integrity constraints associated with the | |||
desired semantics that can be represented with XPath, then one or | desired semantics that can be represented with XPath, then one or | |||
more must statements SHOULD be present. | more must statements SHOULD be present. | |||
For list and leaf-list objects, if the number of possible instances | For list and leaf-list data definitions, if the number of possible | |||
is required to be bounded for all implementations, then the max- | instances is required to be bounded for all implementations, then the | |||
elements statements SHOULD be present. | max-elements statements SHOULD be present. | |||
If any must or when statements are used within the object definition, | ||||
then the object description statement SHOULD describe the purpose of | ||||
each one. | ||||
4.12. Operation Definitions | If any must or when statements are used within the data definition, | |||
then the data definition description statement SHOULD describe the | ||||
purpose of each one. | ||||
The description statement MUST be present in 'rpc' statements | 4.13. Operation Definitions | |||
defining new operations. | ||||
If the operation semantics are defined in an external document, then | If the operation semantics are defined in an external document, then | |||
a reference statement SHOULD be present. | a reference statement SHOULD be present. | |||
If the operation impacts system behavior in some way, it SHOULD be | If the operation impacts system behavior in some way, it SHOULD be | |||
mentioned in the description statement. | mentioned in the description statement. | |||
If the operation is potentially harmful to system behavior in some | If the operation is potentially harmful to system behavior in some | |||
way, it MUST be mentioned in the Security Considerations section of | way, it MUST be mentioned in the Security Considerations section of | |||
the document. | the document. | |||
4.13. Notification Definitions | 4.14. Notification Definitions | |||
The description statement MUST be present. | The description statement MUST be present. | |||
If the notification semantics are defined in an external document, | If the notification semantics are defined in an external document, | |||
then a reference statement SHOULD be present. | then a reference statement SHOULD be present. | |||
5. IANA Considerations | 5. IANA Considerations | |||
There are no actions requested of IANA at this time. | This document registers one URI in the IETF XML registry [RFC3688]. | |||
The following registration is requested: | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-template | ||||
Registrant Contact: The NETMOD WG of the IETF. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
This document requests the following assignment in the YANG Module | ||||
Names Registry for the YANG module template in Appendix B. | ||||
+---------------+-------------------------------------------+ | ||||
| Field | Value | | ||||
+---------------+-------------------------------------------+ | ||||
| name | ietf-template | | ||||
| | | | ||||
| namespace | urn:ietf:params:xml:ns:yang:ietf-template | | ||||
| | | | ||||
| prefix | temp | | ||||
| | | | ||||
| reference | RFCXXXX | | ||||
+---------------+-------------------------------------------+ | ||||
6. Security Considerations | 6. Security Considerations | |||
This document defines documentation guidelines for NETCONF content | This document defines documentation guidelines for NETCONF content | |||
defined with the YANG data modeling language. It does not introduce | defined with the YANG data modeling language. The guidelines for how | |||
any new or increased security risks into the management system. | to write a Security Considerations section for a YANG module are | |||
defined in the online document | ||||
http://www.ops.ietf.org/yang-security.html [ed.: this online document | ||||
does not exist yet.] | ||||
This document does not introduce any new or increased security risks | ||||
into the management system. | ||||
7. Acknowledgments | 7. Acknowledgments | |||
The structure and contents of this document are adapted from | The structure and contents of this document are adapted from | |||
Guidelines for MIB Documents [RFC4181], by C. M. Heard. | Guidelines for MIB Documents [RFC4181], by C. M. Heard. | |||
The working group thanks Martin Bjorklund and Juergen Schoenwaelder | ||||
for their extensive reviews and contributions to this document. | ||||
8. References | 8. References | |||
8.1. Normative References | 8.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, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | ||||
January 2004. | ||||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
RFC 3986, January 2005. | RFC 3986, January 2005. | |||
[RFC4741] Enns, R., "NETCONF Configuration Protocol", RFC 4741, | [RFC4741] Enns, R., "NETCONF Configuration Protocol", RFC 4741, | |||
December 2006. | December 2006. | |||
[I-D.ietf-netmod-yang] | [I-D.ietf-netmod-yang] | |||
Bjorklund, M., "YANG - A data modeling language for | Bjorklund, M., "YANG - A data modeling language for | |||
NETCONF", draft-ietf-netmod-yang-12 (work in progress), | NETCONF", draft-ietf-netmod-yang-12 (work in progress), | |||
April 2010. | April 2010. | |||
[I-D.ietf-netmod-yang-types] | [I-D.ietf-netmod-yang-types] | |||
Schoenwaelder, J., "Common YANG Data Types", | Schoenwaelder, J., "Common YANG Data Types", | |||
draft-ietf-netmod-yang-types-08 (work in progress), | draft-ietf-netmod-yang-types-09 (work in progress), | |||
April 2010. | April 2010. | |||
8.2. Informative References | 8.2. Informative References | |||
[RFC4181] Heard, C., "Guidelines for Authors and Reviewers of MIB | [RFC4181] Heard, C., "Guidelines for Authors and Reviewers of MIB | |||
Documents", BCP 111, RFC 4181, September 2005. | Documents", BCP 111, RFC 4181, September 2005. | |||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | ||||
IANA Considerations Section in RFCs", BCP 26, RFC 5226, | ||||
May 2008. | ||||
Appendix A. Module Review Checklist | Appendix A. Module Review Checklist | |||
This section is adapted from RFC 4181. | This section is adapted from RFC 4181. | |||
The purpose of a YANG module review is to review the YANG module both | The purpose of a YANG module review is to review the YANG module both | |||
for technical correctness and for adherence to IETF documentation | for technical correctness and for adherence to IETF documentation | |||
requirements. The following checklist may be helpful when reviewing | requirements. The following checklist may be helpful when reviewing | |||
a draft document: | a draft document: | |||
1. I-D Boilerplate -- verify that the draft contains the required | 1. I-D Boilerplate -- verify that the draft contains the required | |||
skipping to change at page 23, line 23 | skipping to change at page 24, line 23 | |||
http://trustee.ietf.org/license-info/ | http://trustee.ietf.org/license-info/ | |||
8. Other Issues -- check for any issues mentioned in | 8. Other Issues -- check for any issues mentioned in | |||
http://www.ietf.org/ID-Checklist.html that are not covered | http://www.ietf.org/ID-Checklist.html that are not covered | |||
elsewhere. | elsewhere. | |||
9. Technical Content -- review the actual technical content for | 9. Technical Content -- review the actual technical content for | |||
compliance with the guidelines in this document. The use of a | compliance with the guidelines in this document. The use of a | |||
YANG module compiler is recommended when checking for syntax | YANG module compiler is recommended when checking for syntax | |||
errors; see [YANG tool URL TBD] for more information. Checking | errors, [ed.: online YANG validation tool URL TBD]. Checking for | |||
for correct syntax, however, is only part of the job. It is just | correct syntax, however, is only part of the job. It is just as | |||
as important to actually read the YANG module document from the | important to actually read the YANG module document from the | |||
point of view of a potential implementor. It is particularly | point of view of a potential implementor. It is particularly | |||
important to check that description statements are sufficiently | important to check that description statements are sufficiently | |||
clear and unambiguous to allow interoperable implementations to | clear and unambiguous to allow interoperable implementations to | |||
be created. | be created. | |||
Appendix B. YANG Module Template | Appendix B. YANG Module Template | |||
<CODE BEGINS> file "ietf-template.yang" | <CODE BEGINS> file "ietf-template@2010-05-18.yang" | |||
module ietf-template { | module ietf-template { | |||
// replace this string with a unique namespace URN value | // replace this string with a unique namespace URN value | |||
namespace | namespace | |||
"urn:ietf:params:xml:ns:yang:ietf-template:DRAFT-02"; | "urn:ietf:params:xml:ns:yang:ietf-template"; | |||
// replace this string, and try to pick a unique prefix | // replace this string, and try to pick a unique prefix | |||
prefix "temp"; | prefix "temp"; | |||
// import statements here: e.g., | // import statements here: e.g., | |||
// import ietf-yang-types { prefix yang; } | // import ietf-yang-types { prefix yang; } | |||
// import ietf-inet-types { prefix inet; } | // import ietf-inet-types { prefix inet; } | |||
// identify the IETF working group if applicable | // identify the IETF working group if applicable | |||
organization | organization | |||
skipping to change at page 25, line 20 | skipping to change at page 26, line 20 | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this note | // RFC Ed.: replace XXXX with actual RFC number and remove this note | |||
reference "RFC XXXX"; | reference "RFC XXXX"; | |||
// RFC Ed.: remove this note | // RFC Ed.: remove this note | |||
// Note: extracted from draft-ietf-netmod-yang-usage-04.txt | // Note: extracted from draft-ietf-netmod-yang-usage-04.txt | |||
// replace YYYY-MM-DD with a real date (year-month-day) | // replace '2010-05-18' with the module publication date | |||
// here is an example revision date: 2009-08-12 | // The format is (year-month-day) | |||
revision YYYY-MM-DD { | revision "2010-05-18" { | |||
description | description | |||
"Initial version"; | "Initial version"; | |||
} | } | |||
// extension statements | // extension statements | |||
// feature statements | // feature statements | |||
// identity statements | // identity statements | |||
skipping to change at page 27, line 7 | skipping to change at page 28, line 7 | |||
// DO NOT put deviation statements in a published module | // DO NOT put deviation statements in a published module | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
Figure 1 | Figure 1 | |||
Appendix C. Change Log | Appendix C. Change Log | |||
C.1. Changes from 03 to 04 | C.1. Changes from 04 to 05 | |||
o Changed 'object' terminology to 'data definition'. | ||||
o Put XPath guidelines in separate section. | ||||
o Clarified XPath usage for XML document order dependencies. | ||||
o Updated <CODE BEGINS> guidelines to current conventions. | ||||
o Added informative reference for IANA considerations guidelines and | ||||
XML registry. | ||||
o Updated IANA Considerations section to reserve the ietf-template | ||||
module in the YANG Module Name Registry so it cannot be reused | ||||
accidently. | ||||
o Many other clarifications and fixed typos found in WGLC reviews. | ||||
C.2. Changes from 03 to 04 | ||||
o Removed figure 1 to reduce duplication, just refer to 4741bis | o Removed figure 1 to reduce duplication, just refer to 4741bis | |||
draft. | draft. | |||
o Fixed bugs and typos found in WGLC reviews. | o Fixed bugs and typos found in WGLC reviews. | |||
o Removed some guidelines and referring to YANG draft instead of | o Removed some guidelines and referring to YANG draft instead of | |||
duplicating YANG rules here. | duplicating YANG rules here. | |||
o Changed security guidelines so they refer to the IETF Trust TLP | o Changed security guidelines so they refer to the IETF Trust TLP | |||
skipping to change at page 27, line 31 | skipping to change at page 28, line 50 | |||
suffix strings are not used. | suffix strings are not used. | |||
o Changed some MIB boilerplate so it refers to YANG boilerplate | o Changed some MIB boilerplate so it refers to YANG boilerplate | |||
instead. | instead. | |||
o Introduced dangling URL reference to online YANG security | o Introduced dangling URL reference to online YANG security | |||
guidelines | guidelines | |||
http://www.ops.ietf.org/yang-security.html | http://www.ops.ietf.org/yang-security.html | |||
Text from Bert Wijnen will be completed soon and posted online, | [ed.: Text from Bert Wijnen will be completed soon and posted | |||
and then this URL will be finalized. | online, and then this URL will be finalized.] | |||
o Moved reference for identifying the source document inside the | o Moved reference for identifying the source document inside the | |||
each revision statement. | each revision statement. | |||
o Removed guideline about valid XPath since YANG already requires | o Removed guideline about valid XPath since YANG already requires | |||
valid XPath. | valid XPath. | |||
o Added guideline that strings should not rely on preservation of | o Added guideline that strings should not rely on preservation of | |||
leading and trailing whitespace characters. | leading and trailing whitespace characters. | |||
o Relaxed some XPath and anyxml guidelines from SHOULD NOT or MUST | o Relaxed some XPath and anyxml guidelines from SHOULD NOT or MUST | |||
NOT to MAY use with caution. | NOT to MAY use with caution. | |||
o Updated the TLP text within the example module again. | o Updated the TLP text within the example module again. | |||
o Reversed order of change log so most recent entries are first. | o Reversed order of change log so most recent entries are first. | |||
C.2. Changes from 02 to 03 | C.3. Changes from 02 to 03 | |||
o Updated figure 1 to align with 4741bis draft. | o Updated figure 1 to align with 4741bis draft. | |||
o Updated guidelines for import-by-revision and include-by-revision. | o Updated guidelines for import-by-revision and include-by-revision. | |||
o Added file name to code begins convention in ietf-template module. | o Added file name to code begins convention in ietf-template module. | |||
C.3. Changes from 01 to 02 | C.4. Changes from 01 to 02 | |||
o Updated figure 1 per mailing list comments. | o Updated figure 1 per mailing list comments. | |||
o Updated suggested organization to include the working group name. | o Updated suggested organization to include the working group name. | |||
o Updated ietf-template.yang to use new organization statement | o Updated ietf-template.yang to use new organization statement | |||
value. | value. | |||
o Updated Code Component requirements as per new TLP. | o Updated Code Component requirements as per new TLP. | |||
o Updated ietf-template.yang to use new Code Component begin and end | o Updated ietf-template.yang to use new Code Component begin and end | |||
markers. | markers. | |||
o Updated references to the TLP in a couple sections. | o Updated references to the TLP in a couple sections. | |||
o Change manager/agent terminology to client/server. | o Change manager/agent terminology to client/server. | |||
C.4. Changes from 00 to 01 | C.5. Changes from 00 to 01 | |||
o Added transport 'TLS' to figure 1. | o Added transport 'TLS' to figure 1. | |||
o Added note about RFC 2119 terminology. | o Added note about RFC 2119 terminology. | |||
o Corrected URL for instructions to authors. | o Corrected URL for instructions to authors. | |||
o Updated namespace procedures section. | o Updated namespace procedures section. | |||
o Updated guidelines on module contact, reference, and organization | o Updated guidelines on module contact, reference, and organization | |||
End of changes. 75 change blocks. | ||||
169 lines changed or deleted | 239 lines changed or added | |||
This html diff was produced by rfcdiff 1.38. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |