| rfc7950v3.txt | rfc7950.txt | |||
|---|---|---|---|---|
| skipping to change at page 2, line 25 | skipping to change at page 2, line 25 | |||
| than English. | than English. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 8 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 1.1. Summary of Changes from RFC 6020 . . . . . . . . . . . . 8 | 1.1. Summary of Changes from RFC 6020 . . . . . . . . . . . . 8 | |||
| 2. Key Words . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 2. Key Words . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.1. A Note on Examples . . . . . . . . . . . . . . . . . . . 14 | 3.1. A Note on Examples . . . . . . . . . . . . . . . . . . . 14 | |||
| 4. YANG Overview . . . . . . . . . . . . . . . . . . . . . . . . 14 | 4. YANG Overview . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.1. Functional Overview . . . . . . . . . . . . . . . . . . . 14 | 4.1. Functional Overview . . . . . . . . . . . . . . . . . . . 15 | |||
| 4.2. Language Overview . . . . . . . . . . . . . . . . . . . . 16 | 4.2. Language Overview . . . . . . . . . . . . . . . . . . . . 16 | |||
| 4.2.1. Modules and Submodules . . . . . . . . . . . . . . . 16 | 4.2.1. Modules and Submodules . . . . . . . . . . . . . . . 16 | |||
| 4.2.2. Data Modeling Basics . . . . . . . . . . . . . . . . 17 | 4.2.2. Data Modeling Basics . . . . . . . . . . . . . . . . 17 | |||
| 4.2.3. Configuration and State Data . . . . . . . . . . . . 20 | 4.2.3. Configuration and State Data . . . . . . . . . . . . 20 | |||
| 4.2.4. Built-In Types . . . . . . . . . . . . . . . . . . . 21 | 4.2.4. Built-In Types . . . . . . . . . . . . . . . . . . . 21 | |||
| 4.2.5. Derived Types (typedef) . . . . . . . . . . . . . . . 22 | 4.2.5. Derived Types (typedef) . . . . . . . . . . . . . . . 22 | |||
| 4.2.6. Reusable Node Groups (grouping) . . . . . . . . . . . 23 | 4.2.6. Reusable Node Groups (grouping) . . . . . . . . . . . 23 | |||
| 4.2.7. Choices . . . . . . . . . . . . . . . . . . . . . . . 24 | 4.2.7. Choices . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 4.2.8. Extending Data Models (augment) . . . . . . . . . . . 25 | 4.2.8. Extending Data Models (augment) . . . . . . . . . . . 25 | |||
| 4.2.9. Operation Definitions . . . . . . . . . . . . . . . . 26 | 4.2.9. Operation Definitions . . . . . . . . . . . . . . . . 26 | |||
| skipping to change at page 8, line 17 | skipping to change at page 8, line 17 | |||
| instance" Statement . . . . . . . . . . . . . . . . . . 202 | instance" Statement . . . . . . . . . . . . . . . . . . 202 | |||
| 15.6. Error Message for Data That Violates a Mandatory | 15.6. Error Message for Data That Violates a Mandatory | |||
| "choice" Statement . . . . . . . . . . . . . . . . . . . 202 | "choice" Statement . . . . . . . . . . . . . . . . . . . 202 | |||
| 15.7. Error Message for the "insert" Operation . . . . . . . . 202 | 15.7. Error Message for the "insert" Operation . . . . . . . . 202 | |||
| 16. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 202 | 16. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 202 | |||
| 17. Security Considerations . . . . . . . . . . . . . . . . . . . 203 | 17. Security Considerations . . . . . . . . . . . . . . . . . . . 203 | |||
| 18. References . . . . . . . . . . . . . . . . . . . . . . . . . 203 | 18. References . . . . . . . . . . . . . . . . . . . . . . . . . 203 | |||
| 18.1. Normative References . . . . . . . . . . . . . . . . . . 203 | 18.1. Normative References . . . . . . . . . . . . . . . . . . 203 | |||
| 18.2. Informative References . . . . . . . . . . . . . . . . . 205 | 18.2. Informative References . . . . . . . . . . . . . . . . . 205 | |||
| Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 206 | Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 206 | |||
| Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 206 | Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 207 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 207 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 207 | |||
| 1. Introduction | 1. Introduction | |||
| YANG is a data modeling language originally designed to model | YANG is a data modeling language originally designed to model | |||
| configuration and state data manipulated by the Network Configuration | configuration and state data manipulated by the Network Configuration | |||
| Protocol (NETCONF), NETCONF Remote Procedure Calls, and NETCONF | Protocol (NETCONF), NETCONF Remote Procedure Calls, and NETCONF | |||
| notifications [RFC6241]. Since the publication of YANG version 1 | notifications [RFC6241]. Since the publication of YANG version 1 | |||
| [RFC6020], YANG has been used or proposed to be used for other | [RFC6020], YANG has been used or proposed to be used for other | |||
| protocols (e.g., RESTCONF [RESTCONF] and the Constrained Application | protocols (e.g., RESTCONF [RESTCONF] and the Constrained Application | |||
| Protocol (CoAP) Management Interface (CoMI) [CoMI]). Further, | Protocol (CoAP) Management Interface (CoMI) [CoMI]). Further, | |||
| encodings other than XML have been proposed (e.g., JSON [RFC7951]). | encodings other than XML have been proposed (e.g., JSON [RFC7951]). | |||
| This document describes the syntax and semantics of version 1.1 of | This document describes the syntax and semantics of version 1.1 of | |||
| the YANG language. It also describes how a data model defined in a | the YANG language. It also describes how a data model defined in a | |||
| YANG module is encoded in the Extensible Markup Language (XML) and | YANG module is encoded in the Extensible Markup Language (XML) [XML] | |||
| how NETCONF operations are used to manipulate the data. Other | and how NETCONF operations are used to manipulate the data. Other | |||
| protocols and encodings are possible but are out of scope for this | protocols and encodings are possible but are out of scope for this | |||
| specification. | specification. | |||
| In terms of developing YANG data models, [YANG-Guidelines] provides | In terms of developing YANG data models, [YANG-Guidelines] provides | |||
| some guidelines and recommendations. | some guidelines and recommendations. | |||
| Note that this document does not obsolete RFC 6020 [RFC6020]. | Note that this document does not obsolete RFC 6020 [RFC6020]. | |||
| 1.1. Summary of Changes from RFC 6020 | 1.1. Summary of Changes from RFC 6020 | |||
| skipping to change at page 11, line 7 | skipping to change at page 11, line 7 | |||
| o Allow notifications to be tied to data nodes. | o Allow notifications to be tied to data nodes. | |||
| o Added a new data definition statement "anydata" (see | o Added a new data definition statement "anydata" (see | |||
| Section 7.10), which is RECOMMENDED to be used instead of "anyxml" | Section 7.10), which is RECOMMENDED to be used instead of "anyxml" | |||
| when the data can be modeled in YANG. | when the data can be modeled in YANG. | |||
| o Allow types "empty" and "leafref" in unions. | o Allow types "empty" and "leafref" in unions. | |||
| o Allow type "empty" in a key. | o Allow type "empty" in a key. | |||
| o Removed the restriction that identifiers could not start with the | ||||
| characters "xml". | ||||
| The following changes have been done to the NETCONF mapping: | The following changes have been done to the NETCONF mapping: | |||
| o A server advertises support for YANG 1.1 modules by using | o A server advertises support for YANG 1.1 modules by using | |||
| ietf-yang-library [RFC7895] instead of listing them as | ietf-yang-library [RFC7895] instead of listing them as | |||
| capabilities in the <hello> message. | capabilities in the <hello> message. | |||
| 2. Key Words | 2. Key Words | |||
| 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 | |||
| skipping to change at page 48, line 50 | skipping to change at page 48, line 50 | |||
| Additionally, for an RPC, the root node also has the node | Additionally, for an RPC, the root node also has the node | |||
| representing the RPC operation being defined as a child. The node | representing the RPC operation being defined as a child. The node | |||
| representing the operation being defined has the operation's | representing the operation being defined has the operation's | |||
| output parameters as children. | output parameters as children. | |||
| In the accessible tree, all leafs and leaf-lists with default values | In the accessible tree, all leafs and leaf-lists with default values | |||
| in use exist (see Sections 7.6.1 and 7.7.2). | in use exist (see Sections 7.6.1 and 7.7.2). | |||
| If a node that exists in the accessible tree has a non-presence | If a node that exists in the accessible tree has a non-presence | |||
| container as a child, then the non-presence container also exists in | container as a child, then the non-presence container also exists in | |||
| the tree. | the accessible tree. | |||
| The context node varies with the YANG XPath expression and is | The context node varies with the YANG XPath expression and is | |||
| specified where the YANG statement with the XPath expression is | specified where the YANG statement with the XPath expression is | |||
| defined. | defined. | |||
| 6.4.1.1. Examples | 6.4.1.1. Examples | |||
| Given the following module: | Given the following module: | |||
| module example-a { | module example-a { | |||
| skipping to change at page 143, line 36 | skipping to change at page 143, line 36 | |||
| AB // legal | AB // legal | |||
| 9A00 // legal | 9A00 // legal | |||
| and the following strings do not match: | and the following strings do not match: | |||
| 00ABAB // illegal, too long | 00ABAB // illegal, too long | |||
| xx00 // illegal, bad characters | xx00 // illegal, bad characters | |||
| With the following type: | With the following type: | |||
| typedef yang-identifier { | type string { | |||
| type string { | length "1..max"; | |||
| length "1..max"; | pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; | |||
| pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; | pattern '[xX][mM][lL].*' { | |||
| pattern '[xX][mM][lL].*' { | modifier invert-match; | |||
| modifier invert-match; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| the following string matches: | the following string matches: | |||
| enabled // legal | enabled // legal | |||
| and the following strings do not match: | and the following strings do not match: | |||
| 10-mbit // illegal, starts with a number | 10-mbit // illegal, starts with a number | |||
| skipping to change at page 198, line 38 | skipping to change at page 198, line 38 | |||
| prefix-arg = prefix | prefix-arg = prefix | |||
| prefix = identifier | prefix = identifier | |||
| identifier-arg-str = < a string that matches the rule > | identifier-arg-str = < a string that matches the rule > | |||
| < identifier-arg > | < identifier-arg > | |||
| identifier-arg = identifier | identifier-arg = identifier | |||
| ;; An identifier MUST NOT start with (('X'|'x') ('M'|'m') ('L'|'l')) | ||||
| identifier = (ALPHA / "_") | identifier = (ALPHA / "_") | |||
| *(ALPHA / DIGIT / "_" / "-" / ".") | *(ALPHA / DIGIT / "_" / "-" / ".") | |||
| identifier-ref-arg-str = < a string that matches the rule > | identifier-ref-arg-str = < a string that matches the rule > | |||
| < identifier-ref-arg > | < identifier-ref-arg > | |||
| identifier-ref-arg = identifier-ref | identifier-ref-arg = identifier-ref | |||
| identifier-ref = [prefix ":"] identifier | identifier-ref = [prefix ":"] identifier | |||
| skipping to change at page 204, line 40 | skipping to change at page 204, line 40 | |||
| <http://www.rfc-editor.org/info/rfc6241>. | <http://www.rfc-editor.org/info/rfc6241>. | |||
| [RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF", | [RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF", | |||
| RFC 7405, DOI 10.17487/RFC7405, December 2014, | RFC 7405, DOI 10.17487/RFC7405, December 2014, | |||
| <http://www.rfc-editor.org/info/rfc7405>. | <http://www.rfc-editor.org/info/rfc7405>. | |||
| [RFC7895] Bierman, A., Bjorklund, M., and K. Watsen, "YANG Module | [RFC7895] Bierman, A., Bjorklund, M., and K. Watsen, "YANG Module | |||
| Library", RFC 7895, DOI 10.17487/RFC7895, June 2016, | Library", RFC 7895, DOI 10.17487/RFC7895, June 2016, | |||
| <http://www.rfc-editor.org/info/rfc7895>. | <http://www.rfc-editor.org/info/rfc7895>. | |||
| [XML] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and | ||||
| F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth | ||||
| Edition)", W3C Recommendation REC-xml-20081126, November | ||||
| 2008, <https://www.w3.org/TR/2008/REC-xml-20081126/>. | ||||
| [XML-NAMES] | [XML-NAMES] | |||
| Bray, T., Hollander, D., Layman, A., Tobin, R., and H. | Bray, T., Hollander, D., Layman, A., Tobin, R., and H. | |||
| Thompson, "Namespaces in XML 1.0 (Third Edition)", World | Thompson, "Namespaces in XML 1.0 (Third Edition)", World | |||
| Wide Web Consortium Recommendation REC-xml-names-20091208, | Wide Web Consortium Recommendation REC-xml-names-20091208, | |||
| December 2009, | December 2009, | |||
| <http://www.w3.org/TR/2009/REC-xml-names-20091208>. | <http://www.w3.org/TR/2009/REC-xml-names-20091208>. | |||
| [XPATH] Clark, J. and S. DeRose, "XML Path Language (XPath) | [XPATH] Clark, J. and S. DeRose, "XML Path Language (XPath) | |||
| Version 1.0", World Wide Web Consortium Recommendation | Version 1.0", World Wide Web Consortium Recommendation | |||
| REC-xpath-19991116, November 1999, | REC-xpath-19991116, November 1999, | |||
| End of changes. 8 change blocks. | ||||
| 13 lines changed or deleted | 18 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||