draft-ietf-netmod-rfc6020bis-10.txt | draft-ietf-netmod-rfc6020bis-11.txt | |||
---|---|---|---|---|
Network Working Group M. Bjorklund, Ed. | Network Working Group M. Bjorklund, Ed. | |||
Internet-Draft Tail-f Systems | Internet-Draft Tail-f Systems | |||
Intended status: Standards Track February 4, 2016 | Intended status: Standards Track February 16, 2016 | |||
Expires: August 7, 2016 | Expires: August 19, 2016 | |||
The YANG 1.1 Data Modeling Language | The YANG 1.1 Data Modeling Language | |||
draft-ietf-netmod-rfc6020bis-10 | draft-ietf-netmod-rfc6020bis-11 | |||
Abstract | Abstract | |||
YANG is a data modeling language used to model configuration data, | YANG is a data modeling language used to model configuration data, | |||
state data, remote procedure calls, and notifications for network | state data, remote procedure calls, and notifications for network | |||
management protocols like the Network Configuration Protocol | management protocols like the Network Configuration Protocol | |||
(NETCONF). | (NETCONF). | |||
Status of This Memo | Status of This Memo | |||
skipping to change at page 1, line 33 | skipping to change at page 1, line 33 | |||
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 August 7, 2016. | This Internet-Draft will expire on August 19, 2016. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 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 10, line 13 | skipping to change at page 10, line 13 | |||
Section 9.9.2). | Section 9.9.2). | |||
o Allow identities to be derived from multiple base identities (see | o Allow identities to be derived from multiple base identities (see | |||
Section 7.18 and Section 9.10). | Section 7.18 and Section 9.10). | |||
o Allow enumerations and bits to be subtyped (see Section 9.6 and | o Allow enumerations and bits to be subtyped (see Section 9.6 and | |||
Section 9.7). | Section 9.7). | |||
o Allow leaf-lists to have default values (see Section 7.7.2). | o Allow leaf-lists to have default values (see Section 7.7.2). | |||
o Allow non-unique values in non-configuration leaf-lists (see | ||||
Section 7.7). | ||||
o Use [RFC7405] syntax for case-sensitive strings in the grammar. | o Use [RFC7405] syntax for case-sensitive strings in the grammar. | |||
o Changed the module advertisement mechanism (see Section 5.6.5). | o Changed the module advertisement mechanism (see Section 5.6.5). | |||
o Changed the scoping rules for definitions in submodules. A | o Changed the scoping rules for definitions in submodules. A | |||
submodule can now reference all definitions in all submodules that | submodule can now reference all definitions in all submodules that | |||
belong to the same module, without using the "include" statement. | belong to the same module, without using the "include" statement. | |||
o Added a new statement "action" that is used to define operations | o Added a new statement "action" that is used to define operations | |||
tied to data nodes. | tied to data nodes. | |||
skipping to change at page 142, line 14 | skipping to change at page 142, line 14 | |||
"White_Space" property). The use of Unicode control codes SHOULD be | "White_Space" property). The use of Unicode control codes SHOULD be | |||
avoided. | avoided. | |||
The statement is optionally followed by a block of substatements that | The statement is optionally followed by a block of substatements that | |||
holds detailed enum information. | holds detailed enum information. | |||
All assigned names in an enumeration MUST be unique. | All assigned names in an enumeration MUST be unique. | |||
When an existing enumeration type is restricted, the set of assigned | When an existing enumeration type is restricted, the set of assigned | |||
names in the new type MUST be a subset of the base type's set of | names in the new type MUST be a subset of the base type's set of | |||
assigned names. The value of such an assigned name MUST not be | assigned names. The value of such an assigned name MUST NOT be | |||
changed. | changed. | |||
9.6.4.1. The enum's Substatements | 9.6.4.1. The enum's Substatements | |||
+--------------+---------+-------------+ | +--------------+---------+-------------+ | |||
| substatement | section | cardinality | | | substatement | section | cardinality | | |||
+--------------+---------+-------------+ | +--------------+---------+-------------+ | |||
| description | 7.21.3 | 0..1 | | | description | 7.21.3 | 0..1 | | |||
| if-feature | 7.20.2 | 0..n | | | if-feature | 7.20.2 | 0..n | | |||
| reference | 7.21.4 | 0..1 | | | reference | 7.21.4 | 0..1 | | |||
skipping to change at page 144, line 35 | skipping to change at page 144, line 35 | |||
} | } | |||
9.7. The bits Built-In Type | 9.7. The bits Built-In Type | |||
The bits built-in type represents a bit set. That is, a bits value | The bits built-in type represents a bit set. That is, a bits value | |||
is a set of flags identified by small integer position numbers | is a set of flags identified by small integer position numbers | |||
starting at 0. Each bit number has an assigned name. | starting at 0. Each bit number has an assigned name. | |||
When an existing bits type is restricted, the set of assigned names | When an existing bits type is restricted, the set of assigned names | |||
in the new type MUST be a subset of the base type's set of assigned | in the new type MUST be a subset of the base type's set of assigned | |||
names. The bit position of such an assigned name MUST not be | names. The bit position of such an assigned name MUST NOT be | |||
changed. | changed. | |||
9.7.1. Restrictions | 9.7.1. Restrictions | |||
A bits type can be restricted with the "bit" (Section 9.7.4) | A bits type can be restricted with the "bit" (Section 9.7.4) | |||
statement. | statement. | |||
9.7.2. Lexical Representation | 9.7.2. Lexical Representation | |||
The lexical representation of the bits type is a space-separated list | The lexical representation of the bits type is a space-separated list | |||
skipping to change at page 192, line 46 | skipping to change at page 192, line 46 | |||
;; leafref path | ;; leafref path | |||
path-arg-str = < a string that matches the rule > | path-arg-str = < a string that matches the rule > | |||
< path-arg > | < path-arg > | |||
path-arg = absolute-path / relative-path | path-arg = absolute-path / relative-path | |||
absolute-path = 1*("/" (node-identifier *path-predicate)) | absolute-path = 1*("/" (node-identifier *path-predicate)) | |||
relative-path = 1*(".." "/") descendant-path | relative-path = 1*("../") descendant-path | |||
descendant-path = node-identifier | descendant-path = node-identifier | |||
[*path-predicate absolute-path] | [*path-predicate absolute-path] | |||
path-predicate = "[" *WSP path-equality-expr *WSP "]" | path-predicate = "[" *WSP path-equality-expr *WSP "]" | |||
path-equality-expr = node-identifier *WSP "=" *WSP path-key-expr | path-equality-expr = node-identifier *WSP "=" *WSP path-key-expr | |||
path-key-expr = current-function-invocation *WSP "/" *WSP | path-key-expr = current-function-invocation *WSP "/" *WSP | |||
rel-path-keyexpr | rel-path-keyexpr | |||
rel-path-keyexpr = 1*(".." *WSP "/" *WSP) | rel-path-keyexpr = 1*(".." *WSP "/" *WSP) | |||
*(node-identifier *WSP "/" *WSP) | *(node-identifier *WSP "/" *WSP) | |||
node-identifier | node-identifier | |||
;;; Keywords, using RFC 7405 syntax for case-sensitive strings | ;;; Keywords, using RFC 7405 syntax for case-sensitive strings | |||
;; statement keywords | ;; statement keywords | |||
action-keyword = %s"action" | action-keyword = %s"action" | |||
anydata-keyword = %s"anydata" | anydata-keyword = %s"anydata" | |||
anyxml-keyword = %s"anyxml" | anyxml-keyword = %s"anyxml" | |||
argument-keyword = %s"argument" | argument-keyword = %s"argument" | |||
augment-keyword = %s"augment" | augment-keyword = %s"augment" | |||
base-keyword = %s"base" | base-keyword = %s"base" | |||
belongs-to-keyword = %s"belongs-to" | belongs-to-keyword = %s"belongs-to" | |||
bit-keyword = %s"bit" | bit-keyword = %s"bit" | |||
case-keyword = %s"case" | case-keyword = %s"case" | |||
choice-keyword = %s"choice" | choice-keyword = %s"choice" | |||
config-keyword = %s"config" | config-keyword = %s"config" | |||
contact-keyword = %s"contact" | contact-keyword = %s"contact" | |||
container-keyword = %s"container" | container-keyword = %s"container" | |||
default-keyword = %s"default" | default-keyword = %s"default" | |||
description-keyword = %s"description" | description-keyword = %s"description" | |||
enum-keyword = %s"enum" | enum-keyword = %s"enum" | |||
error-app-tag-keyword = %s"error-app-tag" | error-app-tag-keyword = %s"error-app-tag" | |||
error-message-keyword = %s"error-message" | error-message-keyword = %s"error-message" | |||
extension-keyword = %s"extension" | extension-keyword = %s"extension" | |||
deviation-keyword = %s"deviation" | deviation-keyword = %s"deviation" | |||
deviate-keyword = %s"deviate" | deviate-keyword = %s"deviate" | |||
feature-keyword = %s"feature" | feature-keyword = %s"feature" | |||
fraction-digits-keyword = %s"fraction-digits" | fraction-digits-keyword = %s"fraction-digits" | |||
grouping-keyword = %s"grouping" | grouping-keyword = %s"grouping" | |||
identity-keyword = %s"identity" | identity-keyword = %s"identity" | |||
if-feature-keyword = %s"if-feature" | if-feature-keyword = %s"if-feature" | |||
import-keyword = %s"import" | import-keyword = %s"import" | |||
include-keyword = %s"include" | include-keyword = %s"include" | |||
input-keyword = %s"input" | input-keyword = %s"input" | |||
key-keyword = %s"key" | key-keyword = %s"key" | |||
leaf-keyword = %s"leaf" | leaf-keyword = %s"leaf" | |||
leaf-list-keyword = %s"leaf-list" | leaf-list-keyword = %s"leaf-list" | |||
length-keyword = %s"length" | length-keyword = %s"length" | |||
list-keyword = %s"list" | list-keyword = %s"list" | |||
mandatory-keyword = %s"mandatory" | mandatory-keyword = %s"mandatory" | |||
max-elements-keyword = %s"max-elements" | max-elements-keyword = %s"max-elements" | |||
min-elements-keyword = %s"min-elements" | min-elements-keyword = %s"min-elements" | |||
modifier-keyword = %s"modifier" | modifier-keyword = %s"modifier" | |||
module-keyword = %s"module" | module-keyword = %s"module" | |||
must-keyword = %s"must" | must-keyword = %s"must" | |||
namespace-keyword = %s"namespace" | namespace-keyword = %s"namespace" | |||
notification-keyword= %s"notification" | notification-keyword = %s"notification" | |||
ordered-by-keyword = %s"ordered-by" | ordered-by-keyword = %s"ordered-by" | |||
organization-keyword= %s"organization" | organization-keyword = %s"organization" | |||
output-keyword = %s"output" | output-keyword = %s"output" | |||
path-keyword = %s"path" | path-keyword = %s"path" | |||
pattern-keyword = %s"pattern" | pattern-keyword = %s"pattern" | |||
position-keyword = %s"position" | position-keyword = %s"position" | |||
prefix-keyword = %s"prefix" | prefix-keyword = %s"prefix" | |||
presence-keyword = %s"presence" | presence-keyword = %s"presence" | |||
range-keyword = %s"range" | range-keyword = %s"range" | |||
reference-keyword = %s"reference" | reference-keyword = %s"reference" | |||
refine-keyword = %s"refine" | refine-keyword = %s"refine" | |||
require-instance-keyword = %s"require-instance" | require-instance-keyword = %s"require-instance" | |||
revision-keyword = %s"revision" | revision-keyword = %s"revision" | |||
revision-date-keyword = %s"revision-date" | revision-date-keyword = %s"revision-date" | |||
rpc-keyword = %s"rpc" | rpc-keyword = %s"rpc" | |||
status-keyword = %s"status" | status-keyword = %s"status" | |||
submodule-keyword = %s"submodule" | submodule-keyword = %s"submodule" | |||
type-keyword = %s"type" | type-keyword = %s"type" | |||
typedef-keyword = %s"typedef" | typedef-keyword = %s"typedef" | |||
unique-keyword = %s"unique" | unique-keyword = %s"unique" | |||
units-keyword = %s"units" | units-keyword = %s"units" | |||
uses-keyword = %s"uses" | uses-keyword = %s"uses" | |||
value-keyword = %s"value" | value-keyword = %s"value" | |||
when-keyword = %s"when" | when-keyword = %s"when" | |||
yang-version-keyword= %s"yang-version" | yang-version-keyword = %s"yang-version" | |||
yin-element-keyword = %s"yin-element" | yin-element-keyword = %s"yin-element" | |||
;; other keywords | ;; other keywords | |||
add-keyword = %s"add" | add-keyword = %s"add" | |||
current-keyword = %s"current" | current-keyword = %s"current" | |||
delete-keyword = %s"delete" | delete-keyword = %s"delete" | |||
deprecated-keyword = %s"deprecated" | deprecated-keyword = %s"deprecated" | |||
false-keyword = %s"false" | false-keyword = %s"false" | |||
invert-match-keyword = %s"invert-match" | invert-match-keyword = %s"invert-match" | |||
max-keyword = %s"max" | max-keyword = %s"max" | |||
min-keyword = %s"min" | min-keyword = %s"min" | |||
not-supported-keyword = %s"not-supported" | not-supported-keyword = %s"not-supported" | |||
obsolete-keyword = %s"obsolete" | obsolete-keyword = %s"obsolete" | |||
replace-keyword = %s"replace" | replace-keyword = %s"replace" | |||
system-keyword = %s"system" | system-keyword = %s"system" | |||
true-keyword = %s"true" | true-keyword = %s"true" | |||
unbounded-keyword = %s"unbounded" | unbounded-keyword = %s"unbounded" | |||
user-keyword = %s"user" | user-keyword = %s"user" | |||
and-keyword = %s"and" | and-keyword = %s"and" | |||
or-keyword = %s"or" | or-keyword = %s"or" | |||
not-keyword = %s"not" | not-keyword = %s"not" | |||
current-function-invocation = current-keyword *WSP "(" *WSP ")" | current-function-invocation = current-keyword *WSP "(" *WSP ")" | |||
;;; Basic Rules | ;;; Basic Rules | |||
prefix-arg-str = < a string that matches the rule > | prefix-arg-str = < a string that matches the rule > | |||
< prefix-arg > | < prefix-arg > | |||
prefix-arg = prefix | prefix-arg = prefix | |||
skipping to change at page 195, line 49 | skipping to change at page 195, line 49 | |||
string = < an unquoted string as returned by > | string = < an unquoted string as returned by > | |||
< the scanner, that matches the rule > | < the scanner, that matches the rule > | |||
< yang-string > | < yang-string > | |||
yang-string = *yang-char | yang-string = *yang-char | |||
;; any Unicode or ISO/IEC 10646 character including tab, carriage | ;; any Unicode or ISO/IEC 10646 character including tab, carriage | |||
;; return, and line feed, but excluding the other C0 control | ;; return, and line feed, but excluding the other C0 control | |||
;; characters, the surrogate blocks, and the noncharacters. | ;; characters, the surrogate blocks, and the noncharacters. | |||
yang-char = %x9 / %xA / %xD / %x20-D7FF / | yang-char = %x09 / %x0A / %x0D / %x20-D7FF / | |||
; exclude surrogate blocks %xD800-DFFF | ; exclude surrogate blocks %xD800-DFFF | |||
%xE000-FDCF / ; exclude noncharacters %xFDD0-FDEF | %xE000-FDCF / ; exclude noncharacters %xFDD0-FDEF | |||
%xFDF0-FFFD / ; exclude noncharacters %xFFFE-FFFF | %xFDF0-FFFD / ; exclude noncharacters %xFFFE-FFFF | |||
%x10000-1FFFD / ; exclude noncharacters %x1FFFE-1FFFF | %x10000-1FFFD / ; exclude noncharacters %x1FFFE-1FFFF | |||
%x20000-2FFFD / ; exclude noncharacters %x2FFFE-2FFFF | %x20000-2FFFD / ; exclude noncharacters %x2FFFE-2FFFF | |||
%x30000-3FFFD / ; exclude noncharacters %x3FFFE-3FFFF | %x30000-3FFFD / ; exclude noncharacters %x3FFFE-3FFFF | |||
%x40000-4FFFD / ; exclude noncharacters %x4FFFE-4FFFF | %x40000-4FFFD / ; exclude noncharacters %x4FFFE-4FFFF | |||
%x50000-5FFFD / ; exclude noncharacters %x5FFFE-5FFFF | %x50000-5FFFD / ; exclude noncharacters %x5FFFE-5FFFF | |||
%x60000-6FFFD / ; exclude noncharacters %x6FFFE-6FFFF | %x60000-6FFFD / ; exclude noncharacters %x6FFFE-6FFFF | |||
%x70000-7FFFD / ; exclude noncharacters %x7FFFE-7FFFF | %x70000-7FFFD / ; exclude noncharacters %x7FFFE-7FFFF | |||
skipping to change at page 196, line 47 | skipping to change at page 196, line 47 | |||
stmtsep = *(WSP / line-break / unknown-statement) | stmtsep = *(WSP / line-break / unknown-statement) | |||
line-break = CRLF / LF | line-break = CRLF / LF | |||
non-zero-digit = %x31-39 | non-zero-digit = %x31-39 | |||
decimal-value = integer-value ("." zero-integer-value) | decimal-value = integer-value ("." zero-integer-value) | |||
SQUOTE = %x27 | SQUOTE = %x27 | |||
; ' (Single Quote) | ; single quote | |||
;;; RFC 5234 core rules. | ;;; RFC 5234 core rules. | |||
ALPHA = %x41-5A / %x61-7A | ALPHA = %x41-5A / %x61-7A | |||
; A-Z / a-z | ; A-Z / a-z | |||
CR = %x0D | CR = %x0D | |||
; carriage return | ; carriage return | |||
CRLF = CR LF | CRLF = CR LF | |||
skipping to change at page 199, line 44 | skipping to change at page 199, line 44 | |||
refers to a non-existing instance, the following error is returned: | refers to a non-existing instance, the following error is returned: | |||
error-tag: bad-attribute | error-tag: bad-attribute | |||
error-app-tag: missing-instance | error-app-tag: missing-instance | |||
16. IANA Considerations | 16. IANA Considerations | |||
This document registers one capability identifier URN from the | This document registers one capability identifier URN from the | |||
"Network Configuration Protocol (NETCONF) Capability URNs" registry: | "Network Configuration Protocol (NETCONF) Capability URNs" registry: | |||
urn:ietf:params:netconf:capability:yang-library:1.0 | Index Capability Identifier | |||
------------- --------------------------------------------------- | ||||
:yang-library urn:ietf:params:netconf:capability:yang-library:1.0 | ||||
17. Security Considerations | 17. Security Considerations | |||
This document defines a language with which to write and read | This document defines a language with which to write and read | |||
descriptions of management information. The language itself has no | descriptions of management information. The language itself has no | |||
security impact on the Internet. | security impact on the Internet. | |||
The same considerations are relevant as for the base NETCONF protocol | The same considerations are relevant as for the base NETCONF protocol | |||
(see [RFC6241], Section 9). | (see [RFC6241], Section 9). | |||
End of changes. 14 change blocks. | ||||
95 lines changed or deleted | 100 lines changed or added | |||
This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |