207 lines
7.4 KiB
YANG
207 lines
7.4 KiB
YANG
|
module ietf-yang-structure-ext {
|
||
|
yang-version 1.1;
|
||
|
namespace "urn:ietf:params:xml:ns:yang:ietf-yang-structure-ext";
|
||
|
prefix sx;
|
||
|
|
||
|
organization
|
||
|
"IETF NETMOD (NETCONF Data Modeling Language) Working Group";
|
||
|
contact
|
||
|
"WG Web: <https://datatracker.ietf.org/wg/netmod/>
|
||
|
WG List: <mailto:netmod@ietf.org>
|
||
|
|
||
|
Author: Andy Bierman
|
||
|
<mailto:andy@yumaworks.com>
|
||
|
|
||
|
Author: Martin Bjorklund
|
||
|
<mailto:mbj+ietf@4668.se>
|
||
|
|
||
|
Author: Kent Watsen
|
||
|
<mailto:kent+ietf@watsen.net>";
|
||
|
description
|
||
|
"This module contains conceptual YANG specifications for defining
|
||
|
abstract data structures.
|
||
|
|
||
|
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
|
||
|
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
|
||
|
'MAY', and 'OPTIONAL' in this document are to be interpreted as
|
||
|
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
|
||
|
they appear in all capitals, as shown here.
|
||
|
|
||
|
Copyright (c) 2020 IETF Trust and the persons identified as
|
||
|
authors of the code. All rights reserved.
|
||
|
|
||
|
Redistribution and use in source and binary forms, with or
|
||
|
without modification, is permitted pursuant to, and subject to
|
||
|
the license terms contained in, the Simplified BSD License set
|
||
|
forth in Section 4.c of the IETF Trust's Legal Provisions
|
||
|
Relating to IETF Documents
|
||
|
(http://trustee.ietf.org/license-info).
|
||
|
|
||
|
This version of this YANG module is part of RFC 8791
|
||
|
(https://www.rfc-editor.org/info/rfc8791); see the RFC itself
|
||
|
for full legal notices.";
|
||
|
|
||
|
revision 2020-06-17 {
|
||
|
description
|
||
|
"Initial revision.";
|
||
|
reference
|
||
|
"RFC 8791: YANG Data Structure Extensions.";
|
||
|
}
|
||
|
|
||
|
extension structure {
|
||
|
argument name {
|
||
|
yin-element true;
|
||
|
}
|
||
|
description
|
||
|
"This extension is used to specify a YANG data structure that
|
||
|
represents conceptual data defined in YANG. It is intended to
|
||
|
describe hierarchical data independent of protocol context or
|
||
|
specific message encoding format. Data definition statements
|
||
|
within a 'structure' extension statement specify the generic
|
||
|
syntax for the specific YANG data structure, whose name is the
|
||
|
argument of the 'structure' extension statement.
|
||
|
|
||
|
Note that this extension does not define a media type. A
|
||
|
specification using this extension MUST specify the message
|
||
|
encoding rules, including the content media type, if
|
||
|
applicable.
|
||
|
|
||
|
The mandatory 'name' parameter value identifies the YANG data
|
||
|
structure that is being defined.
|
||
|
|
||
|
This extension is only valid as a top-level statement, i.e.,
|
||
|
given as a substatement to 'module' or 'submodule'.
|
||
|
|
||
|
The substatements of this extension MUST follow the ABNF
|
||
|
rules below, where the rules are defined in RFC 7950:
|
||
|
|
||
|
*must-stmt
|
||
|
[status-stmt]
|
||
|
[description-stmt]
|
||
|
[reference-stmt]
|
||
|
*(typedef-stmt / grouping-stmt)
|
||
|
*data-def-stmt
|
||
|
|
||
|
A YANG data structure defined with this extension statement is
|
||
|
encoded in the same way as an 'anydata' node. This means
|
||
|
that the name of the structure is encoded as a 'container',
|
||
|
with the instantiated child statements encoded as child nodes
|
||
|
to this node.
|
||
|
|
||
|
The module name and namespace value for the YANG module using
|
||
|
the extension statement are assigned to each of the data
|
||
|
definition statements resulting from the YANG data structure.
|
||
|
|
||
|
The XPath document element is the extension statement itself,
|
||
|
such that the child nodes of the document element are
|
||
|
represented by the data-def-stmt substatements within this
|
||
|
extension. This conceptual document is the context for the
|
||
|
following YANG statements:
|
||
|
|
||
|
- must-stmt
|
||
|
- when-stmt
|
||
|
- path-stmt
|
||
|
- min-elements-stmt
|
||
|
- max-elements-stmt
|
||
|
- mandatory-stmt
|
||
|
- unique-stmt
|
||
|
- ordered-by
|
||
|
- instance-identifier data type
|
||
|
|
||
|
The following data-def-stmt substatements are constrained
|
||
|
when used within a 'structure' extension statement.
|
||
|
|
||
|
- The list-stmt is not required to have a key-stmt defined.
|
||
|
- The config-stmt is ignored if present.
|
||
|
";
|
||
|
}
|
||
|
|
||
|
extension augment-structure {
|
||
|
argument path {
|
||
|
yin-element true;
|
||
|
}
|
||
|
description
|
||
|
"This extension is used to specify an augmentation to a YANG
|
||
|
data structure defined with the 'structure' statement. It is
|
||
|
intended to describe hierarchical data independent of protocol
|
||
|
context or specific message encoding format.
|
||
|
|
||
|
This statement has almost the same structure as the
|
||
|
'augment-stmt'. Data definition statements within this
|
||
|
statement specify the semantics and generic syntax for the
|
||
|
additional data to be added to the specific YANG data
|
||
|
structure, identified by the 'path' argument.
|
||
|
|
||
|
The mandatory 'path' parameter value identifies the YANG
|
||
|
conceptual data node that is being augmented and is
|
||
|
represented as an absolute-schema-nodeid string, where the
|
||
|
first node in the absolute-schema-nodeid string identifies the
|
||
|
YANG data structure to augment, and the rest of the nodes in
|
||
|
the string identifies the node within the YANG structure to
|
||
|
augment.
|
||
|
|
||
|
This extension is only valid as a top-level statement, i.e.,
|
||
|
given as a substatement to 'module' or 'submodule'.
|
||
|
|
||
|
The substatements of this extension MUST follow the ABNF
|
||
|
rules below, where the rules are defined in RFC 7950:
|
||
|
|
||
|
[status-stmt]
|
||
|
[description-stmt]
|
||
|
[reference-stmt]
|
||
|
1*(data-def-stmt / case-stmt)
|
||
|
|
||
|
The module name and namespace value for the YANG module using
|
||
|
the extension statement are assigned to instance document data
|
||
|
conforming to the data definition statements within this
|
||
|
extension.
|
||
|
|
||
|
The XPath document element is the augmented extension
|
||
|
statement itself, such that the child nodes of the document
|
||
|
element are represented by the data-def-stmt substatements
|
||
|
within the augmented 'structure' statement.
|
||
|
|
||
|
The context node of the 'augment-structure' statement is
|
||
|
derived in the same way as the 'augment' statement, as defined
|
||
|
in Section 6.4.1 of [RFC7950]. This conceptual node is
|
||
|
considered the context node for the following YANG statements:
|
||
|
|
||
|
- must-stmt
|
||
|
- when-stmt
|
||
|
- path-stmt
|
||
|
- min-elements-stmt
|
||
|
- max-elements-stmt
|
||
|
- mandatory-stmt
|
||
|
- unique-stmt
|
||
|
- ordered-by
|
||
|
- instance-identifier data type
|
||
|
|
||
|
The following data-def-stmt substatements are constrained
|
||
|
when used within an 'augment-structure' extension statement.
|
||
|
|
||
|
- The list-stmt is not required to have a key-stmt defined.
|
||
|
- The config-stmt is ignored if present.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
module foo {
|
||
|
import ietf-yang-structure-ext { prefix sx; }
|
||
|
|
||
|
sx:structure foo-data {
|
||
|
container foo-con { }
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module bar {
|
||
|
import ietf-yang-structure-ext { prefix sx; }
|
||
|
import foo { prefix foo; }
|
||
|
|
||
|
sx:augment-structure /foo:foo-data/foo:foo-con {
|
||
|
leaf add-leaf1 { type int32; }
|
||
|
leaf add-leaf2 { type string; }
|
||
|
}
|
||
|
}
|
||
|
";
|
||
|
}
|
||
|
}
|