225 lines
7.6 KiB
YANG
225 lines
7.6 KiB
YANG
|
module ietf-yang-schema-mount {
|
||
|
yang-version 1.1;
|
||
|
namespace "urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount";
|
||
|
prefix yangmnt;
|
||
|
|
||
|
import ietf-inet-types {
|
||
|
prefix inet;
|
||
|
reference
|
||
|
"RFC 6991: Common YANG Data Types";
|
||
|
}
|
||
|
|
||
|
import ietf-yang-types {
|
||
|
prefix yang;
|
||
|
reference
|
||
|
"RFC 6991: Common YANG Data Types";
|
||
|
}
|
||
|
|
||
|
organization
|
||
|
"IETF NETMOD (NETCONF Data Modeling Language) Working Group";
|
||
|
|
||
|
contact
|
||
|
"WG Web: <https://datatracker.ietf.org/wg/netmod/>
|
||
|
WG List: <mailto:netmod@ietf.org>
|
||
|
|
||
|
Editor: Martin Bjorklund
|
||
|
<mailto:mbj@tail-f.com>
|
||
|
|
||
|
Editor: Ladislav Lhotka
|
||
|
<mailto:lhotka@nic.cz>";
|
||
|
|
||
|
description
|
||
|
"This module defines a YANG extension statement that can be used
|
||
|
to incorporate data models defined in other YANG modules in a
|
||
|
module. It also defines operational state data that specify the
|
||
|
overall structure of the data model.
|
||
|
|
||
|
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) 2019 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
|
||
|
(https://trustee.ietf.org/license-info).
|
||
|
|
||
|
This version of this YANG module is part of RFC 8528;
|
||
|
see the RFC itself for full legal notices.";
|
||
|
|
||
|
revision 2019-01-14 {
|
||
|
description
|
||
|
"Initial revision.";
|
||
|
reference
|
||
|
"RFC 8528: YANG Schema Mount";
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Extensions
|
||
|
*/
|
||
|
|
||
|
extension mount-point {
|
||
|
argument label;
|
||
|
description
|
||
|
"The argument 'label' is a YANG identifier, i.e., it is of the
|
||
|
type 'yang:yang-identifier'.
|
||
|
|
||
|
The 'mount-point' statement MUST NOT be used in a YANG
|
||
|
version 1 module, neither explicitly nor via a 'uses'
|
||
|
statement.
|
||
|
The 'mount-point' statement MAY be present as a substatement
|
||
|
of 'container' and 'list' and MUST NOT be present elsewhere.
|
||
|
There MUST NOT be more than one 'mount-point' statement in a
|
||
|
given 'container' or 'list' statement.
|
||
|
|
||
|
If a mount point is defined within a grouping, its label is
|
||
|
bound to the module where the grouping is used.
|
||
|
|
||
|
A mount point defines a place in the node hierarchy where
|
||
|
other data models may be attached. A server that implements a
|
||
|
module with a mount point populates the
|
||
|
'/schema-mounts/mount-point' list with detailed information on
|
||
|
which data models are mounted at each mount point.
|
||
|
|
||
|
Note that the 'mount-point' statement does not define a new
|
||
|
data node.";
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* State data nodes
|
||
|
*/
|
||
|
|
||
|
container schema-mounts {
|
||
|
config false;
|
||
|
description
|
||
|
"Contains information about the structure of the overall
|
||
|
mounted data model implemented in the server.";
|
||
|
list namespace {
|
||
|
key "prefix";
|
||
|
description
|
||
|
"This list provides a mapping of namespace prefixes that are
|
||
|
used in XPath expressions of 'parent-reference' leafs to the
|
||
|
corresponding namespace URI references.";
|
||
|
leaf prefix {
|
||
|
type yang:yang-identifier;
|
||
|
description
|
||
|
"Namespace prefix.";
|
||
|
}
|
||
|
leaf uri {
|
||
|
type inet:uri;
|
||
|
description
|
||
|
"Namespace URI reference.";
|
||
|
}
|
||
|
}
|
||
|
list mount-point {
|
||
|
key "module label";
|
||
|
|
||
|
description
|
||
|
"Each entry of this list specifies a schema for a particular
|
||
|
mount point.
|
||
|
|
||
|
Each mount point MUST be defined using the 'mount-point'
|
||
|
extension in one of the modules listed in the server's
|
||
|
YANG library instance with conformance type 'implement'.";
|
||
|
leaf module {
|
||
|
type yang:yang-identifier;
|
||
|
description
|
||
|
"Name of a module containing the mount point.";
|
||
|
}
|
||
|
leaf label {
|
||
|
type yang:yang-identifier;
|
||
|
description
|
||
|
"Label of the mount point defined using the 'mount-point'
|
||
|
extension.";
|
||
|
}
|
||
|
leaf config {
|
||
|
type boolean;
|
||
|
default "true";
|
||
|
description
|
||
|
"If this leaf is set to 'false', then all data nodes in the
|
||
|
mounted schema are read-only ('config false'), regardless
|
||
|
of their 'config' property.";
|
||
|
}
|
||
|
choice schema-ref {
|
||
|
mandatory true;
|
||
|
description
|
||
|
"Alternatives for specifying the schema.";
|
||
|
container inline {
|
||
|
presence
|
||
|
"A complete self-contained schema is mounted at the
|
||
|
mount point.";
|
||
|
description
|
||
|
"This node indicates that the server has mounted at least
|
||
|
the module 'ietf-yang-library' at the mount point, and
|
||
|
its instantiation provides the information about the
|
||
|
mounted schema.
|
||
|
|
||
|
Different instances of the mount point may have
|
||
|
different schemas mounted.";
|
||
|
}
|
||
|
container shared-schema {
|
||
|
presence
|
||
|
"The mounted schema together with the 'parent-reference'
|
||
|
make up the schema for this mount point.";
|
||
|
|
||
|
description
|
||
|
"This node indicates that the server has mounted at least
|
||
|
the module 'ietf-yang-library' at the mount point, and
|
||
|
its instantiation provides the information about the
|
||
|
mounted schema. When XPath expressions in the mounted
|
||
|
schema are evaluated, the 'parent-reference' leaf-list
|
||
|
is taken into account.
|
||
|
|
||
|
Different instances of the mount point MUST have the
|
||
|
same schema mounted.";
|
||
|
leaf-list parent-reference {
|
||
|
type yang:xpath1.0;
|
||
|
description
|
||
|
"Entries of this leaf-list are XPath 1.0 expressions
|
||
|
that are evaluated in the following context:
|
||
|
|
||
|
- The context node is the node in the parent data tree
|
||
|
where the mount-point is defined.
|
||
|
|
||
|
- The accessible tree is the parent data tree
|
||
|
*without* any nodes defined in modules that are
|
||
|
mounted inside the parent schema.
|
||
|
|
||
|
- The context position and context size are both equal
|
||
|
to 1.
|
||
|
|
||
|
- The set of variable bindings is empty.
|
||
|
|
||
|
- The function library is the core function library
|
||
|
defined in the W3C XPath 1.0 document
|
||
|
(http://www.w3.org/TR/1999/REC-xpath-19991116) and
|
||
|
the functions defined in Section 10 of RFC 7950.
|
||
|
|
||
|
- The set of namespace declarations is defined by the
|
||
|
'namespace' list under 'schema-mounts'.
|
||
|
|
||
|
Each XPath expression MUST evaluate to a node-set
|
||
|
(possibly empty). For the purposes of evaluating
|
||
|
XPath expressions whose context nodes are defined in
|
||
|
the mounted schema, the union of all these node-sets
|
||
|
together with ancestor nodes are added to the
|
||
|
accessible data tree.
|
||
|
|
||
|
Note that in the case 'ietf-yang-schema-mount' is
|
||
|
itself mounted, a 'parent-reference' in the mounted
|
||
|
module may refer to nodes that were brought into the
|
||
|
accessible tree through a 'parent-reference' in the
|
||
|
parent schema.";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|