* Added -o "<option>=<value>" command-line option to all programs: backend, cli, netconf, restconf.
* Added -p <dir> command-line option to all programs: backend, cli, netconf, restconf. * Moved and updated all standard ietf and iana yang files from example and yang/ to `yang/standard`. * Renamed example yang from example.yang -> clixon-example.yang
This commit is contained in:
parent
f48c8f45c6
commit
0267afcb21
80 changed files with 2473 additions and 9505 deletions
76
yang/standard/Makefile.in
Normal file
76
yang/standard/Makefile.in
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
#
|
||||
# ***** BEGIN LICENSE BLOCK *****
|
||||
#
|
||||
# Copyright (C) 2009-2019 Olof Hagsand and Benny Holmgren
|
||||
#
|
||||
# This file is part of CLIXON
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the terms of
|
||||
# the GNU General Public License Version 3 or later (the "GPL"),
|
||||
# in which case the provisions of the GPL are applicable instead
|
||||
# of those above. If you wish to allow use of your version of this file only
|
||||
# under the terms of the GPL, and not to allow others to
|
||||
# use your version of this file under the terms of Apache License version 2,
|
||||
# indicate your decision by deleting the provisions above and replace them with
|
||||
# the notice and other provisions required by the GPL. If you do not delete
|
||||
# the provisions above, a recipient may use your version of this file under
|
||||
# the terms of any one of the Apache License version 2 or the GPL.
|
||||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
#
|
||||
VPATH = @srcdir@
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
prefix = @prefix@
|
||||
bindir = @bindir@
|
||||
includedir = @includedir@
|
||||
datarootdir = @datarootdir@
|
||||
|
||||
# Could place them in separate standards dir?
|
||||
CLIXON_DATADIR = @CLIXON_DATADIR@
|
||||
|
||||
YANGSPECS = iana-if-type@2014-05-08.yang
|
||||
YANGSPECS += ietf-interfaces@2018-02-20.yang
|
||||
YANGSPECS += ietf-yang-types@2013-07-15.yang
|
||||
YANGSPECS += ietf-ip@2014-06-16.yang
|
||||
YANGSPECS += ietf-inet-types@2013-07-15.yang
|
||||
YANGSPECS += ietf-routing@2018-03-13.yang
|
||||
YANGSPECS += ietf-yang-library@2016-06-21.yang
|
||||
YANGSPECS += ietf-netconf@2011-06-01.yang
|
||||
YANGSPECS += ietf-netconf-acm@2018-02-14.yang
|
||||
YANGSPECS += ietf-restconf-monitoring@2017-01-26.yang
|
||||
YANGSPECS += ietf-netconf-monitoring@2010-10-04.yang
|
||||
|
||||
all:
|
||||
|
||||
clean:
|
||||
|
||||
distclean: clean
|
||||
rm -f Makefile *~ .depend
|
||||
|
||||
install: $(YANGSPECS)
|
||||
install -d -m 0755 $(DESTDIR)$(CLIXON_DATADIR)
|
||||
install -m 0644 $(YANGSPECS) $(DESTDIR)$(CLIXON_DATADIR)
|
||||
|
||||
uninstall:
|
||||
(cd $(DESTDIR)$(CLIXON_DATADIR); rm -rf *.yang)
|
||||
|
||||
install-include:
|
||||
|
||||
depend:
|
||||
|
||||
|
||||
#include .depend
|
||||
|
||||
1506
yang/standard/iana-if-type@2014-05-08.yang
Normal file
1506
yang/standard/iana-if-type@2014-05-08.yang
Normal file
File diff suppressed because it is too large
Load diff
457
yang/standard/ietf-inet-types@2013-07-15.yang
Normal file
457
yang/standard/ietf-inet-types@2013-07-15.yang
Normal file
|
|
@ -0,0 +1,457 @@
|
|||
module ietf-inet-types {
|
||||
|
||||
namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
|
||||
prefix "inet";
|
||||
|
||||
organization
|
||||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group";
|
||||
|
||||
contact
|
||||
"WG Web: <http://tools.ietf.org/wg/netmod/>
|
||||
WG List: <mailto:netmod@ietf.org>
|
||||
|
||||
WG Chair: David Kessens
|
||||
<mailto:david.kessens@nsn.com>
|
||||
|
||||
WG Chair: Juergen Schoenwaelder
|
||||
<mailto:j.schoenwaelder@jacobs-university.de>
|
||||
|
||||
Editor: Juergen Schoenwaelder
|
||||
<mailto:j.schoenwaelder@jacobs-university.de>";
|
||||
|
||||
description
|
||||
"This module contains a collection of generally useful derived
|
||||
YANG data types for Internet addresses and related things.
|
||||
|
||||
Copyright (c) 2013 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 6991; see
|
||||
the RFC itself for full legal notices.";
|
||||
|
||||
revision 2013-07-15 {
|
||||
description
|
||||
"This revision adds the following new data types:
|
||||
- ip-address-no-zone
|
||||
- ipv4-address-no-zone
|
||||
- ipv6-address-no-zone";
|
||||
reference
|
||||
"RFC 6991: Common YANG Data Types";
|
||||
}
|
||||
|
||||
revision 2010-09-24 {
|
||||
description
|
||||
"Initial revision.";
|
||||
reference
|
||||
"RFC 6021: Common YANG Data Types";
|
||||
}
|
||||
|
||||
/*** collection of types related to protocol fields ***/
|
||||
|
||||
typedef ip-version {
|
||||
type enumeration {
|
||||
enum unknown {
|
||||
value "0";
|
||||
description
|
||||
"An unknown or unspecified version of the Internet
|
||||
protocol.";
|
||||
}
|
||||
enum ipv4 {
|
||||
value "1";
|
||||
description
|
||||
"The IPv4 protocol as defined in RFC 791.";
|
||||
}
|
||||
enum ipv6 {
|
||||
value "2";
|
||||
description
|
||||
"The IPv6 protocol as defined in RFC 2460.";
|
||||
}
|
||||
}
|
||||
description
|
||||
"This value represents the version of the IP protocol.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the InetVersion textual convention of the SMIv2.";
|
||||
reference
|
||||
"RFC 791: Internet Protocol
|
||||
RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
|
||||
RFC 4001: Textual Conventions for Internet Network Addresses";
|
||||
}
|
||||
|
||||
typedef dscp {
|
||||
type uint8 {
|
||||
range "0..63";
|
||||
}
|
||||
description
|
||||
"The dscp type represents a Differentiated Services Code Point
|
||||
that may be used for marking packets in a traffic stream.
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the Dscp textual convention of the SMIv2.";
|
||||
reference
|
||||
"RFC 3289: Management Information Base for the Differentiated
|
||||
Services Architecture
|
||||
RFC 2474: Definition of the Differentiated Services Field
|
||||
(DS Field) in the IPv4 and IPv6 Headers
|
||||
RFC 2780: IANA Allocation Guidelines For Values In
|
||||
the Internet Protocol and Related Headers";
|
||||
}
|
||||
|
||||
typedef ipv6-flow-label {
|
||||
type uint32 {
|
||||
range "0..1048575";
|
||||
}
|
||||
description
|
||||
"The ipv6-flow-label type represents the flow identifier or Flow
|
||||
Label in an IPv6 packet header that may be used to
|
||||
discriminate traffic flows.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the IPv6FlowLabel textual convention of the SMIv2.";
|
||||
reference
|
||||
"RFC 3595: Textual Conventions for IPv6 Flow Label
|
||||
RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
|
||||
}
|
||||
|
||||
typedef port-number {
|
||||
type uint16 {
|
||||
range "0..65535";
|
||||
}
|
||||
description
|
||||
"The port-number type represents a 16-bit port number of an
|
||||
Internet transport-layer protocol such as UDP, TCP, DCCP, or
|
||||
SCTP. Port numbers are assigned by IANA. A current list of
|
||||
all assignments is available from <http://www.iana.org/>.
|
||||
|
||||
Note that the port number value zero is reserved by IANA. In
|
||||
situations where the value zero does not make sense, it can
|
||||
be excluded by subtyping the port-number type.
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the InetPortNumber textual convention of the SMIv2.";
|
||||
reference
|
||||
"RFC 768: User Datagram Protocol
|
||||
RFC 793: Transmission Control Protocol
|
||||
RFC 4960: Stream Control Transmission Protocol
|
||||
RFC 4340: Datagram Congestion Control Protocol (DCCP)
|
||||
RFC 4001: Textual Conventions for Internet Network Addresses";
|
||||
}
|
||||
|
||||
/*** collection of types related to autonomous systems ***/
|
||||
|
||||
typedef as-number {
|
||||
type uint32;
|
||||
description
|
||||
"The as-number type represents autonomous system numbers
|
||||
which identify an Autonomous System (AS). An AS is a set
|
||||
of routers under a single technical administration, using
|
||||
an interior gateway protocol and common metrics to route
|
||||
packets within the AS, and using an exterior gateway
|
||||
protocol to route packets to other ASes. IANA maintains
|
||||
the AS number space and has delegated large parts to the
|
||||
regional registries.
|
||||
|
||||
Autonomous system numbers were originally limited to 16
|
||||
bits. BGP extensions have enlarged the autonomous system
|
||||
number space to 32 bits. This type therefore uses an uint32
|
||||
base type without a range restriction in order to support
|
||||
a larger autonomous system number space.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the InetAutonomousSystemNumber textual convention of
|
||||
the SMIv2.";
|
||||
reference
|
||||
"RFC 1930: Guidelines for creation, selection, and registration
|
||||
of an Autonomous System (AS)
|
||||
RFC 4271: A Border Gateway Protocol 4 (BGP-4)
|
||||
RFC 4001: Textual Conventions for Internet Network Addresses
|
||||
RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
|
||||
Number Space";
|
||||
}
|
||||
|
||||
/*** collection of types related to IP addresses and hostnames ***/
|
||||
|
||||
typedef ip-address {
|
||||
type union {
|
||||
type inet:ipv4-address;
|
||||
type inet:ipv6-address;
|
||||
}
|
||||
description
|
||||
"The ip-address type represents an IP address and is IP
|
||||
version neutral. The format of the textual representation
|
||||
implies the IP version. This type supports scoped addresses
|
||||
by allowing zone identifiers in the address format.";
|
||||
reference
|
||||
"RFC 4007: IPv6 Scoped Address Architecture";
|
||||
}
|
||||
|
||||
typedef ipv4-address {
|
||||
type string {
|
||||
pattern
|
||||
'(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
|
||||
+ '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
|
||||
+ '(%[\p{N}\p{L}]+)?';
|
||||
}
|
||||
description
|
||||
"The ipv4-address type represents an IPv4 address in
|
||||
dotted-quad notation. The IPv4 address may include a zone
|
||||
index, separated by a % sign.
|
||||
|
||||
The zone index is used to disambiguate identical address
|
||||
values. For link-local addresses, the zone index will
|
||||
typically be the interface index number or the name of an
|
||||
interface. If the zone index is not present, the default
|
||||
zone of the device will be used.
|
||||
|
||||
The canonical format for the zone index is the numerical
|
||||
format";
|
||||
}
|
||||
|
||||
typedef ipv6-address {
|
||||
type string {
|
||||
pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
|
||||
+ '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
|
||||
+ '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
|
||||
+ '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
|
||||
+ '(%[\p{N}\p{L}]+)?';
|
||||
pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
|
||||
+ '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
|
||||
+ '(%.+)?';
|
||||
}
|
||||
description
|
||||
"The ipv6-address type represents an IPv6 address in full,
|
||||
mixed, shortened, and shortened-mixed notation. The IPv6
|
||||
address may include a zone index, separated by a % sign.
|
||||
|
||||
The zone index is used to disambiguate identical address
|
||||
values. For link-local addresses, the zone index will
|
||||
typically be the interface index number or the name of an
|
||||
interface. If the zone index is not present, the default
|
||||
zone of the device will be used.
|
||||
|
||||
The canonical format of IPv6 addresses uses the textual
|
||||
representation defined in Section 4 of RFC 5952. The
|
||||
canonical format for the zone index is the numerical
|
||||
format as described in Section 11.2 of RFC 4007.";
|
||||
reference
|
||||
"RFC 4291: IP Version 6 Addressing Architecture
|
||||
RFC 4007: IPv6 Scoped Address Architecture
|
||||
RFC 5952: A Recommendation for IPv6 Address Text
|
||||
Representation";
|
||||
}
|
||||
|
||||
typedef ip-address-no-zone {
|
||||
type union {
|
||||
type inet:ipv4-address-no-zone;
|
||||
type inet:ipv6-address-no-zone;
|
||||
}
|
||||
description
|
||||
"The ip-address-no-zone type represents an IP address and is
|
||||
IP version neutral. The format of the textual representation
|
||||
implies the IP version. This type does not support scoped
|
||||
addresses since it does not allow zone identifiers in the
|
||||
address format.";
|
||||
reference
|
||||
"RFC 4007: IPv6 Scoped Address Architecture";
|
||||
}
|
||||
|
||||
typedef ipv4-address-no-zone {
|
||||
type inet:ipv4-address {
|
||||
pattern '[0-9\.]*';
|
||||
}
|
||||
description
|
||||
"An IPv4 address without a zone index. This type, derived from
|
||||
ipv4-address, may be used in situations where the zone is
|
||||
known from the context and hence no zone index is needed.";
|
||||
}
|
||||
|
||||
typedef ipv6-address-no-zone {
|
||||
type inet:ipv6-address {
|
||||
pattern '[0-9a-fA-F:\.]*';
|
||||
}
|
||||
description
|
||||
"An IPv6 address without a zone index. This type, derived from
|
||||
ipv6-address, may be used in situations where the zone is
|
||||
known from the context and hence no zone index is needed.";
|
||||
reference
|
||||
"RFC 4291: IP Version 6 Addressing Architecture
|
||||
RFC 4007: IPv6 Scoped Address Architecture
|
||||
RFC 5952: A Recommendation for IPv6 Address Text
|
||||
Representation";
|
||||
}
|
||||
|
||||
typedef ip-prefix {
|
||||
type union {
|
||||
type inet:ipv4-prefix;
|
||||
type inet:ipv6-prefix;
|
||||
}
|
||||
description
|
||||
"The ip-prefix type represents an IP prefix and is IP
|
||||
version neutral. The format of the textual representations
|
||||
implies the IP version.";
|
||||
}
|
||||
|
||||
typedef ipv4-prefix {
|
||||
type string {
|
||||
pattern
|
||||
'(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
|
||||
+ '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
|
||||
+ '/(([0-9])|([1-2][0-9])|(3[0-2]))';
|
||||
}
|
||||
description
|
||||
"The ipv4-prefix type represents an IPv4 address prefix.
|
||||
The prefix length is given by the number following the
|
||||
slash character and must be less than or equal to 32.
|
||||
|
||||
A prefix length value of n corresponds to an IP address
|
||||
mask that has n contiguous 1-bits from the most
|
||||
significant bit (MSB) and all other bits set to 0.
|
||||
|
||||
The canonical format of an IPv4 prefix has all bits of
|
||||
the IPv4 address set to zero that are not part of the
|
||||
IPv4 prefix.";
|
||||
}
|
||||
|
||||
typedef ipv6-prefix {
|
||||
type string {
|
||||
pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
|
||||
+ '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
|
||||
+ '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
|
||||
+ '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
|
||||
+ '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
|
||||
pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
|
||||
+ '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
|
||||
+ '(/.+)';
|
||||
}
|
||||
description
|
||||
"The ipv6-prefix type represents an IPv6 address prefix.
|
||||
The prefix length is given by the number following the
|
||||
slash character and must be less than or equal to 128.
|
||||
|
||||
A prefix length value of n corresponds to an IP address
|
||||
mask that has n contiguous 1-bits from the most
|
||||
significant bit (MSB) and all other bits set to 0.
|
||||
|
||||
The IPv6 address should have all bits that do not belong
|
||||
to the prefix set to zero.
|
||||
|
||||
The canonical format of an IPv6 prefix has all bits of
|
||||
the IPv6 address set to zero that are not part of the
|
||||
IPv6 prefix. Furthermore, the IPv6 address is represented
|
||||
as defined in Section 4 of RFC 5952.";
|
||||
reference
|
||||
"RFC 5952: A Recommendation for IPv6 Address Text
|
||||
Representation";
|
||||
}
|
||||
|
||||
/*** collection of domain name and URI types ***/
|
||||
|
||||
typedef domain-name {
|
||||
type string {
|
||||
pattern
|
||||
'((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
|
||||
+ '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
|
||||
+ '|\.';
|
||||
length "1..253";
|
||||
}
|
||||
description
|
||||
"The domain-name type represents a DNS domain name. The
|
||||
name SHOULD be fully qualified whenever possible.
|
||||
|
||||
Internet domain names are only loosely specified. Section
|
||||
3.5 of RFC 1034 recommends a syntax (modified in Section
|
||||
2.1 of RFC 1123). The pattern above is intended to allow
|
||||
for current practice in domain name use, and some possible
|
||||
future expansion. It is designed to hold various types of
|
||||
domain names, including names used for A or AAAA records
|
||||
(host names) and other records, such as SRV records. Note
|
||||
that Internet host names have a stricter syntax (described
|
||||
in RFC 952) than the DNS recommendations in RFCs 1034 and
|
||||
1123, and that systems that want to store host names in
|
||||
schema nodes using the domain-name type are recommended to
|
||||
adhere to this stricter standard to ensure interoperability.
|
||||
|
||||
The encoding of DNS names in the DNS protocol is limited
|
||||
to 255 characters. Since the encoding consists of labels
|
||||
prefixed by a length bytes and there is a trailing NULL
|
||||
byte, only 253 characters can appear in the textual dotted
|
||||
notation.
|
||||
|
||||
The description clause of schema nodes using the domain-name
|
||||
type MUST describe when and how these names are resolved to
|
||||
IP addresses. Note that the resolution of a domain-name value
|
||||
may require to query multiple DNS records (e.g., A for IPv4
|
||||
and AAAA for IPv6). The order of the resolution process and
|
||||
which DNS record takes precedence can either be defined
|
||||
explicitly or may depend on the configuration of the
|
||||
resolver.
|
||||
|
||||
Domain-name values use the US-ASCII encoding. Their canonical
|
||||
format uses lowercase US-ASCII characters. Internationalized
|
||||
domain names MUST be A-labels as per RFC 5890.";
|
||||
reference
|
||||
"RFC 952: DoD Internet Host Table Specification
|
||||
RFC 1034: Domain Names - Concepts and Facilities
|
||||
RFC 1123: Requirements for Internet Hosts -- Application
|
||||
and Support
|
||||
RFC 2782: A DNS RR for specifying the location of services
|
||||
(DNS SRV)
|
||||
RFC 5890: Internationalized Domain Names in Applications
|
||||
(IDNA): Definitions and Document Framework";
|
||||
}
|
||||
|
||||
typedef host {
|
||||
type union {
|
||||
type inet:ip-address;
|
||||
type inet:domain-name;
|
||||
}
|
||||
description
|
||||
"The host type represents either an IP address or a DNS
|
||||
domain name.";
|
||||
}
|
||||
|
||||
typedef uri {
|
||||
type string;
|
||||
description
|
||||
"The uri type represents a Uniform Resource Identifier
|
||||
(URI) as defined by STD 66.
|
||||
|
||||
Objects using the uri type MUST be in US-ASCII encoding,
|
||||
and MUST be normalized as described by RFC 3986 Sections
|
||||
6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary
|
||||
percent-encoding is removed, and all case-insensitive
|
||||
characters are set to lowercase except for hexadecimal
|
||||
digits, which are normalized to uppercase as described in
|
||||
Section 6.2.2.1.
|
||||
|
||||
The purpose of this normalization is to help provide
|
||||
unique URIs. Note that this normalization is not
|
||||
sufficient to provide uniqueness. Two URIs that are
|
||||
textually distinct after this normalization may still be
|
||||
equivalent.
|
||||
|
||||
Objects using the uri type may restrict the schemes that
|
||||
they permit. For example, 'data:' and 'urn:' schemes
|
||||
might not be appropriate.
|
||||
|
||||
A zero-length URI is not a valid URI. This can be used to
|
||||
express 'URI absent' where required.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the Uri SMIv2 textual convention defined in RFC 5017.";
|
||||
reference
|
||||
"RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
|
||||
RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
|
||||
Group: Uniform Resource Identifiers (URIs), URLs,
|
||||
and Uniform Resource Names (URNs): Clarifications
|
||||
and Recommendations
|
||||
RFC 5017: MIB Textual Conventions for Uniform Resource
|
||||
Identifiers (URIs)";
|
||||
}
|
||||
|
||||
}
|
||||
1123
yang/standard/ietf-interfaces@2018-02-20.yang
Normal file
1123
yang/standard/ietf-interfaces@2018-02-20.yang
Normal file
File diff suppressed because it is too large
Load diff
701
yang/standard/ietf-ip@2014-06-16.yang
Normal file
701
yang/standard/ietf-ip@2014-06-16.yang
Normal file
|
|
@ -0,0 +1,701 @@
|
|||
module ietf-ip {
|
||||
|
||||
namespace "urn:ietf:params:xml:ns:yang:ietf-ip";
|
||||
prefix ip;
|
||||
|
||||
import ietf-interfaces {
|
||||
prefix if;
|
||||
}
|
||||
import ietf-inet-types {
|
||||
prefix inet;
|
||||
}
|
||||
import ietf-yang-types {
|
||||
prefix yang;
|
||||
}
|
||||
|
||||
organization
|
||||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group";
|
||||
|
||||
contact
|
||||
"WG Web: <http://tools.ietf.org/wg/netmod/>
|
||||
WG List: <mailto:netmod@ietf.org>
|
||||
|
||||
WG Chair: Thomas Nadeau
|
||||
<mailto:tnadeau@lucidvision.com>
|
||||
|
||||
WG Chair: Juergen Schoenwaelder
|
||||
<mailto:j.schoenwaelder@jacobs-university.de>
|
||||
|
||||
Editor: Martin Bjorklund
|
||||
<mailto:mbj@tail-f.com>";
|
||||
|
||||
|
||||
description
|
||||
"This module contains a collection of YANG definitions for
|
||||
configuring IP implementations.
|
||||
|
||||
Copyright (c) 2014 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 7277; see
|
||||
the RFC itself for full legal notices.";
|
||||
|
||||
revision 2014-06-16 {
|
||||
description
|
||||
"Initial revision.";
|
||||
reference
|
||||
"RFC 7277: A YANG Data Model for IP Management";
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
* Features
|
||||
*/
|
||||
|
||||
feature ipv4-non-contiguous-netmasks {
|
||||
description
|
||||
"Indicates support for configuring non-contiguous
|
||||
subnet masks.";
|
||||
}
|
||||
|
||||
feature ipv6-privacy-autoconf {
|
||||
description
|
||||
"Indicates support for Privacy Extensions for Stateless Address
|
||||
Autoconfiguration in IPv6.";
|
||||
reference
|
||||
"RFC 4941: Privacy Extensions for Stateless Address
|
||||
Autoconfiguration in IPv6";
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Typedefs
|
||||
*/
|
||||
|
||||
typedef ip-address-origin {
|
||||
type enumeration {
|
||||
enum other {
|
||||
description
|
||||
"None of the following.";
|
||||
}
|
||||
enum static {
|
||||
description
|
||||
"Indicates that the address has been statically
|
||||
configured - for example, using NETCONF or a Command Line
|
||||
Interface.";
|
||||
}
|
||||
enum dhcp {
|
||||
description
|
||||
"Indicates an address that has been assigned to this
|
||||
system by a DHCP server.";
|
||||
}
|
||||
enum link-layer {
|
||||
description
|
||||
"Indicates an address created by IPv6 stateless
|
||||
autoconfiguration that embeds a link-layer address in its
|
||||
interface identifier.";
|
||||
}
|
||||
enum random {
|
||||
description
|
||||
"Indicates an address chosen by the system at
|
||||
|
||||
random, e.g., an IPv4 address within 169.254/16, an
|
||||
RFC 4941 temporary address, or an RFC 7217 semantically
|
||||
opaque address.";
|
||||
reference
|
||||
"RFC 4941: Privacy Extensions for Stateless Address
|
||||
Autoconfiguration in IPv6
|
||||
RFC 7217: A Method for Generating Semantically Opaque
|
||||
Interface Identifiers with IPv6 Stateless
|
||||
Address Autoconfiguration (SLAAC)";
|
||||
}
|
||||
}
|
||||
description
|
||||
"The origin of an address.";
|
||||
}
|
||||
|
||||
typedef neighbor-origin {
|
||||
type enumeration {
|
||||
enum other {
|
||||
description
|
||||
"None of the following.";
|
||||
}
|
||||
enum static {
|
||||
description
|
||||
"Indicates that the mapping has been statically
|
||||
configured - for example, using NETCONF or a Command Line
|
||||
Interface.";
|
||||
}
|
||||
enum dynamic {
|
||||
description
|
||||
"Indicates that the mapping has been dynamically resolved
|
||||
using, e.g., IPv4 ARP or the IPv6 Neighbor Discovery
|
||||
protocol.";
|
||||
}
|
||||
}
|
||||
description
|
||||
"The origin of a neighbor entry.";
|
||||
}
|
||||
|
||||
/*
|
||||
* Configuration data nodes
|
||||
*/
|
||||
|
||||
augment "/if:interfaces/if:interface" {
|
||||
description
|
||||
"Parameters for configuring IP on interfaces.
|
||||
|
||||
If an interface is not capable of running IP, the server
|
||||
must not allow the client to configure these parameters.";
|
||||
|
||||
container ipv4 {
|
||||
presence
|
||||
"Enables IPv4 unless the 'enabled' leaf
|
||||
(which defaults to 'true') is set to 'false'";
|
||||
description
|
||||
"Parameters for the IPv4 address family.";
|
||||
|
||||
leaf enabled {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"Controls whether IPv4 is enabled or disabled on this
|
||||
interface. When IPv4 is enabled, this interface is
|
||||
connected to an IPv4 stack, and the interface can send
|
||||
and receive IPv4 packets.";
|
||||
}
|
||||
leaf forwarding {
|
||||
type boolean;
|
||||
default false;
|
||||
description
|
||||
"Controls IPv4 packet forwarding of datagrams received by,
|
||||
but not addressed to, this interface. IPv4 routers
|
||||
forward datagrams. IPv4 hosts do not (except those
|
||||
source-routed via the host).";
|
||||
}
|
||||
leaf mtu {
|
||||
type uint16 {
|
||||
range "68..max";
|
||||
}
|
||||
units octets;
|
||||
description
|
||||
"The size, in octets, of the largest IPv4 packet that the
|
||||
interface will send and receive.
|
||||
|
||||
The server may restrict the allowed values for this leaf,
|
||||
depending on the interface's type.
|
||||
|
||||
If this leaf is not configured, the operationally used MTU
|
||||
depends on the interface's type.";
|
||||
reference
|
||||
"RFC 791: Internet Protocol";
|
||||
}
|
||||
list address {
|
||||
key "ip";
|
||||
description
|
||||
"The list of configured IPv4 addresses on the interface.";
|
||||
|
||||
leaf ip {
|
||||
type inet:ipv4-address-no-zone;
|
||||
description
|
||||
"The IPv4 address on the interface.";
|
||||
}
|
||||
|
||||
choice subnet {
|
||||
mandatory true;
|
||||
description
|
||||
"The subnet can be specified as a prefix-length, or,
|
||||
if the server supports non-contiguous netmasks, as
|
||||
a netmask.";
|
||||
leaf prefix-length {
|
||||
type uint8 {
|
||||
range "0..32";
|
||||
}
|
||||
description
|
||||
"The length of the subnet prefix.";
|
||||
}
|
||||
leaf netmask {
|
||||
if-feature ipv4-non-contiguous-netmasks;
|
||||
type yang:dotted-quad;
|
||||
description
|
||||
"The subnet specified as a netmask.";
|
||||
}
|
||||
}
|
||||
}
|
||||
list neighbor {
|
||||
key "ip";
|
||||
description
|
||||
"A list of mappings from IPv4 addresses to
|
||||
link-layer addresses.
|
||||
|
||||
Entries in this list are used as static entries in the
|
||||
ARP Cache.";
|
||||
reference
|
||||
"RFC 826: An Ethernet Address Resolution Protocol";
|
||||
|
||||
leaf ip {
|
||||
type inet:ipv4-address-no-zone;
|
||||
description
|
||||
"The IPv4 address of the neighbor node.";
|
||||
}
|
||||
leaf link-layer-address {
|
||||
type yang:phys-address;
|
||||
mandatory true;
|
||||
description
|
||||
"The link-layer address of the neighbor node.";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
container ipv6 {
|
||||
presence
|
||||
"Enables IPv6 unless the 'enabled' leaf
|
||||
(which defaults to 'true') is set to 'false'";
|
||||
description
|
||||
"Parameters for the IPv6 address family.";
|
||||
|
||||
leaf enabled {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"Controls whether IPv6 is enabled or disabled on this
|
||||
interface. When IPv6 is enabled, this interface is
|
||||
connected to an IPv6 stack, and the interface can send
|
||||
and receive IPv6 packets.";
|
||||
}
|
||||
leaf forwarding {
|
||||
type boolean;
|
||||
default false;
|
||||
description
|
||||
"Controls IPv6 packet forwarding of datagrams received by,
|
||||
but not addressed to, this interface. IPv6 routers
|
||||
forward datagrams. IPv6 hosts do not (except those
|
||||
source-routed via the host).";
|
||||
reference
|
||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
|
||||
Section 6.2.1, IsRouter";
|
||||
}
|
||||
leaf mtu {
|
||||
type uint32 {
|
||||
range "1280..max";
|
||||
}
|
||||
units octets;
|
||||
description
|
||||
"The size, in octets, of the largest IPv6 packet that the
|
||||
interface will send and receive.
|
||||
|
||||
The server may restrict the allowed values for this leaf,
|
||||
depending on the interface's type.
|
||||
|
||||
If this leaf is not configured, the operationally used MTU
|
||||
depends on the interface's type.";
|
||||
reference
|
||||
"RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
|
||||
Section 5";
|
||||
}
|
||||
|
||||
list address {
|
||||
key "ip";
|
||||
description
|
||||
"The list of configured IPv6 addresses on the interface.";
|
||||
|
||||
leaf ip {
|
||||
type inet:ipv6-address-no-zone;
|
||||
description
|
||||
"The IPv6 address on the interface.";
|
||||
}
|
||||
leaf prefix-length {
|
||||
type uint8 {
|
||||
range "0..128";
|
||||
}
|
||||
mandatory true;
|
||||
description
|
||||
"The length of the subnet prefix.";
|
||||
}
|
||||
}
|
||||
list neighbor {
|
||||
key "ip";
|
||||
description
|
||||
"A list of mappings from IPv6 addresses to
|
||||
link-layer addresses.
|
||||
|
||||
Entries in this list are used as static entries in the
|
||||
Neighbor Cache.";
|
||||
reference
|
||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
|
||||
|
||||
leaf ip {
|
||||
type inet:ipv6-address-no-zone;
|
||||
description
|
||||
"The IPv6 address of the neighbor node.";
|
||||
}
|
||||
leaf link-layer-address {
|
||||
type yang:phys-address;
|
||||
mandatory true;
|
||||
description
|
||||
"The link-layer address of the neighbor node.";
|
||||
}
|
||||
}
|
||||
|
||||
leaf dup-addr-detect-transmits {
|
||||
type uint32;
|
||||
default 1;
|
||||
description
|
||||
"The number of consecutive Neighbor Solicitation messages
|
||||
sent while performing Duplicate Address Detection on a
|
||||
tentative address. A value of zero indicates that
|
||||
Duplicate Address Detection is not performed on
|
||||
tentative addresses. A value of one indicates a single
|
||||
transmission with no follow-up retransmissions.";
|
||||
reference
|
||||
"RFC 4862: IPv6 Stateless Address Autoconfiguration";
|
||||
}
|
||||
container autoconf {
|
||||
description
|
||||
"Parameters to control the autoconfiguration of IPv6
|
||||
addresses, as described in RFC 4862.";
|
||||
reference
|
||||
"RFC 4862: IPv6 Stateless Address Autoconfiguration";
|
||||
|
||||
leaf create-global-addresses {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"If enabled, the host creates global addresses as
|
||||
described in RFC 4862.";
|
||||
reference
|
||||
"RFC 4862: IPv6 Stateless Address Autoconfiguration
|
||||
Section 5.5";
|
||||
}
|
||||
leaf create-temporary-addresses {
|
||||
if-feature ipv6-privacy-autoconf;
|
||||
type boolean;
|
||||
default false;
|
||||
description
|
||||
"If enabled, the host creates temporary addresses as
|
||||
described in RFC 4941.";
|
||||
reference
|
||||
"RFC 4941: Privacy Extensions for Stateless Address
|
||||
Autoconfiguration in IPv6";
|
||||
}
|
||||
|
||||
leaf temporary-valid-lifetime {
|
||||
if-feature ipv6-privacy-autoconf;
|
||||
type uint32;
|
||||
units "seconds";
|
||||
default 604800;
|
||||
description
|
||||
"The time period during which the temporary address
|
||||
is valid.";
|
||||
reference
|
||||
"RFC 4941: Privacy Extensions for Stateless Address
|
||||
Autoconfiguration in IPv6
|
||||
- TEMP_VALID_LIFETIME";
|
||||
}
|
||||
leaf temporary-preferred-lifetime {
|
||||
if-feature ipv6-privacy-autoconf;
|
||||
type uint32;
|
||||
units "seconds";
|
||||
default 86400;
|
||||
description
|
||||
"The time period during which the temporary address is
|
||||
preferred.";
|
||||
reference
|
||||
"RFC 4941: Privacy Extensions for Stateless Address
|
||||
Autoconfiguration in IPv6
|
||||
- TEMP_PREFERRED_LIFETIME";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Operational state data nodes
|
||||
*/
|
||||
|
||||
augment "/if:interfaces-state/if:interface" {
|
||||
description
|
||||
"Data nodes for the operational state of IP on interfaces.";
|
||||
|
||||
container ipv4 {
|
||||
presence "Present if IPv4 is enabled on this interface";
|
||||
config false;
|
||||
description
|
||||
"Interface-specific parameters for the IPv4 address family.";
|
||||
|
||||
leaf forwarding {
|
||||
type boolean;
|
||||
description
|
||||
"Indicates whether IPv4 packet forwarding is enabled or
|
||||
disabled on this interface.";
|
||||
}
|
||||
leaf mtu {
|
||||
type uint16 {
|
||||
range "68..max";
|
||||
}
|
||||
units octets;
|
||||
description
|
||||
"The size, in octets, of the largest IPv4 packet that the
|
||||
interface will send and receive.";
|
||||
reference
|
||||
"RFC 791: Internet Protocol";
|
||||
}
|
||||
list address {
|
||||
key "ip";
|
||||
description
|
||||
"The list of IPv4 addresses on the interface.";
|
||||
|
||||
leaf ip {
|
||||
type inet:ipv4-address-no-zone;
|
||||
description
|
||||
"The IPv4 address on the interface.";
|
||||
}
|
||||
choice subnet {
|
||||
description
|
||||
"The subnet can be specified as a prefix-length, or,
|
||||
if the server supports non-contiguous netmasks, as
|
||||
a netmask.";
|
||||
leaf prefix-length {
|
||||
type uint8 {
|
||||
range "0..32";
|
||||
}
|
||||
description
|
||||
"The length of the subnet prefix.";
|
||||
}
|
||||
leaf netmask {
|
||||
if-feature ipv4-non-contiguous-netmasks;
|
||||
type yang:dotted-quad;
|
||||
description
|
||||
"The subnet specified as a netmask.";
|
||||
}
|
||||
}
|
||||
|
||||
leaf origin {
|
||||
type ip-address-origin;
|
||||
description
|
||||
"The origin of this address.";
|
||||
}
|
||||
}
|
||||
list neighbor {
|
||||
key "ip";
|
||||
description
|
||||
"A list of mappings from IPv4 addresses to
|
||||
link-layer addresses.
|
||||
|
||||
This list represents the ARP Cache.";
|
||||
reference
|
||||
"RFC 826: An Ethernet Address Resolution Protocol";
|
||||
|
||||
leaf ip {
|
||||
type inet:ipv4-address-no-zone;
|
||||
description
|
||||
"The IPv4 address of the neighbor node.";
|
||||
}
|
||||
leaf link-layer-address {
|
||||
type yang:phys-address;
|
||||
description
|
||||
"The link-layer address of the neighbor node.";
|
||||
}
|
||||
leaf origin {
|
||||
type neighbor-origin;
|
||||
description
|
||||
"The origin of this neighbor entry.";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
container ipv6 {
|
||||
presence "Present if IPv6 is enabled on this interface";
|
||||
config false;
|
||||
description
|
||||
"Parameters for the IPv6 address family.";
|
||||
|
||||
leaf forwarding {
|
||||
type boolean;
|
||||
default false;
|
||||
description
|
||||
"Indicates whether IPv6 packet forwarding is enabled or
|
||||
disabled on this interface.";
|
||||
reference
|
||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
|
||||
Section 6.2.1, IsRouter";
|
||||
}
|
||||
leaf mtu {
|
||||
type uint32 {
|
||||
range "1280..max";
|
||||
}
|
||||
units octets;
|
||||
description
|
||||
"The size, in octets, of the largest IPv6 packet that the
|
||||
interface will send and receive.";
|
||||
reference
|
||||
"RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
|
||||
Section 5";
|
||||
}
|
||||
list address {
|
||||
key "ip";
|
||||
description
|
||||
"The list of IPv6 addresses on the interface.";
|
||||
|
||||
leaf ip {
|
||||
type inet:ipv6-address-no-zone;
|
||||
description
|
||||
"The IPv6 address on the interface.";
|
||||
}
|
||||
leaf prefix-length {
|
||||
type uint8 {
|
||||
range "0..128";
|
||||
}
|
||||
mandatory true;
|
||||
description
|
||||
"The length of the subnet prefix.";
|
||||
}
|
||||
leaf origin {
|
||||
type ip-address-origin;
|
||||
description
|
||||
"The origin of this address.";
|
||||
}
|
||||
leaf status {
|
||||
type enumeration {
|
||||
enum preferred {
|
||||
description
|
||||
"This is a valid address that can appear as the
|
||||
destination or source address of a packet.";
|
||||
}
|
||||
enum deprecated {
|
||||
description
|
||||
"This is a valid but deprecated address that should
|
||||
no longer be used as a source address in new
|
||||
communications, but packets addressed to such an
|
||||
address are processed as expected.";
|
||||
}
|
||||
enum invalid {
|
||||
description
|
||||
"This isn't a valid address, and it shouldn't appear
|
||||
as the destination or source address of a packet.";
|
||||
}
|
||||
enum inaccessible {
|
||||
description
|
||||
"The address is not accessible because the interface
|
||||
to which this address is assigned is not
|
||||
operational.";
|
||||
}
|
||||
enum unknown {
|
||||
description
|
||||
"The status cannot be determined for some reason.";
|
||||
}
|
||||
enum tentative {
|
||||
description
|
||||
"The uniqueness of the address on the link is being
|
||||
verified. Addresses in this state should not be
|
||||
used for general communication and should only be
|
||||
used to determine the uniqueness of the address.";
|
||||
}
|
||||
enum duplicate {
|
||||
description
|
||||
"The address has been determined to be non-unique on
|
||||
the link and so must not be used.";
|
||||
}
|
||||
enum optimistic {
|
||||
description
|
||||
"The address is available for use, subject to
|
||||
restrictions, while its uniqueness on a link is
|
||||
being verified.";
|
||||
}
|
||||
}
|
||||
description
|
||||
"The status of an address. Most of the states correspond
|
||||
to states from the IPv6 Stateless Address
|
||||
Autoconfiguration protocol.";
|
||||
reference
|
||||
"RFC 4293: Management Information Base for the
|
||||
Internet Protocol (IP)
|
||||
- IpAddressStatusTC
|
||||
RFC 4862: IPv6 Stateless Address Autoconfiguration";
|
||||
}
|
||||
}
|
||||
list neighbor {
|
||||
key "ip";
|
||||
description
|
||||
"A list of mappings from IPv6 addresses to
|
||||
link-layer addresses.
|
||||
|
||||
This list represents the Neighbor Cache.";
|
||||
reference
|
||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
|
||||
|
||||
leaf ip {
|
||||
type inet:ipv6-address-no-zone;
|
||||
description
|
||||
"The IPv6 address of the neighbor node.";
|
||||
}
|
||||
leaf link-layer-address {
|
||||
type yang:phys-address;
|
||||
description
|
||||
"The link-layer address of the neighbor node.";
|
||||
}
|
||||
leaf origin {
|
||||
type neighbor-origin;
|
||||
description
|
||||
"The origin of this neighbor entry.";
|
||||
}
|
||||
leaf is-router {
|
||||
type empty;
|
||||
description
|
||||
"Indicates that the neighbor node acts as a router.";
|
||||
}
|
||||
leaf state {
|
||||
type enumeration {
|
||||
enum incomplete {
|
||||
description
|
||||
"Address resolution is in progress, and the link-layer
|
||||
address of the neighbor has not yet been
|
||||
determined.";
|
||||
}
|
||||
enum reachable {
|
||||
description
|
||||
"Roughly speaking, the neighbor is known to have been
|
||||
reachable recently (within tens of seconds ago).";
|
||||
}
|
||||
enum stale {
|
||||
description
|
||||
"The neighbor is no longer known to be reachable, but
|
||||
until traffic is sent to the neighbor no attempt
|
||||
should be made to verify its reachability.";
|
||||
}
|
||||
enum delay {
|
||||
description
|
||||
"The neighbor is no longer known to be reachable, and
|
||||
traffic has recently been sent to the neighbor.
|
||||
Rather than probe the neighbor immediately, however,
|
||||
delay sending probes for a short while in order to
|
||||
give upper-layer protocols a chance to provide
|
||||
reachability confirmation.";
|
||||
}
|
||||
enum probe {
|
||||
description
|
||||
"The neighbor is no longer known to be reachable, and
|
||||
unicast Neighbor Solicitation probes are being sent
|
||||
to verify reachability.";
|
||||
}
|
||||
}
|
||||
description
|
||||
"The Neighbor Unreachability Detection state of this
|
||||
entry.";
|
||||
reference
|
||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
|
||||
Section 7.3.2";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
466
yang/standard/ietf-netconf-acm@2018-02-14.yang
Normal file
466
yang/standard/ietf-netconf-acm@2018-02-14.yang
Normal file
|
|
@ -0,0 +1,466 @@
|
|||
module ietf-netconf-acm {
|
||||
|
||||
namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-acm";
|
||||
|
||||
prefix nacm;
|
||||
|
||||
import ietf-yang-types {
|
||||
prefix yang;
|
||||
}
|
||||
|
||||
organization
|
||||
"IETF NETCONF (Network Configuration) Working Group";
|
||||
|
||||
contact
|
||||
"WG Web: <https://datatracker.ietf.org/wg/netconf/>
|
||||
WG List: <mailto:netconf@ietf.org>
|
||||
|
||||
Author: Andy Bierman
|
||||
<mailto:andy@yumaworks.com>
|
||||
|
||||
Author: Martin Bjorklund
|
||||
<mailto:mbj@tail-f.com>";
|
||||
|
||||
description
|
||||
"Network Configuration Access Control Model.
|
||||
|
||||
Copyright (c) 2012 - 2018 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 8341; see
|
||||
the RFC itself for full legal notices.";
|
||||
|
||||
revision "2018-02-14" {
|
||||
description
|
||||
"Added support for YANG 1.1 actions and notifications tied to
|
||||
data nodes. Clarified how NACM extensions can be used by
|
||||
other data models.";
|
||||
reference
|
||||
"RFC 8341: Network Configuration Access Control Model";
|
||||
}
|
||||
|
||||
revision "2012-02-22" {
|
||||
description
|
||||
"Initial version.";
|
||||
reference
|
||||
"RFC 6536: Network Configuration Protocol (NETCONF)
|
||||
Access Control Model";
|
||||
}
|
||||
|
||||
/*
|
||||
* Extension statements
|
||||
*/
|
||||
|
||||
extension default-deny-write {
|
||||
description
|
||||
"Used to indicate that the data model node
|
||||
represents a sensitive security system parameter.
|
||||
|
||||
If present, the NETCONF server will only allow the designated
|
||||
'recovery session' to have write access to the node. An
|
||||
explicit access control rule is required for all other users.
|
||||
|
||||
If the NACM module is used, then it must be enabled (i.e.,
|
||||
/nacm/enable-nacm object equals 'true'), or this extension
|
||||
is ignored.
|
||||
|
||||
The 'default-deny-write' extension MAY appear within a data
|
||||
definition statement. It is ignored otherwise.";
|
||||
}
|
||||
|
||||
extension default-deny-all {
|
||||
description
|
||||
"Used to indicate that the data model node
|
||||
controls a very sensitive security system parameter.
|
||||
|
||||
If present, the NETCONF server will only allow the designated
|
||||
'recovery session' to have read, write, or execute access to
|
||||
the node. An explicit access control rule is required for all
|
||||
other users.
|
||||
|
||||
If the NACM module is used, then it must be enabled (i.e.,
|
||||
/nacm/enable-nacm object equals 'true'), or this extension
|
||||
is ignored.
|
||||
|
||||
The 'default-deny-all' extension MAY appear within a data
|
||||
definition statement, 'rpc' statement, or 'notification'
|
||||
statement. It is ignored otherwise.";
|
||||
}
|
||||
|
||||
/*
|
||||
* Derived types
|
||||
*/
|
||||
|
||||
typedef user-name-type {
|
||||
type string {
|
||||
length "1..max";
|
||||
}
|
||||
description
|
||||
"General-purpose username string.";
|
||||
}
|
||||
|
||||
typedef matchall-string-type {
|
||||
type string {
|
||||
pattern '\*';
|
||||
}
|
||||
description
|
||||
"The string containing a single asterisk '*' is used
|
||||
to conceptually represent all possible values
|
||||
for the particular leaf using this data type.";
|
||||
}
|
||||
|
||||
typedef access-operations-type {
|
||||
type bits {
|
||||
bit create {
|
||||
description
|
||||
"Any protocol operation that creates a
|
||||
new data node.";
|
||||
}
|
||||
bit read {
|
||||
description
|
||||
"Any protocol operation or notification that
|
||||
returns the value of a data node.";
|
||||
}
|
||||
bit update {
|
||||
description
|
||||
"Any protocol operation that alters an existing
|
||||
data node.";
|
||||
}
|
||||
|
||||
bit delete {
|
||||
description
|
||||
"Any protocol operation that removes a data node.";
|
||||
}
|
||||
bit exec {
|
||||
description
|
||||
"Execution access to the specified protocol operation.";
|
||||
}
|
||||
}
|
||||
description
|
||||
"Access operation.";
|
||||
}
|
||||
|
||||
typedef group-name-type {
|
||||
type string {
|
||||
length "1..max";
|
||||
pattern '[^\*].*';
|
||||
}
|
||||
description
|
||||
"Name of administrative group to which
|
||||
users can be assigned.";
|
||||
}
|
||||
|
||||
typedef action-type {
|
||||
type enumeration {
|
||||
enum permit {
|
||||
description
|
||||
"Requested action is permitted.";
|
||||
}
|
||||
enum deny {
|
||||
description
|
||||
"Requested action is denied.";
|
||||
}
|
||||
}
|
||||
description
|
||||
"Action taken by the server when a particular
|
||||
rule matches.";
|
||||
}
|
||||
|
||||
typedef node-instance-identifier {
|
||||
type yang:xpath1.0;
|
||||
description
|
||||
"Path expression used to represent a special
|
||||
data node, action, or notification instance-identifier
|
||||
string.
|
||||
|
||||
A node-instance-identifier value is an
|
||||
unrestricted YANG instance-identifier expression.
|
||||
|
||||
All the same rules as an instance-identifier apply,
|
||||
except that predicates for keys are optional. If a key
|
||||
predicate is missing, then the node-instance-identifier
|
||||
represents all possible server instances for that key.
|
||||
|
||||
This XML Path Language (XPath) expression is evaluated in the
|
||||
following context:
|
||||
|
||||
o The set of namespace declarations are those in scope on
|
||||
the leaf element where this type is used.
|
||||
|
||||
o The set of variable bindings contains one variable,
|
||||
'USER', which contains the name of the user of the
|
||||
current session.
|
||||
|
||||
o The function library is the core function library, but
|
||||
note that due to the syntax restrictions of an
|
||||
instance-identifier, no functions are allowed.
|
||||
|
||||
o The context node is the root node in the data tree.
|
||||
|
||||
The accessible tree includes actions and notifications tied
|
||||
to data nodes.";
|
||||
}
|
||||
|
||||
/*
|
||||
* Data definition statements
|
||||
*/
|
||||
|
||||
container nacm {
|
||||
nacm:default-deny-all;
|
||||
|
||||
description
|
||||
"Parameters for NETCONF access control model.";
|
||||
|
||||
leaf enable-nacm {
|
||||
type boolean;
|
||||
default "true";
|
||||
description
|
||||
"Enables or disables all NETCONF access control
|
||||
enforcement. If 'true', then enforcement
|
||||
is enabled. If 'false', then enforcement
|
||||
is disabled.";
|
||||
}
|
||||
|
||||
leaf read-default {
|
||||
type action-type;
|
||||
default "permit";
|
||||
description
|
||||
"Controls whether read access is granted if
|
||||
no appropriate rule is found for a
|
||||
particular read request.";
|
||||
}
|
||||
|
||||
leaf write-default {
|
||||
type action-type;
|
||||
default "deny";
|
||||
description
|
||||
"Controls whether create, update, or delete access
|
||||
is granted if no appropriate rule is found for a
|
||||
particular write request.";
|
||||
}
|
||||
|
||||
leaf exec-default {
|
||||
type action-type;
|
||||
default "permit";
|
||||
description
|
||||
"Controls whether exec access is granted if no appropriate
|
||||
rule is found for a particular protocol operation request.";
|
||||
}
|
||||
|
||||
leaf enable-external-groups {
|
||||
type boolean;
|
||||
default "true";
|
||||
description
|
||||
"Controls whether the server uses the groups reported by the
|
||||
NETCONF transport layer when it assigns the user to a set of
|
||||
NACM groups. If this leaf has the value 'false', any group
|
||||
names reported by the transport layer are ignored by the
|
||||
server.";
|
||||
}
|
||||
|
||||
leaf denied-operations {
|
||||
type yang:zero-based-counter32;
|
||||
config false;
|
||||
mandatory true;
|
||||
description
|
||||
"Number of times since the server last restarted that a
|
||||
protocol operation request was denied.";
|
||||
}
|
||||
|
||||
leaf denied-data-writes {
|
||||
type yang:zero-based-counter32;
|
||||
config false;
|
||||
mandatory true;
|
||||
description
|
||||
"Number of times since the server last restarted that a
|
||||
protocol operation request to alter
|
||||
a configuration datastore was denied.";
|
||||
}
|
||||
|
||||
leaf denied-notifications {
|
||||
type yang:zero-based-counter32;
|
||||
config false;
|
||||
mandatory true;
|
||||
description
|
||||
"Number of times since the server last restarted that
|
||||
a notification was dropped for a subscription because
|
||||
access to the event type was denied.";
|
||||
}
|
||||
|
||||
container groups {
|
||||
description
|
||||
"NETCONF access control groups.";
|
||||
|
||||
list group {
|
||||
key name;
|
||||
|
||||
description
|
||||
"One NACM group entry. This list will only contain
|
||||
configured entries, not any entries learned from
|
||||
any transport protocols.";
|
||||
|
||||
leaf name {
|
||||
type group-name-type;
|
||||
description
|
||||
"Group name associated with this entry.";
|
||||
}
|
||||
|
||||
leaf-list user-name {
|
||||
type user-name-type;
|
||||
description
|
||||
"Each entry identifies the username of
|
||||
a member of the group associated with
|
||||
this entry.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list rule-list {
|
||||
key name;
|
||||
ordered-by user;
|
||||
description
|
||||
"An ordered collection of access control rules.";
|
||||
|
||||
leaf name {
|
||||
type string {
|
||||
length "1..max";
|
||||
}
|
||||
description
|
||||
"Arbitrary name assigned to the rule-list.";
|
||||
}
|
||||
leaf-list group {
|
||||
type union {
|
||||
type matchall-string-type;
|
||||
type group-name-type;
|
||||
}
|
||||
description
|
||||
"List of administrative groups that will be
|
||||
assigned the associated access rights
|
||||
defined by the 'rule' list.
|
||||
|
||||
The string '*' indicates that all groups apply to the
|
||||
entry.";
|
||||
}
|
||||
|
||||
list rule {
|
||||
key name;
|
||||
ordered-by user;
|
||||
description
|
||||
"One access control rule.
|
||||
|
||||
Rules are processed in user-defined order until a match is
|
||||
found. A rule matches if 'module-name', 'rule-type', and
|
||||
'access-operations' match the request. If a rule
|
||||
matches, the 'action' leaf determines whether or not
|
||||
access is granted.";
|
||||
|
||||
leaf name {
|
||||
type string {
|
||||
length "1..max";
|
||||
}
|
||||
description
|
||||
"Arbitrary name assigned to the rule.";
|
||||
}
|
||||
|
||||
leaf module-name {
|
||||
type union {
|
||||
type matchall-string-type;
|
||||
type string;
|
||||
}
|
||||
default "*";
|
||||
description
|
||||
"Name of the module associated with this rule.
|
||||
|
||||
This leaf matches if it has the value '*' or if the
|
||||
object being accessed is defined in the module with the
|
||||
specified module name.";
|
||||
}
|
||||
choice rule-type {
|
||||
description
|
||||
"This choice matches if all leafs present in the rule
|
||||
match the request. If no leafs are present, the
|
||||
choice matches all requests.";
|
||||
case protocol-operation {
|
||||
leaf rpc-name {
|
||||
type union {
|
||||
type matchall-string-type;
|
||||
type string;
|
||||
}
|
||||
description
|
||||
"This leaf matches if it has the value '*' or if
|
||||
its value equals the requested protocol operation
|
||||
name.";
|
||||
}
|
||||
}
|
||||
case notification {
|
||||
leaf notification-name {
|
||||
type union {
|
||||
type matchall-string-type;
|
||||
type string;
|
||||
}
|
||||
description
|
||||
"This leaf matches if it has the value '*' or if its
|
||||
value equals the requested notification name.";
|
||||
}
|
||||
}
|
||||
|
||||
case data-node {
|
||||
leaf path {
|
||||
type node-instance-identifier;
|
||||
mandatory true;
|
||||
description
|
||||
"Data node instance-identifier associated with the
|
||||
data node, action, or notification controlled by
|
||||
this rule.
|
||||
|
||||
Configuration data or state data
|
||||
instance-identifiers start with a top-level
|
||||
data node. A complete instance-identifier is
|
||||
required for this type of path value.
|
||||
|
||||
The special value '/' refers to all possible
|
||||
datastore contents.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
leaf access-operations {
|
||||
type union {
|
||||
type matchall-string-type;
|
||||
type access-operations-type;
|
||||
}
|
||||
default "*";
|
||||
description
|
||||
"Access operations associated with this rule.
|
||||
|
||||
This leaf matches if it has the value '*' or if the
|
||||
bit corresponding to the requested operation is set.";
|
||||
}
|
||||
|
||||
leaf action {
|
||||
type action-type;
|
||||
mandatory true;
|
||||
description
|
||||
"The access control action associated with the
|
||||
rule. If a rule has been determined to match a
|
||||
particular request, then this object is used
|
||||
to determine whether to permit or deny the
|
||||
request.";
|
||||
}
|
||||
|
||||
leaf comment {
|
||||
type string;
|
||||
description
|
||||
"A textual description of the access rule.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
555
yang/standard/ietf-netconf-monitoring@2010-10-04.yang
Normal file
555
yang/standard/ietf-netconf-monitoring@2010-10-04.yang
Normal file
|
|
@ -0,0 +1,555 @@
|
|||
module ietf-netconf-monitoring {
|
||||
|
||||
namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring";
|
||||
prefix "ncm";
|
||||
|
||||
import ietf-yang-types { prefix yang; }
|
||||
import ietf-inet-types { prefix inet; }
|
||||
|
||||
organization
|
||||
"IETF NETCONF (Network Configuration) Working Group";
|
||||
|
||||
contact
|
||||
"WG Web: <http://tools.ietf.org/wg/netconf/>
|
||||
WG List: <mailto:netconf@ietf.org>
|
||||
|
||||
WG Chair: Mehmet Ersue
|
||||
<mailto:mehmet.ersue@nsn.com>
|
||||
|
||||
WG Chair: Bert Wijnen
|
||||
<mailto:bertietf@bwijnen.net>
|
||||
|
||||
Editor: Mark Scott
|
||||
<mailto:mark.scott@ericsson.com>
|
||||
|
||||
Editor: Martin Bjorklund
|
||||
<mailto:mbj@tail-f.com>";
|
||||
|
||||
description
|
||||
"NETCONF Monitoring Module.
|
||||
All elements in this module are read-only.
|
||||
|
||||
Copyright (c) 2010 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 6022; see
|
||||
the RFC itself for full legal notices.";
|
||||
|
||||
revision 2010-10-04 {
|
||||
description
|
||||
"Initial revision.";
|
||||
reference
|
||||
"RFC 6022: YANG Module for NETCONF Monitoring";
|
||||
}
|
||||
|
||||
typedef netconf-datastore-type {
|
||||
type enumeration {
|
||||
enum running;
|
||||
enum candidate;
|
||||
enum startup;
|
||||
}
|
||||
description
|
||||
"Enumeration of possible NETCONF datastore types.";
|
||||
reference
|
||||
"RFC 4741: NETCONF Configuration Protocol";
|
||||
}
|
||||
|
||||
identity transport {
|
||||
description
|
||||
"Base identity for NETCONF transport types.";
|
||||
}
|
||||
|
||||
identity netconf-ssh {
|
||||
base transport;
|
||||
description
|
||||
"NETCONF over Secure Shell (SSH).";
|
||||
reference
|
||||
"RFC 4742: Using the NETCONF Configuration Protocol
|
||||
over Secure SHell (SSH)";
|
||||
}
|
||||
|
||||
identity netconf-soap-over-beep {
|
||||
base transport;
|
||||
description
|
||||
"NETCONF over Simple Object Access Protocol (SOAP) over
|
||||
Blocks Extensible Exchange Protocol (BEEP).";
|
||||
reference
|
||||
"RFC 4743: Using NETCONF over the Simple Object
|
||||
Access Protocol (SOAP)";
|
||||
}
|
||||
|
||||
identity netconf-soap-over-https {
|
||||
base transport;
|
||||
description
|
||||
"NETCONF over Simple Object Access Protocol (SOAP)
|
||||
over Hypertext Transfer Protocol Secure (HTTPS).";
|
||||
reference
|
||||
"RFC 4743: Using NETCONF over the Simple Object
|
||||
Access Protocol (SOAP)";
|
||||
}
|
||||
|
||||
identity netconf-beep {
|
||||
base transport;
|
||||
description
|
||||
"NETCONF over Blocks Extensible Exchange Protocol (BEEP).";
|
||||
reference
|
||||
"RFC 4744: Using the NETCONF Protocol over the
|
||||
Blocks Extensible Exchange Protocol (BEEP)";
|
||||
}
|
||||
|
||||
identity netconf-tls {
|
||||
base transport;
|
||||
description
|
||||
"NETCONF over Transport Layer Security (TLS).";
|
||||
reference
|
||||
"RFC 5539: NETCONF over Transport Layer Security (TLS)";
|
||||
}
|
||||
|
||||
identity schema-format {
|
||||
description
|
||||
"Base identity for data model schema languages.";
|
||||
}
|
||||
|
||||
identity xsd {
|
||||
base schema-format;
|
||||
description
|
||||
"W3C XML Schema Definition.";
|
||||
reference
|
||||
"W3C REC REC-xmlschema-1-20041028:
|
||||
XML Schema Part 1: Structures";
|
||||
}
|
||||
|
||||
identity yang {
|
||||
base schema-format;
|
||||
description
|
||||
"The YANG data modeling language for NETCONF.";
|
||||
reference
|
||||
"RFC 6020: YANG - A Data Modeling Language for the
|
||||
Network Configuration Protocol (NETCONF)";
|
||||
}
|
||||
|
||||
identity yin {
|
||||
base schema-format;
|
||||
description
|
||||
"The YIN syntax for YANG.";
|
||||
reference
|
||||
"RFC 6020: YANG - A Data Modeling Language for the
|
||||
Network Configuration Protocol (NETCONF)";
|
||||
}
|
||||
|
||||
identity rng {
|
||||
base schema-format;
|
||||
description
|
||||
"Regular Language for XML Next Generation (RELAX NG).";
|
||||
reference
|
||||
"ISO/IEC 19757-2:2008: RELAX NG";
|
||||
}
|
||||
|
||||
identity rnc {
|
||||
base schema-format;
|
||||
description
|
||||
"Relax NG Compact Syntax";
|
||||
reference
|
||||
"ISO/IEC 19757-2:2008: RELAX NG";
|
||||
}
|
||||
|
||||
grouping common-counters {
|
||||
description
|
||||
"Counters that exist both per session, and also globally,
|
||||
accumulated from all sessions.";
|
||||
|
||||
leaf in-rpcs {
|
||||
type yang:zero-based-counter32;
|
||||
description
|
||||
"Number of correct <rpc> messages received.";
|
||||
}
|
||||
leaf in-bad-rpcs {
|
||||
type yang:zero-based-counter32;
|
||||
description
|
||||
"Number of messages received when an <rpc> message was expected,
|
||||
that were not correct <rpc> messages. This includes XML parse
|
||||
errors and errors on the rpc layer.";
|
||||
}
|
||||
leaf out-rpc-errors {
|
||||
type yang:zero-based-counter32;
|
||||
description
|
||||
"Number of <rpc-reply> messages sent that contained an
|
||||
<rpc-error> element.";
|
||||
}
|
||||
leaf out-notifications {
|
||||
type yang:zero-based-counter32;
|
||||
description
|
||||
"Number of <notification> messages sent.";
|
||||
}
|
||||
}
|
||||
|
||||
container netconf-state {
|
||||
config false;
|
||||
description
|
||||
"The netconf-state container is the root of the monitoring
|
||||
data model.";
|
||||
|
||||
container capabilities {
|
||||
description
|
||||
"Contains the list of NETCONF capabilities supported by the
|
||||
server.";
|
||||
|
||||
leaf-list capability {
|
||||
type inet:uri;
|
||||
description
|
||||
"List of NETCONF capabilities supported by the server.";
|
||||
}
|
||||
}
|
||||
|
||||
container datastores {
|
||||
description
|
||||
"Contains the list of NETCONF configuration datastores.";
|
||||
|
||||
list datastore {
|
||||
key name;
|
||||
description
|
||||
"List of NETCONF configuration datastores supported by
|
||||
the NETCONF server and related information.";
|
||||
|
||||
leaf name {
|
||||
type netconf-datastore-type;
|
||||
description
|
||||
"Name of the datastore associated with this list entry.";
|
||||
}
|
||||
container locks {
|
||||
presence
|
||||
"This container is present only if the datastore
|
||||
is locked.";
|
||||
description
|
||||
"The NETCONF <lock> and <partial-lock> operations allow
|
||||
a client to lock specific resources in a datastore. The
|
||||
NETCONF server will prevent changes to the locked
|
||||
resources by all sessions except the one that acquired
|
||||
the lock(s).
|
||||
|
||||
Monitoring information is provided for each datastore
|
||||
entry including details such as the session that acquired
|
||||
the lock, the type of lock (global or partial) and the
|
||||
list of locked resources. Multiple locks per datastore
|
||||
are supported.";
|
||||
|
||||
grouping lock-info {
|
||||
description
|
||||
"Lock related parameters, common to both global and
|
||||
partial locks.";
|
||||
|
||||
leaf locked-by-session {
|
||||
type uint32;
|
||||
mandatory true;
|
||||
description
|
||||
"The session ID of the session that has locked
|
||||
this resource. Both a global lock and a partial
|
||||
lock MUST contain the NETCONF session-id.
|
||||
|
||||
If the lock is held by a session that is not managed
|
||||
by the NETCONF server (e.g., a CLI session), a session
|
||||
id of 0 (zero) is reported.";
|
||||
reference
|
||||
"RFC 4741: NETCONF Configuration Protocol";
|
||||
}
|
||||
leaf locked-time {
|
||||
type yang:date-and-time;
|
||||
mandatory true;
|
||||
description
|
||||
"The date and time of when the resource was
|
||||
locked.";
|
||||
}
|
||||
}
|
||||
choice lock-type {
|
||||
description
|
||||
"Indicates if a global lock or a set of partial locks
|
||||
are set.";
|
||||
|
||||
container global-lock {
|
||||
description
|
||||
"Present if the global lock is set.";
|
||||
uses lock-info;
|
||||
}
|
||||
|
||||
list partial-lock {
|
||||
key lock-id;
|
||||
description
|
||||
"List of partial locks.";
|
||||
reference
|
||||
"RFC 5717: Partial Lock Remote Procedure Call (RPC) for
|
||||
NETCONF";
|
||||
|
||||
leaf lock-id {
|
||||
type uint32;
|
||||
description
|
||||
"This is the lock id returned in the <partial-lock>
|
||||
response.";
|
||||
}
|
||||
uses lock-info;
|
||||
leaf-list select {
|
||||
type yang:xpath1.0;
|
||||
min-elements 1;
|
||||
description
|
||||
"The xpath expression that was used to request
|
||||
the lock. The select expression indicates the
|
||||
original intended scope of the lock.";
|
||||
}
|
||||
leaf-list locked-node {
|
||||
type instance-identifier;
|
||||
description
|
||||
"The list of instance-identifiers (i.e., the
|
||||
locked nodes).
|
||||
|
||||
The scope of the partial lock is defined by the list
|
||||
of locked nodes.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
container schemas {
|
||||
description
|
||||
"Contains the list of data model schemas supported by the
|
||||
server.";
|
||||
|
||||
list schema {
|
||||
key "identifier version format";
|
||||
|
||||
description
|
||||
"List of data model schemas supported by the server.";
|
||||
|
||||
leaf identifier {
|
||||
type string;
|
||||
description
|
||||
"Identifier to uniquely reference the schema. The
|
||||
identifier is used in the <get-schema> operation and may
|
||||
be used for other purposes such as file retrieval.
|
||||
|
||||
For modeling languages that support or require a data
|
||||
model name (e.g., YANG module name) the identifier MUST
|
||||
match that name. For YANG data models, the identifier is
|
||||
the name of the module or submodule. In other cases, an
|
||||
identifier such as a filename MAY be used instead.";
|
||||
}
|
||||
leaf version {
|
||||
type string;
|
||||
description
|
||||
"Version of the schema supported. Multiple versions MAY be
|
||||
supported simultaneously by a NETCONF server. Each
|
||||
version MUST be reported individually in the schema list,
|
||||
i.e., with same identifier, possibly different location,
|
||||
but different version.
|
||||
|
||||
For YANG data models, version is the value of the most
|
||||
recent YANG 'revision' statement in the module or
|
||||
submodule, or the empty string if no 'revision' statement
|
||||
is present.";
|
||||
}
|
||||
leaf format {
|
||||
type identityref {
|
||||
base schema-format;
|
||||
}
|
||||
description
|
||||
"The data modeling language the schema is written
|
||||
in (currently xsd, yang, yin, rng, or rnc).
|
||||
For YANG data models, 'yang' format MUST be supported and
|
||||
'yin' format MAY also be provided.";
|
||||
}
|
||||
leaf namespace {
|
||||
type inet:uri;
|
||||
mandatory true;
|
||||
description
|
||||
"The XML namespace defined by the data model.
|
||||
|
||||
For YANG data models, this is the module's namespace.
|
||||
If the list entry describes a submodule, this field
|
||||
contains the namespace of the module to which the
|
||||
submodule belongs.";
|
||||
}
|
||||
leaf-list location {
|
||||
type union {
|
||||
type enumeration {
|
||||
enum "NETCONF";
|
||||
}
|
||||
type inet:uri;
|
||||
}
|
||||
description
|
||||
"One or more locations from which the schema can be
|
||||
retrieved. This list SHOULD contain at least one
|
||||
entry per schema.
|
||||
|
||||
A schema entry may be located on a remote file system
|
||||
(e.g., reference to file system for ftp retrieval) or
|
||||
retrieved directly from a server supporting the
|
||||
<get-schema> operation (denoted by the value 'NETCONF').";
|
||||
}
|
||||
}
|
||||
}
|
||||
container sessions {
|
||||
description
|
||||
"The sessions container includes session-specific data for
|
||||
NETCONF management sessions. The session list MUST include
|
||||
all currently active NETCONF sessions.";
|
||||
|
||||
list session {
|
||||
key session-id;
|
||||
description
|
||||
"All NETCONF sessions managed by the NETCONF server
|
||||
MUST be reported in this list.";
|
||||
|
||||
leaf session-id {
|
||||
type uint32 {
|
||||
range "1..max";
|
||||
}
|
||||
description
|
||||
"Unique identifier for the session. This value is the
|
||||
NETCONF session identifier, as defined in RFC 4741.";
|
||||
reference
|
||||
"RFC 4741: NETCONF Configuration Protocol";
|
||||
}
|
||||
leaf transport {
|
||||
type identityref {
|
||||
base transport;
|
||||
}
|
||||
mandatory true;
|
||||
description
|
||||
"Identifies the transport for each session, e.g.,
|
||||
'netconf-ssh', 'netconf-soap', etc.";
|
||||
}
|
||||
leaf username {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"The username is the client identity that was authenticated
|
||||
by the NETCONF transport protocol. The algorithm used to
|
||||
derive the username is NETCONF transport protocol specific
|
||||
and in addition specific to the authentication mechanism
|
||||
used by the NETCONF transport protocol.";
|
||||
}
|
||||
leaf source-host {
|
||||
type inet:host;
|
||||
description
|
||||
"Host identifier of the NETCONF client. The value
|
||||
returned is implementation specific (e.g., hostname,
|
||||
IPv4 address, IPv6 address)";
|
||||
}
|
||||
leaf login-time {
|
||||
type yang:date-and-time;
|
||||
mandatory true;
|
||||
description
|
||||
"Time at the server at which the session was established.";
|
||||
}
|
||||
uses common-counters {
|
||||
description
|
||||
"Per-session counters. Zero based with following reset
|
||||
behaviour:
|
||||
- at start of a session
|
||||
- when max value is reached";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
container statistics {
|
||||
description
|
||||
"Statistical data pertaining to the NETCONF server.";
|
||||
|
||||
leaf netconf-start-time {
|
||||
type yang:date-and-time;
|
||||
description
|
||||
"Date and time at which the management subsystem was
|
||||
started.";
|
||||
}
|
||||
leaf in-bad-hellos {
|
||||
type yang:zero-based-counter32;
|
||||
description
|
||||
"Number of sessions silently dropped because an
|
||||
invalid <hello> message was received. This includes <hello>
|
||||
messages with a 'session-id' attribute, bad namespace, and
|
||||
bad capability declarations.";
|
||||
}
|
||||
leaf in-sessions {
|
||||
type yang:zero-based-counter32;
|
||||
description
|
||||
"Number of sessions started. This counter is incremented
|
||||
when a <hello> message with a <session-id> is sent.
|
||||
|
||||
'in-sessions' - 'in-bad-hellos' =
|
||||
'number of correctly started netconf sessions'";
|
||||
}
|
||||
leaf dropped-sessions {
|
||||
type yang:zero-based-counter32;
|
||||
description
|
||||
"Number of sessions that were abnormally terminated, e.g.,
|
||||
due to idle timeout or transport close. This counter is not
|
||||
incremented when a session is properly closed by a
|
||||
<close-session> operation, or killed by a <kill-session>
|
||||
operation.";
|
||||
}
|
||||
uses common-counters {
|
||||
description
|
||||
"Global counters, accumulated from all sessions.
|
||||
Zero based with following reset behaviour:
|
||||
- re-initialization of NETCONF server
|
||||
- when max value is reached";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rpc get-schema {
|
||||
description
|
||||
"This operation is used to retrieve a schema from the
|
||||
NETCONF server.
|
||||
|
||||
Positive Response:
|
||||
The NETCONF server returns the requested schema.
|
||||
|
||||
Negative Response:
|
||||
If requested schema does not exist, the <error-tag> is
|
||||
'invalid-value'.
|
||||
|
||||
If more than one schema matches the requested parameters, the
|
||||
<error-tag> is 'operation-failed', and <error-app-tag> is
|
||||
'data-not-unique'.";
|
||||
|
||||
input {
|
||||
leaf identifier {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"Identifier for the schema list entry.";
|
||||
}
|
||||
leaf version {
|
||||
type string;
|
||||
description
|
||||
"Version of the schema requested. If this parameter is not
|
||||
present, and more than one version of the schema exists on
|
||||
the server, a 'data-not-unique' error is returned, as
|
||||
described above.";
|
||||
}
|
||||
leaf format {
|
||||
type identityref {
|
||||
base schema-format;
|
||||
}
|
||||
description
|
||||
"The data modeling language of the schema. If this
|
||||
parameter is not present, and more than one formats of
|
||||
the schema exists on the server, a 'data-not-unique' error
|
||||
is returned, as described above.";
|
||||
}
|
||||
}
|
||||
output {
|
||||
anyxml data {
|
||||
description
|
||||
"Contains the schema content.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
926
yang/standard/ietf-netconf@2011-06-01.yang
Normal file
926
yang/standard/ietf-netconf@2011-06-01.yang
Normal file
|
|
@ -0,0 +1,926 @@
|
|||
module ietf-netconf {
|
||||
|
||||
// the namespace for NETCONF XML definitions is unchanged
|
||||
// from RFC 4741, which this document replaces
|
||||
namespace "urn:ietf:params:xml:ns:netconf:base:1.0";
|
||||
|
||||
prefix nc;
|
||||
|
||||
import ietf-inet-types {
|
||||
prefix inet;
|
||||
}
|
||||
|
||||
organization
|
||||
"IETF NETCONF (Network Configuration) Working Group";
|
||||
|
||||
contact
|
||||
"WG Web: <http://tools.ietf.org/wg/netconf/>
|
||||
WG List: <netconf@ietf.org>
|
||||
|
||||
WG Chair: Bert Wijnen
|
||||
<bertietf@bwijnen.net>
|
||||
|
||||
WG Chair: Mehmet Ersue
|
||||
<mehmet.ersue@nsn.com>
|
||||
|
||||
Editor: Martin Bjorklund
|
||||
<mbj@tail-f.com>
|
||||
|
||||
Editor: Juergen Schoenwaelder
|
||||
<j.schoenwaelder@jacobs-university.de>
|
||||
|
||||
Editor: Andy Bierman
|
||||
<andy.bierman@brocade.com>";
|
||||
|
||||
description
|
||||
"NETCONF Protocol Data Types and Protocol Operations.
|
||||
|
||||
Copyright (c) 2011 IETF Trust and the persons identified as
|
||||
the document authors. 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 6241; see
|
||||
the RFC itself for full legal notices.";
|
||||
revision 2011-06-01 {
|
||||
description
|
||||
"Initial revision";
|
||||
reference
|
||||
"RFC 6241: Network Configuration Protocol";
|
||||
}
|
||||
|
||||
extension get-filter-element-attributes {
|
||||
description
|
||||
"If this extension is present within an 'anyxml'
|
||||
statement named 'filter', which must be conceptually
|
||||
defined within the RPC input section for the <get>
|
||||
and <get-config> protocol operations, then the
|
||||
following unqualified XML attribute is supported
|
||||
within the <filter> element, within a <get> or
|
||||
<get-config> protocol operation:
|
||||
|
||||
type : optional attribute with allowed
|
||||
value strings 'subtree' and 'xpath'.
|
||||
If missing, the default value is 'subtree'.
|
||||
|
||||
If the 'xpath' feature is supported, then the
|
||||
following unqualified XML attribute is
|
||||
also supported:
|
||||
|
||||
select: optional attribute containing a
|
||||
string representing an XPath expression.
|
||||
The 'type' attribute must be equal to 'xpath'
|
||||
if this attribute is present.";
|
||||
}
|
||||
|
||||
// NETCONF capabilities defined as features
|
||||
feature writable-running {
|
||||
description
|
||||
"NETCONF :writable-running capability;
|
||||
If the server advertises the :writable-running
|
||||
capability for a session, then this feature must
|
||||
also be enabled for that session. Otherwise,
|
||||
this feature must not be enabled.";
|
||||
reference "RFC 6241, Section 8.2";
|
||||
}
|
||||
|
||||
feature candidate {
|
||||
description
|
||||
"NETCONF :candidate capability;
|
||||
If the server advertises the :candidate
|
||||
capability for a session, then this feature must
|
||||
also be enabled for that session. Otherwise,
|
||||
this feature must not be enabled.";
|
||||
reference "RFC 6241, Section 8.3";
|
||||
}
|
||||
|
||||
feature confirmed-commit {
|
||||
if-feature candidate;
|
||||
description
|
||||
"NETCONF :confirmed-commit:1.1 capability;
|
||||
If the server advertises the :confirmed-commit:1.1
|
||||
capability for a session, then this feature must
|
||||
also be enabled for that session. Otherwise,
|
||||
this feature must not be enabled.";
|
||||
|
||||
reference "RFC 6241, Section 8.4";
|
||||
}
|
||||
|
||||
feature rollback-on-error {
|
||||
description
|
||||
"NETCONF :rollback-on-error capability;
|
||||
If the server advertises the :rollback-on-error
|
||||
capability for a session, then this feature must
|
||||
also be enabled for that session. Otherwise,
|
||||
this feature must not be enabled.";
|
||||
reference "RFC 6241, Section 8.5";
|
||||
}
|
||||
|
||||
feature validate {
|
||||
description
|
||||
"NETCONF :validate:1.1 capability;
|
||||
If the server advertises the :validate:1.1
|
||||
capability for a session, then this feature must
|
||||
also be enabled for that session. Otherwise,
|
||||
this feature must not be enabled.";
|
||||
reference "RFC 6241, Section 8.6";
|
||||
}
|
||||
|
||||
feature startup {
|
||||
description
|
||||
"NETCONF :startup capability;
|
||||
If the server advertises the :startup
|
||||
capability for a session, then this feature must
|
||||
also be enabled for that session. Otherwise,
|
||||
this feature must not be enabled.";
|
||||
reference "RFC 6241, Section 8.7";
|
||||
}
|
||||
|
||||
feature url {
|
||||
description
|
||||
"NETCONF :url capability;
|
||||
If the server advertises the :url
|
||||
capability for a session, then this feature must
|
||||
also be enabled for that session. Otherwise,
|
||||
this feature must not be enabled.";
|
||||
reference "RFC 6241, Section 8.8";
|
||||
}
|
||||
|
||||
feature xpath {
|
||||
description
|
||||
"NETCONF :xpath capability;
|
||||
If the server advertises the :xpath
|
||||
capability for a session, then this feature must
|
||||
also be enabled for that session. Otherwise,
|
||||
this feature must not be enabled.";
|
||||
reference "RFC 6241, Section 8.9";
|
||||
}
|
||||
|
||||
// NETCONF Simple Types
|
||||
|
||||
typedef session-id-type {
|
||||
type uint32 {
|
||||
range "1..max";
|
||||
}
|
||||
description
|
||||
"NETCONF Session Id";
|
||||
}
|
||||
|
||||
typedef session-id-or-zero-type {
|
||||
type uint32;
|
||||
description
|
||||
"NETCONF Session Id or Zero to indicate none";
|
||||
}
|
||||
typedef error-tag-type {
|
||||
type enumeration {
|
||||
enum in-use {
|
||||
description
|
||||
"The request requires a resource that
|
||||
already is in use.";
|
||||
}
|
||||
enum invalid-value {
|
||||
description
|
||||
"The request specifies an unacceptable value for one
|
||||
or more parameters.";
|
||||
}
|
||||
enum too-big {
|
||||
description
|
||||
"The request or response (that would be generated) is
|
||||
too large for the implementation to handle.";
|
||||
}
|
||||
enum missing-attribute {
|
||||
description
|
||||
"An expected attribute is missing.";
|
||||
}
|
||||
enum bad-attribute {
|
||||
description
|
||||
"An attribute value is not correct; e.g., wrong type,
|
||||
out of range, pattern mismatch.";
|
||||
}
|
||||
enum unknown-attribute {
|
||||
description
|
||||
"An unexpected attribute is present.";
|
||||
}
|
||||
enum missing-element {
|
||||
description
|
||||
"An expected element is missing.";
|
||||
}
|
||||
enum bad-element {
|
||||
description
|
||||
"An element value is not correct; e.g., wrong type,
|
||||
out of range, pattern mismatch.";
|
||||
}
|
||||
enum unknown-element {
|
||||
description
|
||||
"An unexpected element is present.";
|
||||
}
|
||||
enum unknown-namespace {
|
||||
description
|
||||
"An unexpected namespace is present.";
|
||||
}
|
||||
enum access-denied {
|
||||
description
|
||||
"Access to the requested protocol operation or
|
||||
data model is denied because authorization failed.";
|
||||
}
|
||||
enum lock-denied {
|
||||
description
|
||||
"Access to the requested lock is denied because the
|
||||
lock is currently held by another entity.";
|
||||
}
|
||||
enum resource-denied {
|
||||
description
|
||||
"Request could not be completed because of
|
||||
insufficient resources.";
|
||||
}
|
||||
enum rollback-failed {
|
||||
description
|
||||
"Request to roll back some configuration change (via
|
||||
rollback-on-error or <discard-changes> operations)
|
||||
was not completed for some reason.";
|
||||
|
||||
}
|
||||
enum data-exists {
|
||||
description
|
||||
"Request could not be completed because the relevant
|
||||
data model content already exists. For example,
|
||||
a 'create' operation was attempted on data that
|
||||
already exists.";
|
||||
}
|
||||
enum data-missing {
|
||||
description
|
||||
"Request could not be completed because the relevant
|
||||
data model content does not exist. For example,
|
||||
a 'delete' operation was attempted on
|
||||
data that does not exist.";
|
||||
}
|
||||
enum operation-not-supported {
|
||||
description
|
||||
"Request could not be completed because the requested
|
||||
operation is not supported by this implementation.";
|
||||
}
|
||||
enum operation-failed {
|
||||
description
|
||||
"Request could not be completed because the requested
|
||||
operation failed for some reason not covered by
|
||||
any other error condition.";
|
||||
}
|
||||
enum partial-operation {
|
||||
description
|
||||
"This error-tag is obsolete, and SHOULD NOT be sent
|
||||
by servers conforming to this document.";
|
||||
}
|
||||
enum malformed-message {
|
||||
description
|
||||
"A message could not be handled because it failed to
|
||||
be parsed correctly. For example, the message is not
|
||||
well-formed XML or it uses an invalid character set.";
|
||||
}
|
||||
}
|
||||
description "NETCONF Error Tag";
|
||||
reference "RFC 6241, Appendix A";
|
||||
}
|
||||
|
||||
typedef error-severity-type {
|
||||
type enumeration {
|
||||
enum error {
|
||||
description "Error severity";
|
||||
}
|
||||
enum warning {
|
||||
description "Warning severity";
|
||||
}
|
||||
}
|
||||
description "NETCONF Error Severity";
|
||||
reference "RFC 6241, Section 4.3";
|
||||
}
|
||||
|
||||
typedef edit-operation-type {
|
||||
type enumeration {
|
||||
enum merge {
|
||||
description
|
||||
"The configuration data identified by the
|
||||
element containing this attribute is merged
|
||||
with the configuration at the corresponding
|
||||
level in the configuration datastore identified
|
||||
by the target parameter.";
|
||||
}
|
||||
enum replace {
|
||||
description
|
||||
"The configuration data identified by the element
|
||||
containing this attribute replaces any related
|
||||
configuration in the configuration datastore
|
||||
identified by the target parameter. If no such
|
||||
configuration data exists in the configuration
|
||||
datastore, it is created. Unlike a
|
||||
<copy-config> operation, which replaces the
|
||||
entire target configuration, only the configuration
|
||||
actually present in the config parameter is affected.";
|
||||
}
|
||||
enum create {
|
||||
description
|
||||
"The configuration data identified by the element
|
||||
containing this attribute is added to the
|
||||
configuration if and only if the configuration
|
||||
data does not already exist in the configuration
|
||||
datastore. If the configuration data exists, an
|
||||
<rpc-error> element is returned with an
|
||||
<error-tag> value of 'data-exists'.";
|
||||
}
|
||||
enum delete {
|
||||
description
|
||||
"The configuration data identified by the element
|
||||
containing this attribute is deleted from the
|
||||
configuration if and only if the configuration
|
||||
data currently exists in the configuration
|
||||
datastore. If the configuration data does not
|
||||
exist, an <rpc-error> element is returned with
|
||||
an <error-tag> value of 'data-missing'.";
|
||||
}
|
||||
enum remove {
|
||||
description
|
||||
"The configuration data identified by the element
|
||||
containing this attribute is deleted from the
|
||||
configuration if the configuration
|
||||
data currently exists in the configuration
|
||||
datastore. If the configuration data does not
|
||||
exist, the 'remove' operation is silently ignored
|
||||
by the server.";
|
||||
}
|
||||
}
|
||||
default "merge";
|
||||
description "NETCONF 'operation' attribute values";
|
||||
reference "RFC 6241, Section 7.2";
|
||||
}
|
||||
|
||||
// NETCONF Standard Protocol Operations
|
||||
|
||||
rpc get-config {
|
||||
description
|
||||
"Retrieve all or part of a specified configuration.";
|
||||
|
||||
reference "RFC 6241, Section 7.1";
|
||||
|
||||
input {
|
||||
container source {
|
||||
description
|
||||
"Particular configuration to retrieve.";
|
||||
|
||||
choice config-source {
|
||||
mandatory true;
|
||||
description
|
||||
"The configuration to retrieve.";
|
||||
leaf candidate {
|
||||
if-feature candidate;
|
||||
type empty;
|
||||
description
|
||||
"The candidate configuration is the config source.";
|
||||
}
|
||||
leaf running {
|
||||
type empty;
|
||||
description
|
||||
"The running configuration is the config source.";
|
||||
}
|
||||
leaf startup {
|
||||
if-feature startup;
|
||||
type empty;
|
||||
description
|
||||
"The startup configuration is the config source.
|
||||
This is optional-to-implement on the server because
|
||||
not all servers will support filtering for this
|
||||
datastore.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
anyxml filter {
|
||||
description
|
||||
"Subtree or XPath filter to use.";
|
||||
nc:get-filter-element-attributes;
|
||||
}
|
||||
}
|
||||
|
||||
output {
|
||||
anyxml data {
|
||||
description
|
||||
"Copy of the source datastore subset that matched
|
||||
the filter criteria (if any). An empty data container
|
||||
indicates that the request did not produce any results.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rpc edit-config {
|
||||
description
|
||||
"The <edit-config> operation loads all or part of a specified
|
||||
configuration to the specified target configuration.";
|
||||
|
||||
reference "RFC 6241, Section 7.2";
|
||||
|
||||
input {
|
||||
container target {
|
||||
description
|
||||
"Particular configuration to edit.";
|
||||
|
||||
choice config-target {
|
||||
mandatory true;
|
||||
description
|
||||
"The configuration target.";
|
||||
|
||||
leaf candidate {
|
||||
if-feature candidate;
|
||||
type empty;
|
||||
description
|
||||
"The candidate configuration is the config target.";
|
||||
}
|
||||
leaf running {
|
||||
if-feature writable-running;
|
||||
type empty;
|
||||
description
|
||||
"The running configuration is the config source.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
leaf default-operation {
|
||||
type enumeration {
|
||||
enum merge {
|
||||
description
|
||||
"The default operation is merge.";
|
||||
}
|
||||
enum replace {
|
||||
description
|
||||
"The default operation is replace.";
|
||||
}
|
||||
enum none {
|
||||
description
|
||||
"There is no default operation.";
|
||||
}
|
||||
}
|
||||
default "merge";
|
||||
description
|
||||
"The default operation to use.";
|
||||
}
|
||||
|
||||
leaf test-option {
|
||||
if-feature validate;
|
||||
type enumeration {
|
||||
enum test-then-set {
|
||||
description
|
||||
"The server will test and then set if no errors.";
|
||||
}
|
||||
enum set {
|
||||
description
|
||||
"The server will set without a test first.";
|
||||
}
|
||||
|
||||
enum test-only {
|
||||
description
|
||||
"The server will only test and not set, even
|
||||
if there are no errors.";
|
||||
}
|
||||
}
|
||||
default "test-then-set";
|
||||
description
|
||||
"The test option to use.";
|
||||
}
|
||||
|
||||
leaf error-option {
|
||||
type enumeration {
|
||||
enum stop-on-error {
|
||||
description
|
||||
"The server will stop on errors.";
|
||||
}
|
||||
enum continue-on-error {
|
||||
description
|
||||
"The server may continue on errors.";
|
||||
}
|
||||
enum rollback-on-error {
|
||||
description
|
||||
"The server will roll back on errors.
|
||||
This value can only be used if the 'rollback-on-error'
|
||||
feature is supported.";
|
||||
}
|
||||
}
|
||||
default "stop-on-error";
|
||||
description
|
||||
"The error option to use.";
|
||||
}
|
||||
|
||||
choice edit-content {
|
||||
mandatory true;
|
||||
description
|
||||
"The content for the edit operation.";
|
||||
|
||||
anyxml config {
|
||||
description
|
||||
"Inline Config content.";
|
||||
}
|
||||
leaf url {
|
||||
if-feature url;
|
||||
type inet:uri;
|
||||
description
|
||||
"URL-based config content.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rpc copy-config {
|
||||
description
|
||||
"Create or replace an entire configuration datastore with the
|
||||
contents of another complete configuration datastore.";
|
||||
|
||||
reference "RFC 6241, Section 7.3";
|
||||
|
||||
input {
|
||||
container target {
|
||||
description
|
||||
"Particular configuration to copy to.";
|
||||
|
||||
choice config-target {
|
||||
mandatory true;
|
||||
description
|
||||
"The configuration target of the copy operation.";
|
||||
|
||||
leaf candidate {
|
||||
if-feature candidate;
|
||||
type empty;
|
||||
description
|
||||
"The candidate configuration is the config target.";
|
||||
}
|
||||
leaf running {
|
||||
if-feature writable-running;
|
||||
type empty;
|
||||
description
|
||||
"The running configuration is the config target.
|
||||
This is optional-to-implement on the server.";
|
||||
}
|
||||
leaf startup {
|
||||
if-feature startup;
|
||||
type empty;
|
||||
description
|
||||
"The startup configuration is the config target.";
|
||||
}
|
||||
leaf url {
|
||||
if-feature url;
|
||||
type inet:uri;
|
||||
description
|
||||
"The URL-based configuration is the config target.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
container source {
|
||||
description
|
||||
"Particular configuration to copy from.";
|
||||
|
||||
choice config-source {
|
||||
mandatory true;
|
||||
description
|
||||
"The configuration source for the copy operation.";
|
||||
|
||||
leaf candidate {
|
||||
if-feature candidate;
|
||||
type empty;
|
||||
description
|
||||
"The candidate configuration is the config source.";
|
||||
}
|
||||
leaf running {
|
||||
type empty;
|
||||
description
|
||||
"The running configuration is the config source.";
|
||||
}
|
||||
leaf startup {
|
||||
if-feature startup;
|
||||
type empty;
|
||||
description
|
||||
"The startup configuration is the config source.";
|
||||
}
|
||||
leaf url {
|
||||
if-feature url;
|
||||
type inet:uri;
|
||||
description
|
||||
"The URL-based configuration is the config source.";
|
||||
}
|
||||
anyxml config {
|
||||
description
|
||||
"Inline Config content: <config> element. Represents
|
||||
an entire configuration datastore, not
|
||||
a subset of the running datastore.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rpc delete-config {
|
||||
description
|
||||
"Delete a configuration datastore.";
|
||||
|
||||
reference "RFC 6241, Section 7.4";
|
||||
|
||||
input {
|
||||
container target {
|
||||
description
|
||||
"Particular configuration to delete.";
|
||||
|
||||
choice config-target {
|
||||
mandatory true;
|
||||
description
|
||||
"The configuration target to delete.";
|
||||
|
||||
leaf startup {
|
||||
if-feature startup;
|
||||
type empty;
|
||||
description
|
||||
"The startup configuration is the config target.";
|
||||
}
|
||||
leaf url {
|
||||
if-feature url;
|
||||
type inet:uri;
|
||||
description
|
||||
"The URL-based configuration is the config target.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rpc lock {
|
||||
description
|
||||
"The lock operation allows the client to lock the configuration
|
||||
system of a device.";
|
||||
reference "RFC 6241, Section 7.5";
|
||||
|
||||
input {
|
||||
container target {
|
||||
description
|
||||
"Particular configuration to lock.";
|
||||
|
||||
choice config-target {
|
||||
mandatory true;
|
||||
description
|
||||
"The configuration target to lock.";
|
||||
|
||||
leaf candidate {
|
||||
if-feature candidate;
|
||||
type empty;
|
||||
description
|
||||
"The candidate configuration is the config target.";
|
||||
}
|
||||
leaf running {
|
||||
type empty;
|
||||
description
|
||||
"The running configuration is the config target.";
|
||||
}
|
||||
leaf startup {
|
||||
if-feature startup;
|
||||
type empty;
|
||||
description
|
||||
"The startup configuration is the config target.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rpc unlock {
|
||||
description
|
||||
"The unlock operation is used to release a configuration lock,
|
||||
previously obtained with the 'lock' operation.";
|
||||
|
||||
reference "RFC 6241, Section 7.6";
|
||||
|
||||
input {
|
||||
container target {
|
||||
description
|
||||
"Particular configuration to unlock.";
|
||||
|
||||
choice config-target {
|
||||
mandatory true;
|
||||
description
|
||||
"The configuration target to unlock.";
|
||||
|
||||
leaf candidate {
|
||||
if-feature candidate;
|
||||
type empty;
|
||||
description
|
||||
"The candidate configuration is the config target.";
|
||||
}
|
||||
leaf running {
|
||||
type empty;
|
||||
description
|
||||
"The running configuration is the config target.";
|
||||
}
|
||||
leaf startup {
|
||||
if-feature startup;
|
||||
type empty;
|
||||
description
|
||||
"The startup configuration is the config target.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rpc get {
|
||||
description
|
||||
"Retrieve running configuration and device state information.";
|
||||
|
||||
reference "RFC 6241, Section 7.7";
|
||||
|
||||
input {
|
||||
anyxml filter {
|
||||
description
|
||||
"This parameter specifies the portion of the system
|
||||
configuration and state data to retrieve.";
|
||||
nc:get-filter-element-attributes;
|
||||
}
|
||||
}
|
||||
|
||||
output {
|
||||
anyxml data {
|
||||
description
|
||||
"Copy of the running datastore subset and/or state
|
||||
data that matched the filter criteria (if any).
|
||||
An empty data container indicates that the request did not
|
||||
produce any results.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rpc close-session {
|
||||
description
|
||||
"Request graceful termination of a NETCONF session.";
|
||||
|
||||
reference "RFC 6241, Section 7.8";
|
||||
}
|
||||
|
||||
rpc kill-session {
|
||||
description
|
||||
"Force the termination of a NETCONF session.";
|
||||
|
||||
reference "RFC 6241, Section 7.9";
|
||||
|
||||
input {
|
||||
leaf session-id {
|
||||
type session-id-type;
|
||||
mandatory true;
|
||||
description
|
||||
"Particular session to kill.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rpc commit {
|
||||
if-feature candidate;
|
||||
|
||||
description
|
||||
"Commit the candidate configuration as the device's new
|
||||
current configuration.";
|
||||
|
||||
reference "RFC 6241, Section 8.3.4.1";
|
||||
|
||||
input {
|
||||
leaf confirmed {
|
||||
if-feature confirmed-commit;
|
||||
type empty;
|
||||
description
|
||||
"Requests a confirmed commit.";
|
||||
reference "RFC 6241, Section 8.3.4.1";
|
||||
}
|
||||
|
||||
leaf confirm-timeout {
|
||||
if-feature confirmed-commit;
|
||||
type uint32 {
|
||||
range "1..max";
|
||||
}
|
||||
units "seconds";
|
||||
default "600"; // 10 minutes
|
||||
description
|
||||
"The timeout interval for a confirmed commit.";
|
||||
reference "RFC 6241, Section 8.3.4.1";
|
||||
}
|
||||
|
||||
leaf persist {
|
||||
if-feature confirmed-commit;
|
||||
type string;
|
||||
description
|
||||
"This parameter is used to make a confirmed commit
|
||||
persistent. A persistent confirmed commit is not aborted
|
||||
if the NETCONF session terminates. The only way to abort
|
||||
a persistent confirmed commit is to let the timer expire,
|
||||
or to use the <cancel-commit> operation.
|
||||
|
||||
The value of this parameter is a token that must be given
|
||||
in the 'persist-id' parameter of <commit> or
|
||||
<cancel-commit> operations in order to confirm or cancel
|
||||
the persistent confirmed commit.
|
||||
|
||||
The token should be a random string.";
|
||||
reference "RFC 6241, Section 8.3.4.1";
|
||||
}
|
||||
|
||||
leaf persist-id {
|
||||
if-feature confirmed-commit;
|
||||
type string;
|
||||
description
|
||||
"This parameter is given in order to commit a persistent
|
||||
confirmed commit. The value must be equal to the value
|
||||
given in the 'persist' parameter to the <commit> operation.
|
||||
If it does not match, the operation fails with an
|
||||
'invalid-value' error.";
|
||||
reference "RFC 6241, Section 8.3.4.1";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
rpc discard-changes {
|
||||
if-feature candidate;
|
||||
|
||||
description
|
||||
"Revert the candidate configuration to the current
|
||||
running configuration.";
|
||||
reference "RFC 6241, Section 8.3.4.2";
|
||||
}
|
||||
|
||||
rpc cancel-commit {
|
||||
if-feature confirmed-commit;
|
||||
description
|
||||
"This operation is used to cancel an ongoing confirmed commit.
|
||||
If the confirmed commit is persistent, the parameter
|
||||
'persist-id' must be given, and it must match the value of the
|
||||
'persist' parameter.";
|
||||
reference "RFC 6241, Section 8.4.4.1";
|
||||
|
||||
input {
|
||||
leaf persist-id {
|
||||
type string;
|
||||
description
|
||||
"This parameter is given in order to cancel a persistent
|
||||
confirmed commit. The value must be equal to the value
|
||||
given in the 'persist' parameter to the <commit> operation.
|
||||
If it does not match, the operation fails with an
|
||||
'invalid-value' error.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rpc validate {
|
||||
if-feature validate;
|
||||
|
||||
description
|
||||
"Validates the contents of the specified configuration.";
|
||||
|
||||
reference "RFC 6241, Section 8.6.4.1";
|
||||
|
||||
input {
|
||||
container source {
|
||||
description
|
||||
"Particular configuration to validate.";
|
||||
|
||||
choice config-source {
|
||||
mandatory true;
|
||||
description
|
||||
"The configuration source to validate.";
|
||||
|
||||
leaf candidate {
|
||||
if-feature candidate;
|
||||
type empty;
|
||||
description
|
||||
"The candidate configuration is the config source.";
|
||||
}
|
||||
leaf running {
|
||||
type empty;
|
||||
description
|
||||
"The running configuration is the config source.";
|
||||
}
|
||||
leaf startup {
|
||||
if-feature startup;
|
||||
type empty;
|
||||
description
|
||||
"The startup configuration is the config source.";
|
||||
}
|
||||
leaf url {
|
||||
if-feature url;
|
||||
type inet:uri;
|
||||
description
|
||||
"The URL-based configuration is the config source.";
|
||||
}
|
||||
anyxml config {
|
||||
description
|
||||
"Inline Config content: <config> element. Represents
|
||||
an entire configuration datastore, not
|
||||
a subset of the running datastore.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
149
yang/standard/ietf-restconf-monitoring@2017-01-26.yang
Normal file
149
yang/standard/ietf-restconf-monitoring@2017-01-26.yang
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
module ietf-restconf-monitoring {
|
||||
namespace "urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring";
|
||||
prefix "rcmon";
|
||||
|
||||
import ietf-yang-types { prefix yang; }
|
||||
import ietf-inet-types { prefix inet; }
|
||||
|
||||
organization
|
||||
"IETF NETCONF (Network Configuration) Working Group";
|
||||
|
||||
contact
|
||||
"WG Web: <https://datatracker.ietf.org/wg/netconf/>
|
||||
WG List: <mailto:netconf@ietf.org>
|
||||
|
||||
Author: Andy Bierman
|
||||
<mailto:andy@yumaworks.com>
|
||||
|
||||
Author: Martin Bjorklund
|
||||
<mailto:mbj@tail-f.com>
|
||||
|
||||
Author: Kent Watsen
|
||||
<mailto:kwatsen@juniper.net>";
|
||||
|
||||
description
|
||||
"This module contains monitoring information for the
|
||||
RESTCONF protocol.
|
||||
|
||||
Copyright (c) 2017 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 8040; see
|
||||
the RFC itself for full legal notices.";
|
||||
|
||||
revision 2017-01-26 {
|
||||
description
|
||||
"Initial revision.";
|
||||
reference
|
||||
"RFC 8040: RESTCONF Protocol.";
|
||||
}
|
||||
|
||||
container restconf-state {
|
||||
config false;
|
||||
description
|
||||
"Contains RESTCONF protocol monitoring information.";
|
||||
|
||||
container capabilities {
|
||||
description
|
||||
"Contains a list of protocol capability URIs.";
|
||||
|
||||
leaf-list capability {
|
||||
type inet:uri;
|
||||
description
|
||||
"A RESTCONF protocol capability URI.";
|
||||
}
|
||||
}
|
||||
|
||||
container streams {
|
||||
description
|
||||
"Container representing the notification event streams
|
||||
supported by the server.";
|
||||
reference
|
||||
"RFC 5277, Section 3.4, <streams> element.";
|
||||
|
||||
list stream {
|
||||
key name;
|
||||
description
|
||||
"Each entry describes an event stream supported by
|
||||
the server.";
|
||||
|
||||
leaf name {
|
||||
type string;
|
||||
description
|
||||
"The stream name.";
|
||||
reference
|
||||
"RFC 5277, Section 3.4, <name> element.";
|
||||
}
|
||||
|
||||
leaf description {
|
||||
type string;
|
||||
description
|
||||
"Description of stream content.";
|
||||
reference
|
||||
"RFC 5277, Section 3.4, <description> element.";
|
||||
}
|
||||
|
||||
leaf replay-support {
|
||||
type boolean;
|
||||
default false;
|
||||
description
|
||||
"Indicates if replay buffer is supported for this stream.
|
||||
If 'true', then the server MUST support the 'start-time'
|
||||
and 'stop-time' query parameters for this stream.";
|
||||
reference
|
||||
"RFC 5277, Section 3.4, <replaySupport> element.";
|
||||
}
|
||||
|
||||
leaf replay-log-creation-time {
|
||||
when "../replay-support" {
|
||||
description
|
||||
"Only present if notification replay is supported.";
|
||||
}
|
||||
type yang:date-and-time;
|
||||
description
|
||||
"Indicates the time the replay log for this stream
|
||||
was created.";
|
||||
reference
|
||||
"RFC 5277, Section 3.4, <replayLogCreationTime>
|
||||
element.";
|
||||
}
|
||||
|
||||
list access {
|
||||
key encoding;
|
||||
min-elements 1;
|
||||
description
|
||||
"The server will create an entry in this list for each
|
||||
encoding format that is supported for this stream.
|
||||
The media type 'text/event-stream' is expected
|
||||
for all event streams. This list identifies the
|
||||
subtypes supported for this stream.";
|
||||
|
||||
leaf encoding {
|
||||
type string;
|
||||
description
|
||||
"This is the secondary encoding format within the
|
||||
'text/event-stream' encoding used by all streams.
|
||||
The type 'xml' is supported for XML encoding.
|
||||
The type 'json' is supported for JSON encoding.";
|
||||
}
|
||||
|
||||
leaf location {
|
||||
type inet:uri;
|
||||
mandatory true;
|
||||
description
|
||||
"Contains a URL that represents the entry point
|
||||
for establishing notification delivery via
|
||||
server-sent events.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
684
yang/standard/ietf-routing@2018-03-13.yang
Normal file
684
yang/standard/ietf-routing@2018-03-13.yang
Normal file
|
|
@ -0,0 +1,684 @@
|
|||
module ietf-routing {
|
||||
yang-version "1.1";
|
||||
namespace "urn:ietf:params:xml:ns:yang:ietf-routing";
|
||||
prefix "rt";
|
||||
|
||||
import ietf-yang-types {
|
||||
prefix "yang";
|
||||
}
|
||||
|
||||
import ietf-interfaces {
|
||||
prefix "if";
|
||||
description
|
||||
"An 'ietf-interfaces' module version that is compatible with
|
||||
the Network Management Datastore Architecture (NMDA)
|
||||
is required.";
|
||||
}
|
||||
|
||||
organization
|
||||
"IETF NETMOD (Network Modeling) Working Group";
|
||||
contact
|
||||
"WG Web: <https://datatracker.ietf.org/wg/netmod/>
|
||||
WG List: <mailto:rtgwg@ietf.org>
|
||||
|
||||
Editor: Ladislav Lhotka
|
||||
<mailto:lhotka@nic.cz>
|
||||
Acee Lindem
|
||||
<mailto:acee@cisco.com>
|
||||
Yingzhen Qu
|
||||
<mailto:yingzhen.qu@huawei.com>";
|
||||
|
||||
description
|
||||
"This YANG module defines essential components for the management
|
||||
of a routing subsystem. The model fully conforms to the Network
|
||||
Management Datastore Architecture (NMDA).
|
||||
|
||||
Copyright (c) 2018 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 8349; see
|
||||
the RFC itself for full legal notices.";
|
||||
|
||||
revision 2018-03-13 {
|
||||
description
|
||||
"Network Management Datastore Architecture (NMDA) revision.";
|
||||
reference
|
||||
"RFC 8349: A YANG Data Model for Routing Management
|
||||
(NMDA Version)";
|
||||
}
|
||||
|
||||
revision 2016-11-04 {
|
||||
description
|
||||
"Initial revision.";
|
||||
reference
|
||||
"RFC 8022: A YANG Data Model for Routing Management";
|
||||
}
|
||||
|
||||
/* Features */
|
||||
feature multiple-ribs {
|
||||
description
|
||||
"This feature indicates that the server supports
|
||||
user-defined RIBs.
|
||||
|
||||
Servers that do not advertise this feature SHOULD provide
|
||||
exactly one system-controlled RIB per supported address family
|
||||
and also make it the default RIB. This RIB then appears as an
|
||||
entry in the list '/routing/ribs/rib'.";
|
||||
}
|
||||
|
||||
feature router-id {
|
||||
description
|
||||
"This feature indicates that the server supports an explicit
|
||||
32-bit router ID that is used by some routing protocols.
|
||||
|
||||
Servers that do not advertise this feature set a router ID
|
||||
algorithmically, usually to one of the configured IPv4
|
||||
addresses. However, this algorithm is implementation
|
||||
specific.";
|
||||
}
|
||||
|
||||
/* Identities */
|
||||
|
||||
identity address-family {
|
||||
description
|
||||
"Base identity from which identities describing address
|
||||
families are derived.";
|
||||
}
|
||||
identity ipv4 {
|
||||
base address-family;
|
||||
description
|
||||
"This identity represents an IPv4 address family.";
|
||||
}
|
||||
|
||||
identity ipv6 {
|
||||
base address-family;
|
||||
description
|
||||
"This identity represents an IPv6 address family.";
|
||||
}
|
||||
|
||||
identity control-plane-protocol {
|
||||
description
|
||||
"Base identity from which control-plane protocol identities are
|
||||
derived.";
|
||||
}
|
||||
|
||||
identity routing-protocol {
|
||||
base control-plane-protocol;
|
||||
description
|
||||
"Identity from which Layer 3 routing protocol identities are
|
||||
derived.";
|
||||
}
|
||||
|
||||
identity direct {
|
||||
base routing-protocol;
|
||||
description
|
||||
"Routing pseudo-protocol that provides routes to directly
|
||||
connected networks.";
|
||||
}
|
||||
|
||||
identity static {
|
||||
base routing-protocol;
|
||||
description
|
||||
"'Static' routing pseudo-protocol.";
|
||||
}
|
||||
|
||||
/* Type Definitions */
|
||||
|
||||
typedef route-preference {
|
||||
type uint32;
|
||||
description
|
||||
"This type is used for route preferences.";
|
||||
}
|
||||
|
||||
/* Groupings */
|
||||
|
||||
grouping address-family {
|
||||
description
|
||||
"This grouping provides a leaf identifying an address
|
||||
family.";
|
||||
leaf address-family {
|
||||
type identityref {
|
||||
base address-family;
|
||||
}
|
||||
mandatory true;
|
||||
description
|
||||
"Address family.";
|
||||
}
|
||||
}
|
||||
|
||||
grouping router-id {
|
||||
description
|
||||
"This grouping provides a router ID.";
|
||||
leaf router-id {
|
||||
type yang:dotted-quad;
|
||||
description
|
||||
"A 32-bit number in the form of a dotted quad that is used by
|
||||
some routing protocols identifying a router.";
|
||||
reference
|
||||
"RFC 2328: OSPF Version 2";
|
||||
}
|
||||
}
|
||||
|
||||
grouping special-next-hop {
|
||||
description
|
||||
"This grouping provides a leaf with an enumeration of special
|
||||
next hops.";
|
||||
leaf special-next-hop {
|
||||
type enumeration {
|
||||
enum blackhole {
|
||||
description
|
||||
"Silently discard the packet.";
|
||||
}
|
||||
enum unreachable {
|
||||
description
|
||||
"Discard the packet and notify the sender with an error
|
||||
message indicating that the destination host is
|
||||
unreachable.";
|
||||
}
|
||||
enum prohibit {
|
||||
description
|
||||
"Discard the packet and notify the sender with an error
|
||||
message indicating that the communication is
|
||||
administratively prohibited.";
|
||||
}
|
||||
enum receive {
|
||||
description
|
||||
"The packet will be received by the local system.";
|
||||
}
|
||||
}
|
||||
description
|
||||
"Options for special next hops.";
|
||||
}
|
||||
}
|
||||
|
||||
grouping next-hop-content {
|
||||
description
|
||||
"Generic parameters of next hops in static routes.";
|
||||
choice next-hop-options {
|
||||
mandatory true;
|
||||
description
|
||||
"Options for next hops in static routes.
|
||||
|
||||
It is expected that further cases will be added through
|
||||
augments from other modules.";
|
||||
case simple-next-hop {
|
||||
description
|
||||
"This case represents a simple next hop consisting of the
|
||||
next-hop address and/or outgoing interface.
|
||||
|
||||
Modules for address families MUST augment this case with a
|
||||
leaf containing a next-hop address of that address
|
||||
family.";
|
||||
leaf outgoing-interface {
|
||||
type if:interface-ref;
|
||||
description
|
||||
"Name of the outgoing interface.";
|
||||
}
|
||||
}
|
||||
case special-next-hop {
|
||||
uses special-next-hop;
|
||||
}
|
||||
case next-hop-list {
|
||||
container next-hop-list {
|
||||
description
|
||||
"Container for multiple next hops.";
|
||||
list next-hop {
|
||||
key "index";
|
||||
description
|
||||
"An entry in a next-hop list.
|
||||
|
||||
Modules for address families MUST augment this list
|
||||
with a leaf containing a next-hop address of that
|
||||
address family.";
|
||||
leaf index {
|
||||
type string;
|
||||
description
|
||||
"A user-specified identifier utilized to uniquely
|
||||
reference the next-hop entry in the next-hop list.
|
||||
The value of this index has no semantic meaning
|
||||
other than for referencing the entry.";
|
||||
}
|
||||
leaf outgoing-interface {
|
||||
type if:interface-ref;
|
||||
description
|
||||
"Name of the outgoing interface.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping next-hop-state-content {
|
||||
description
|
||||
"Generic state parameters of next hops.";
|
||||
choice next-hop-options {
|
||||
mandatory true;
|
||||
description
|
||||
"Options for next hops.
|
||||
|
||||
It is expected that further cases will be added through
|
||||
augments from other modules, e.g., for recursive
|
||||
next hops.";
|
||||
case simple-next-hop {
|
||||
description
|
||||
"This case represents a simple next hop consisting of the
|
||||
next-hop address and/or outgoing interface.
|
||||
|
||||
Modules for address families MUST augment this case with a
|
||||
leaf containing a next-hop address of that address
|
||||
family.";
|
||||
leaf outgoing-interface {
|
||||
type if:interface-ref;
|
||||
description
|
||||
"Name of the outgoing interface.";
|
||||
}
|
||||
}
|
||||
case special-next-hop {
|
||||
uses special-next-hop;
|
||||
}
|
||||
case next-hop-list {
|
||||
container next-hop-list {
|
||||
description
|
||||
"Container for multiple next hops.";
|
||||
list next-hop {
|
||||
description
|
||||
"An entry in a next-hop list.
|
||||
|
||||
Modules for address families MUST augment this list
|
||||
with a leaf containing a next-hop address of that
|
||||
address family.";
|
||||
leaf outgoing-interface {
|
||||
type if:interface-ref;
|
||||
description
|
||||
"Name of the outgoing interface.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping route-metadata {
|
||||
description
|
||||
"Common route metadata.";
|
||||
leaf source-protocol {
|
||||
type identityref {
|
||||
base routing-protocol;
|
||||
}
|
||||
mandatory true;
|
||||
description
|
||||
"Type of the routing protocol from which the route
|
||||
originated.";
|
||||
}
|
||||
leaf active {
|
||||
type empty;
|
||||
description
|
||||
"The presence of this leaf indicates that the route is
|
||||
preferred among all routes in the same RIB that have the
|
||||
same destination prefix.";
|
||||
}
|
||||
leaf last-updated {
|
||||
type yang:date-and-time;
|
||||
description
|
||||
"Timestamp of the last modification of the route. If the
|
||||
route was never modified, it is the time when the route was
|
||||
inserted into the RIB.";
|
||||
}
|
||||
}
|
||||
|
||||
/* Data nodes */
|
||||
|
||||
container routing {
|
||||
description
|
||||
"Configuration parameters for the routing subsystem.";
|
||||
uses router-id {
|
||||
if-feature "router-id";
|
||||
description
|
||||
"Support for the global router ID. Routing protocols
|
||||
that use a router ID can use this parameter or override it
|
||||
with another value.";
|
||||
}
|
||||
container interfaces {
|
||||
config false;
|
||||
description
|
||||
"Network-layer interfaces used for routing.";
|
||||
leaf-list interface {
|
||||
type if:interface-ref;
|
||||
description
|
||||
"Each entry is a reference to the name of a configured
|
||||
network-layer interface.";
|
||||
}
|
||||
}
|
||||
container control-plane-protocols {
|
||||
description
|
||||
"Support for control-plane protocol instances.";
|
||||
list control-plane-protocol {
|
||||
key "type name";
|
||||
description
|
||||
"Each entry contains a control-plane protocol instance.";
|
||||
leaf type {
|
||||
type identityref {
|
||||
base control-plane-protocol;
|
||||
}
|
||||
description
|
||||
"Type of the control-plane protocol -- an identity
|
||||
derived from the 'control-plane-protocol'
|
||||
base identity.";
|
||||
}
|
||||
leaf name {
|
||||
type string;
|
||||
description
|
||||
"An arbitrary name of the control-plane protocol
|
||||
instance.";
|
||||
}
|
||||
leaf description {
|
||||
type string;
|
||||
description
|
||||
"Textual description of the control-plane protocol
|
||||
instance.";
|
||||
}
|
||||
container static-routes {
|
||||
when "derived-from-or-self(../type, 'rt:static')" {
|
||||
description
|
||||
"This container is only valid for the 'static' routing
|
||||
protocol.";
|
||||
}
|
||||
description
|
||||
"Support for the 'static' pseudo-protocol.
|
||||
|
||||
Address-family-specific modules augment this node with
|
||||
their lists of routes.";
|
||||
}
|
||||
}
|
||||
}
|
||||
container ribs {
|
||||
description
|
||||
"Support for RIBs.";
|
||||
list rib {
|
||||
key "name";
|
||||
description
|
||||
"Each entry contains a configuration for a RIB identified
|
||||
by the 'name' key.
|
||||
|
||||
Entries having the same key as a system-controlled entry
|
||||
in the list '/routing/ribs/rib' are used for
|
||||
configuring parameters of that entry. Other entries
|
||||
define additional user-controlled RIBs.";
|
||||
leaf name {
|
||||
type string;
|
||||
description
|
||||
"The name of the RIB.
|
||||
|
||||
For system-controlled entries, the value of this leaf
|
||||
must be the same as the name of the corresponding entry
|
||||
in the operational state.
|
||||
|
||||
For user-controlled entries, an arbitrary name can be
|
||||
used.";
|
||||
}
|
||||
uses address-family {
|
||||
description
|
||||
"The address family of the system-controlled RIB.";
|
||||
}
|
||||
|
||||
leaf default-rib {
|
||||
if-feature "multiple-ribs";
|
||||
type boolean;
|
||||
default "true";
|
||||
config false;
|
||||
description
|
||||
"This flag has the value of 'true' if and only if the RIB
|
||||
is the default RIB for the given address family.
|
||||
|
||||
By default, control-plane protocols place their routes
|
||||
in the default RIBs.";
|
||||
}
|
||||
container routes {
|
||||
config false;
|
||||
description
|
||||
"Current contents of the RIB.";
|
||||
list route {
|
||||
description
|
||||
"A RIB route entry. This data node MUST be augmented
|
||||
with information specific to routes of each address
|
||||
family.";
|
||||
leaf route-preference {
|
||||
type route-preference;
|
||||
description
|
||||
"This route attribute, also known as 'administrative
|
||||
distance', allows for selecting the preferred route
|
||||
among routes with the same destination prefix. A
|
||||
smaller value indicates a route that is
|
||||
more preferred.";
|
||||
}
|
||||
container next-hop {
|
||||
description
|
||||
"Route's next-hop attribute.";
|
||||
uses next-hop-state-content;
|
||||
}
|
||||
uses route-metadata;
|
||||
}
|
||||
}
|
||||
action active-route {
|
||||
description
|
||||
"Return the active RIB route that is used for the
|
||||
destination address.
|
||||
|
||||
Address-family-specific modules MUST augment input
|
||||
parameters with a leaf named 'destination-address'.";
|
||||
output {
|
||||
container route {
|
||||
description
|
||||
"The active RIB route for the specified destination.
|
||||
|
||||
If no route exists in the RIB for the destination
|
||||
address, no output is returned.
|
||||
|
||||
Address-family-specific modules MUST augment this
|
||||
container with appropriate route contents.";
|
||||
container next-hop {
|
||||
description
|
||||
"Route's next-hop attribute.";
|
||||
uses next-hop-state-content;
|
||||
}
|
||||
uses route-metadata;
|
||||
}
|
||||
}
|
||||
}
|
||||
leaf description {
|
||||
type string;
|
||||
description
|
||||
"Textual description of the RIB.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* The subsequent data nodes are obviated and obsoleted
|
||||
* by the Network Management Datastore Architecture
|
||||
* as described in RFC 8342.
|
||||
*/
|
||||
container routing-state {
|
||||
config false;
|
||||
status obsolete;
|
||||
description
|
||||
"State data of the routing subsystem.";
|
||||
uses router-id {
|
||||
status obsolete;
|
||||
description
|
||||
"Global router ID.
|
||||
|
||||
It may be either configured or assigned algorithmically by
|
||||
the implementation.";
|
||||
}
|
||||
container interfaces {
|
||||
status obsolete;
|
||||
description
|
||||
"Network-layer interfaces used for routing.";
|
||||
leaf-list interface {
|
||||
type if:interface-state-ref;
|
||||
status obsolete;
|
||||
description
|
||||
"Each entry is a reference to the name of a configured
|
||||
network-layer interface.";
|
||||
}
|
||||
}
|
||||
container control-plane-protocols {
|
||||
status obsolete;
|
||||
description
|
||||
"Container for the list of routing protocol instances.";
|
||||
list control-plane-protocol {
|
||||
key "type name";
|
||||
status obsolete;
|
||||
description
|
||||
"State data of a control-plane protocol instance.
|
||||
|
||||
An implementation MUST provide exactly one
|
||||
system-controlled instance of the 'direct'
|
||||
pseudo-protocol. Instances of other control-plane
|
||||
protocols MAY be created by configuration.";
|
||||
leaf type {
|
||||
type identityref {
|
||||
base control-plane-protocol;
|
||||
}
|
||||
status obsolete;
|
||||
description
|
||||
"Type of the control-plane protocol.";
|
||||
}
|
||||
leaf name {
|
||||
type string;
|
||||
status obsolete;
|
||||
description
|
||||
"The name of the control-plane protocol instance.
|
||||
|
||||
For system-controlled instances, this name is
|
||||
persistent, i.e., it SHOULD NOT change across
|
||||
reboots.";
|
||||
}
|
||||
}
|
||||
}
|
||||
container ribs {
|
||||
status obsolete;
|
||||
description
|
||||
"Container for RIBs.";
|
||||
list rib {
|
||||
key "name";
|
||||
min-elements 1;
|
||||
status obsolete;
|
||||
description
|
||||
"Each entry represents a RIB identified by the 'name'
|
||||
key. All routes in a RIB MUST belong to the same address
|
||||
family.
|
||||
|
||||
An implementation SHOULD provide one system-controlled
|
||||
default RIB for each supported address family.";
|
||||
leaf name {
|
||||
type string;
|
||||
status obsolete;
|
||||
description
|
||||
"The name of the RIB.";
|
||||
}
|
||||
uses address-family {
|
||||
status obsolete;
|
||||
description
|
||||
"The address family of the RIB.";
|
||||
}
|
||||
leaf default-rib {
|
||||
if-feature "multiple-ribs";
|
||||
type boolean;
|
||||
default "true";
|
||||
status obsolete;
|
||||
description
|
||||
"This flag has the value of 'true' if and only if the
|
||||
RIB is the default RIB for the given address family.
|
||||
|
||||
By default, control-plane protocols place their routes
|
||||
in the default RIBs.";
|
||||
}
|
||||
container routes {
|
||||
status obsolete;
|
||||
description
|
||||
"Current contents of the RIB.";
|
||||
list route {
|
||||
status obsolete;
|
||||
description
|
||||
"A RIB route entry. This data node MUST be augmented
|
||||
with information specific to routes of each address
|
||||
family.";
|
||||
leaf route-preference {
|
||||
type route-preference;
|
||||
status obsolete;
|
||||
description
|
||||
"This route attribute, also known as 'administrative
|
||||
distance', allows for selecting the preferred route
|
||||
among routes with the same destination prefix. A
|
||||
smaller value indicates a route that is
|
||||
more preferred.";
|
||||
}
|
||||
container next-hop {
|
||||
status obsolete;
|
||||
description
|
||||
"Route's next-hop attribute.";
|
||||
uses next-hop-state-content {
|
||||
status obsolete;
|
||||
description
|
||||
"Route's next-hop attribute operational state.";
|
||||
}
|
||||
}
|
||||
uses route-metadata {
|
||||
status obsolete;
|
||||
description
|
||||
"Route metadata.";
|
||||
}
|
||||
}
|
||||
}
|
||||
action active-route {
|
||||
status obsolete;
|
||||
description
|
||||
"Return the active RIB route that is used for the
|
||||
destination address.
|
||||
|
||||
Address-family-specific modules MUST augment input
|
||||
parameters with a leaf named 'destination-address'.";
|
||||
output {
|
||||
container route {
|
||||
status obsolete;
|
||||
description
|
||||
"The active RIB route for the specified
|
||||
destination.
|
||||
|
||||
If no route exists in the RIB for the destination
|
||||
address, no output is returned.
|
||||
|
||||
Address-family-specific modules MUST augment this
|
||||
container with appropriate route contents.";
|
||||
container next-hop {
|
||||
status obsolete;
|
||||
description
|
||||
"Route's next-hop attribute.";
|
||||
uses next-hop-state-content {
|
||||
status obsolete;
|
||||
description
|
||||
"Active route state data.";
|
||||
}
|
||||
}
|
||||
uses route-metadata {
|
||||
status obsolete;
|
||||
description
|
||||
"Active route metadata.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
242
yang/standard/ietf-yang-library@2016-06-21.yang
Normal file
242
yang/standard/ietf-yang-library@2016-06-21.yang
Normal file
|
|
@ -0,0 +1,242 @@
|
|||
module ietf-yang-library {
|
||||
namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
|
||||
prefix "yanglib";
|
||||
|
||||
import ietf-yang-types {
|
||||
prefix yang;
|
||||
}
|
||||
import ietf-inet-types {
|
||||
prefix inet;
|
||||
}
|
||||
organization
|
||||
"IETF NETCONF (Network Configuration) Working Group";
|
||||
|
||||
contact
|
||||
"WG Web: <https://datatracker.ietf.org/wg/netconf/>
|
||||
WG List: <mailto:netconf@ietf.org>
|
||||
|
||||
WG Chair: Mehmet Ersue
|
||||
<mailto:mehmet.ersue@nsn.com>
|
||||
|
||||
WG Chair: Mahesh Jethanandani
|
||||
<mailto:mjethanandani@gmail.com>
|
||||
|
||||
Editor: Andy Bierman
|
||||
<mailto:andy@yumaworks.com>
|
||||
|
||||
Editor: Martin Bjorklund
|
||||
<mailto:mbj@tail-f.com>
|
||||
|
||||
Editor: Kent Watsen
|
||||
<mailto:kwatsen@juniper.net>";
|
||||
|
||||
description
|
||||
"This module contains monitoring information about the YANG
|
||||
modules and submodules that are used within a YANG-based
|
||||
server.
|
||||
|
||||
Copyright (c) 2016 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 7895; see
|
||||
the RFC itself for full legal notices.";
|
||||
|
||||
revision 2016-06-21 {
|
||||
description
|
||||
"Initial revision.";
|
||||
reference
|
||||
"RFC 7895: YANG Module Library.";
|
||||
}
|
||||
|
||||
/*
|
||||
* Typedefs
|
||||
*/
|
||||
|
||||
typedef revision-identifier {
|
||||
type string {
|
||||
pattern '\d{4}-\d{2}-\d{2}';
|
||||
}
|
||||
description
|
||||
"Represents a specific date in YYYY-MM-DD format.";
|
||||
}
|
||||
|
||||
/*
|
||||
* Groupings
|
||||
*/
|
||||
|
||||
grouping module-list {
|
||||
description
|
||||
"The module data structure is represented as a grouping
|
||||
so it can be reused in configuration or another monitoring
|
||||
data structure.";
|
||||
|
||||
grouping common-leafs {
|
||||
description
|
||||
"Common parameters for YANG modules and submodules.";
|
||||
|
||||
leaf name {
|
||||
type yang:yang-identifier;
|
||||
description
|
||||
"The YANG module or submodule name.";
|
||||
}
|
||||
leaf revision {
|
||||
type union {
|
||||
type revision-identifier;
|
||||
type string { length 0; }
|
||||
}
|
||||
description
|
||||
"The YANG module or submodule revision date.
|
||||
A zero-length string is used if no revision statement
|
||||
is present in the YANG module or submodule.";
|
||||
}
|
||||
}
|
||||
|
||||
grouping schema-leaf {
|
||||
description
|
||||
"Common schema leaf parameter for modules and submodules.";
|
||||
leaf schema {
|
||||
type inet:uri;
|
||||
description
|
||||
"Contains a URL that represents the YANG schema
|
||||
resource for this module or submodule.
|
||||
|
||||
This leaf will only be present if there is a URL
|
||||
available for retrieval of the schema for this entry.";
|
||||
}
|
||||
}
|
||||
|
||||
list module {
|
||||
key "name revision";
|
||||
description
|
||||
"Each entry represents one revision of one module
|
||||
currently supported by the server.";
|
||||
|
||||
uses common-leafs;
|
||||
uses schema-leaf;
|
||||
|
||||
leaf namespace {
|
||||
type inet:uri;
|
||||
mandatory true;
|
||||
description
|
||||
"The XML namespace identifier for this module.";
|
||||
}
|
||||
leaf-list feature {
|
||||
type yang:yang-identifier;
|
||||
description
|
||||
"List of YANG feature names from this module that are
|
||||
supported by the server, regardless of whether they are
|
||||
defined in the module or any included submodule.";
|
||||
}
|
||||
list deviation {
|
||||
key "name revision";
|
||||
description
|
||||
"List of YANG deviation module names and revisions
|
||||
used by this server to modify the conformance of
|
||||
the module associated with this entry. Note that
|
||||
the same module can be used for deviations for
|
||||
multiple modules, so the same entry MAY appear
|
||||
within multiple 'module' entries.
|
||||
|
||||
The deviation module MUST be present in the 'module'
|
||||
list, with the same name and revision values.
|
||||
The 'conformance-type' value will be 'implement' for
|
||||
the deviation module.";
|
||||
uses common-leafs;
|
||||
}
|
||||
leaf conformance-type {
|
||||
type enumeration {
|
||||
enum implement {
|
||||
description
|
||||
"Indicates that the server implements one or more
|
||||
protocol-accessible objects defined in the YANG module
|
||||
identified in this entry. This includes deviation
|
||||
statements defined in the module.
|
||||
|
||||
For YANG version 1.1 modules, there is at most one
|
||||
module entry with conformance type 'implement' for a
|
||||
particular module name, since YANG 1.1 requires that,
|
||||
at most, one revision of a module is implemented.
|
||||
|
||||
For YANG version 1 modules, there SHOULD NOT be more
|
||||
than one module entry for a particular module name.";
|
||||
}
|
||||
enum import {
|
||||
description
|
||||
"Indicates that the server imports reusable definitions
|
||||
from the specified revision of the module but does
|
||||
not implement any protocol-accessible objects from
|
||||
this revision.
|
||||
|
||||
Multiple module entries for the same module name MAY
|
||||
exist. This can occur if multiple modules import the
|
||||
same module but specify different revision dates in
|
||||
the import statements.";
|
||||
}
|
||||
}
|
||||
mandatory true;
|
||||
description
|
||||
"Indicates the type of conformance the server is claiming
|
||||
for the YANG module identified by this entry.";
|
||||
}
|
||||
list submodule {
|
||||
key "name revision";
|
||||
description
|
||||
"Each entry represents one submodule within the
|
||||
parent module.";
|
||||
uses common-leafs;
|
||||
uses schema-leaf;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Operational state data nodes
|
||||
*/
|
||||
|
||||
container modules-state {
|
||||
config false;
|
||||
description
|
||||
"Contains YANG module monitoring information.";
|
||||
|
||||
leaf module-set-id {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"Contains a server-specific identifier representing
|
||||
the current set of modules and submodules. The
|
||||
server MUST change the value of this leaf if the
|
||||
information represented by the 'module' list instances
|
||||
has changed.";
|
||||
}
|
||||
|
||||
uses module-list;
|
||||
}
|
||||
|
||||
/*
|
||||
* Notifications
|
||||
*/
|
||||
notification yang-library-change {
|
||||
description
|
||||
"Generated when the set of modules and submodules supported
|
||||
by the server has changed.";
|
||||
leaf module-set-id {
|
||||
type leafref {
|
||||
path "/yanglib:modules-state/yanglib:module-set-id";
|
||||
}
|
||||
mandatory true;
|
||||
description
|
||||
"Contains the module-set-id value representing the
|
||||
set of modules and submodules supported at the server at
|
||||
the time the notification is generated.";
|
||||
}
|
||||
}
|
||||
}
|
||||
481
yang/standard/ietf-yang-types@2013-07-15.yang
Normal file
481
yang/standard/ietf-yang-types@2013-07-15.yang
Normal file
|
|
@ -0,0 +1,481 @@
|
|||
module ietf-yang-types {
|
||||
|
||||
namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
|
||||
prefix "yang";
|
||||
|
||||
organization
|
||||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group";
|
||||
|
||||
contact
|
||||
"WG Web: <http://tools.ietf.org/wg/netmod/>
|
||||
WG List: <mailto:netmod@ietf.org>
|
||||
|
||||
WG Chair: David Kessens
|
||||
<mailto:david.kessens@nsn.com>
|
||||
|
||||
WG Chair: Juergen Schoenwaelder
|
||||
<mailto:j.schoenwaelder@jacobs-university.de>
|
||||
|
||||
Editor: Juergen Schoenwaelder
|
||||
<mailto:j.schoenwaelder@jacobs-university.de>";
|
||||
|
||||
description
|
||||
"This module contains a collection of generally useful derived
|
||||
YANG data types.
|
||||
|
||||
Copyright (c) 2013 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 6991; see
|
||||
the RFC itself for full legal notices.";
|
||||
|
||||
revision 2013-07-15 {
|
||||
description
|
||||
"This revision adds the following new data types:
|
||||
- yang-identifier
|
||||
- hex-string
|
||||
- uuid
|
||||
- dotted-quad";
|
||||
reference
|
||||
"RFC 6991: Common YANG Data Types";
|
||||
}
|
||||
|
||||
revision 2010-09-24 {
|
||||
description
|
||||
"Initial revision.";
|
||||
reference
|
||||
"RFC 6021: Common YANG Data Types";
|
||||
}
|
||||
|
||||
/*** collection of counter and gauge types ***/
|
||||
|
||||
typedef counter32 {
|
||||
type uint32;
|
||||
description
|
||||
"The counter32 type represents a non-negative integer
|
||||
that monotonically increases until it reaches a
|
||||
maximum value of 2^32-1 (4294967295 decimal), when it
|
||||
wraps around and starts increasing again from zero.
|
||||
|
||||
Counters have no defined 'initial' value, and thus, a
|
||||
single value of a counter has (in general) no information
|
||||
content. Discontinuities in the monotonically increasing
|
||||
value normally occur at re-initialization of the
|
||||
management system, and at other times as specified in the
|
||||
description of a schema node using this type. If such
|
||||
other times can occur, for example, the creation of
|
||||
a schema node of type counter32 at times other than
|
||||
re-initialization, then a corresponding schema node
|
||||
should be defined, with an appropriate type, to indicate
|
||||
the last discontinuity.
|
||||
|
||||
The counter32 type should not be used for configuration
|
||||
schema nodes. A default statement SHOULD NOT be used in
|
||||
combination with the type counter32.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the Counter32 type of the SMIv2.";
|
||||
reference
|
||||
"RFC 2578: Structure of Management Information Version 2
|
||||
(SMIv2)";
|
||||
}
|
||||
|
||||
typedef zero-based-counter32 {
|
||||
type yang:counter32;
|
||||
default "0";
|
||||
description
|
||||
"The zero-based-counter32 type represents a counter32
|
||||
that has the defined 'initial' value zero.
|
||||
|
||||
A schema node of this type will be set to zero (0) on creation
|
||||
and will thereafter increase monotonically until it reaches
|
||||
a maximum value of 2^32-1 (4294967295 decimal), when it
|
||||
wraps around and starts increasing again from zero.
|
||||
|
||||
Provided that an application discovers a new schema node
|
||||
of this type within the minimum time to wrap, it can use the
|
||||
'initial' value as a delta. It is important for a management
|
||||
station to be aware of this minimum time and the actual time
|
||||
between polls, and to discard data if the actual time is too
|
||||
long or there is no defined minimum time.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the ZeroBasedCounter32 textual convention of the SMIv2.";
|
||||
reference
|
||||
"RFC 4502: Remote Network Monitoring Management Information
|
||||
Base Version 2";
|
||||
}
|
||||
|
||||
typedef counter64 {
|
||||
type uint64;
|
||||
description
|
||||
"The counter64 type represents a non-negative integer
|
||||
that monotonically increases until it reaches a
|
||||
maximum value of 2^64-1 (18446744073709551615 decimal),
|
||||
when it wraps around and starts increasing again from zero.
|
||||
|
||||
Counters have no defined 'initial' value, and thus, a
|
||||
single value of a counter has (in general) no information
|
||||
content. Discontinuities in the monotonically increasing
|
||||
value normally occur at re-initialization of the
|
||||
management system, and at other times as specified in the
|
||||
description of a schema node using this type. If such
|
||||
other times can occur, for example, the creation of
|
||||
a schema node of type counter64 at times other than
|
||||
re-initialization, then a corresponding schema node
|
||||
should be defined, with an appropriate type, to indicate
|
||||
the last discontinuity.
|
||||
|
||||
The counter64 type should not be used for configuration
|
||||
schema nodes. A default statement SHOULD NOT be used in
|
||||
combination with the type counter64.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the Counter64 type of the SMIv2.";
|
||||
reference
|
||||
"RFC 2578: Structure of Management Information Version 2
|
||||
(SMIv2)";
|
||||
}
|
||||
|
||||
typedef zero-based-counter64 {
|
||||
type yang:counter64;
|
||||
default "0";
|
||||
description
|
||||
"The zero-based-counter64 type represents a counter64 that
|
||||
has the defined 'initial' value zero.
|
||||
|
||||
|
||||
|
||||
|
||||
A schema node of this type will be set to zero (0) on creation
|
||||
and will thereafter increase monotonically until it reaches
|
||||
a maximum value of 2^64-1 (18446744073709551615 decimal),
|
||||
when it wraps around and starts increasing again from zero.
|
||||
|
||||
Provided that an application discovers a new schema node
|
||||
of this type within the minimum time to wrap, it can use the
|
||||
'initial' value as a delta. It is important for a management
|
||||
station to be aware of this minimum time and the actual time
|
||||
between polls, and to discard data if the actual time is too
|
||||
long or there is no defined minimum time.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the ZeroBasedCounter64 textual convention of the SMIv2.";
|
||||
reference
|
||||
"RFC 2856: Textual Conventions for Additional High Capacity
|
||||
Data Types";
|
||||
}
|
||||
|
||||
typedef gauge32 {
|
||||
type uint32;
|
||||
description
|
||||
"The gauge32 type represents a non-negative integer, which
|
||||
may increase or decrease, but shall never exceed a maximum
|
||||
value, nor fall below a minimum value. The maximum value
|
||||
cannot be greater than 2^32-1 (4294967295 decimal), and
|
||||
the minimum value cannot be smaller than 0. The value of
|
||||
a gauge32 has its maximum value whenever the information
|
||||
being modeled is greater than or equal to its maximum
|
||||
value, and has its minimum value whenever the information
|
||||
being modeled is smaller than or equal to its minimum value.
|
||||
If the information being modeled subsequently decreases
|
||||
below (increases above) the maximum (minimum) value, the
|
||||
gauge32 also decreases (increases).
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the Gauge32 type of the SMIv2.";
|
||||
reference
|
||||
"RFC 2578: Structure of Management Information Version 2
|
||||
(SMIv2)";
|
||||
}
|
||||
|
||||
typedef gauge64 {
|
||||
type uint64;
|
||||
description
|
||||
"The gauge64 type represents a non-negative integer, which
|
||||
may increase or decrease, but shall never exceed a maximum
|
||||
value, nor fall below a minimum value. The maximum value
|
||||
cannot be greater than 2^64-1 (18446744073709551615), and
|
||||
the minimum value cannot be smaller than 0. The value of
|
||||
a gauge64 has its maximum value whenever the information
|
||||
being modeled is greater than or equal to its maximum
|
||||
value, and has its minimum value whenever the information
|
||||
being modeled is smaller than or equal to its minimum value.
|
||||
If the information being modeled subsequently decreases
|
||||
below (increases above) the maximum (minimum) value, the
|
||||
gauge64 also decreases (increases).
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the CounterBasedGauge64 SMIv2 textual convention defined
|
||||
in RFC 2856";
|
||||
reference
|
||||
"RFC 2856: Textual Conventions for Additional High Capacity
|
||||
Data Types";
|
||||
}
|
||||
|
||||
/*** collection of identifier-related types ***/
|
||||
|
||||
typedef object-identifier {
|
||||
type string {
|
||||
pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
|
||||
+ '(\.(0|([1-9]\d*)))*';
|
||||
}
|
||||
description
|
||||
"The object-identifier type represents administratively
|
||||
assigned names in a registration-hierarchical-name tree.
|
||||
|
||||
Values of this type are denoted as a sequence of numerical
|
||||
non-negative sub-identifier values. Each sub-identifier
|
||||
value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers
|
||||
are separated by single dots and without any intermediate
|
||||
whitespace.
|
||||
|
||||
The ASN.1 standard restricts the value space of the first
|
||||
sub-identifier to 0, 1, or 2. Furthermore, the value space
|
||||
of the second sub-identifier is restricted to the range
|
||||
0 to 39 if the first sub-identifier is 0 or 1. Finally,
|
||||
the ASN.1 standard requires that an object identifier
|
||||
has always at least two sub-identifiers. The pattern
|
||||
captures these restrictions.
|
||||
|
||||
Although the number of sub-identifiers is not limited,
|
||||
module designers should realize that there may be
|
||||
implementations that stick with the SMIv2 limit of 128
|
||||
sub-identifiers.
|
||||
|
||||
This type is a superset of the SMIv2 OBJECT IDENTIFIER type
|
||||
since it is not restricted to 128 sub-identifiers. Hence,
|
||||
this type SHOULD NOT be used to represent the SMIv2 OBJECT
|
||||
IDENTIFIER type; the object-identifier-128 type SHOULD be
|
||||
used instead.";
|
||||
reference
|
||||
"ISO9834-1: Information technology -- Open Systems
|
||||
Interconnection -- Procedures for the operation of OSI
|
||||
Registration Authorities: General procedures and top
|
||||
arcs of the ASN.1 Object Identifier tree";
|
||||
}
|
||||
|
||||
typedef object-identifier-128 {
|
||||
type object-identifier {
|
||||
pattern '\d*(\.\d*){1,127}';
|
||||
}
|
||||
description
|
||||
"This type represents object-identifiers restricted to 128
|
||||
sub-identifiers.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the OBJECT IDENTIFIER type of the SMIv2.";
|
||||
reference
|
||||
"RFC 2578: Structure of Management Information Version 2
|
||||
(SMIv2)";
|
||||
}
|
||||
|
||||
typedef yang-identifier {
|
||||
type string {
|
||||
length "1..max";
|
||||
pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
|
||||
pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
|
||||
}
|
||||
description
|
||||
"A YANG identifier string as defined by the 'identifier'
|
||||
rule in Section 12 of RFC 6020. An identifier must
|
||||
start with an alphabetic character or an underscore
|
||||
followed by an arbitrary sequence of alphabetic or
|
||||
numeric characters, underscores, hyphens, or dots.
|
||||
|
||||
A YANG identifier MUST NOT start with any possible
|
||||
combination of the lowercase or uppercase character
|
||||
sequence 'xml'.";
|
||||
reference
|
||||
"RFC 6020: YANG - A Data Modeling Language for the Network
|
||||
Configuration Protocol (NETCONF)";
|
||||
}
|
||||
|
||||
/*** collection of types related to date and time***/
|
||||
|
||||
typedef date-and-time {
|
||||
type string {
|
||||
pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
|
||||
+ '(Z|[\+\-]\d{2}:\d{2})';
|
||||
}
|
||||
description
|
||||
"The date-and-time type is a profile of the ISO 8601
|
||||
standard for representation of dates and times using the
|
||||
Gregorian calendar. The profile is defined by the
|
||||
date-time production in Section 5.6 of RFC 3339.
|
||||
|
||||
The date-and-time type is compatible with the dateTime XML
|
||||
schema type with the following notable exceptions:
|
||||
|
||||
(a) The date-and-time type does not allow negative years.
|
||||
|
||||
(b) The date-and-time time-offset -00:00 indicates an unknown
|
||||
time zone (see RFC 3339) while -00:00 and +00:00 and Z
|
||||
all represent the same time zone in dateTime.
|
||||
|
||||
(c) The canonical format (see below) of data-and-time values
|
||||
differs from the canonical format used by the dateTime XML
|
||||
schema type, which requires all times to be in UTC using
|
||||
the time-offset 'Z'.
|
||||
|
||||
This type is not equivalent to the DateAndTime textual
|
||||
convention of the SMIv2 since RFC 3339 uses a different
|
||||
separator between full-date and full-time and provides
|
||||
higher resolution of time-secfrac.
|
||||
|
||||
The canonical format for date-and-time values with a known time
|
||||
zone uses a numeric time zone offset that is calculated using
|
||||
the device's configured known offset to UTC time. A change of
|
||||
the device's offset to UTC time will cause date-and-time values
|
||||
to change accordingly. Such changes might happen periodically
|
||||
in case a server follows automatically daylight saving time
|
||||
(DST) time zone offset changes. The canonical format for
|
||||
date-and-time values with an unknown time zone (usually
|
||||
referring to the notion of local time) uses the time-offset
|
||||
-00:00.";
|
||||
reference
|
||||
"RFC 3339: Date and Time on the Internet: Timestamps
|
||||
RFC 2579: Textual Conventions for SMIv2
|
||||
XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
|
||||
}
|
||||
|
||||
typedef timeticks {
|
||||
type uint32;
|
||||
description
|
||||
"The timeticks type represents a non-negative integer that
|
||||
represents the time, modulo 2^32 (4294967296 decimal), in
|
||||
hundredths of a second between two epochs. When a schema
|
||||
node is defined that uses this type, the description of
|
||||
the schema node identifies both of the reference epochs.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the TimeTicks type of the SMIv2.";
|
||||
reference
|
||||
"RFC 2578: Structure of Management Information Version 2
|
||||
(SMIv2)";
|
||||
}
|
||||
|
||||
typedef timestamp {
|
||||
type yang:timeticks;
|
||||
description
|
||||
"The timestamp type represents the value of an associated
|
||||
timeticks schema node at which a specific occurrence
|
||||
happened. The specific occurrence must be defined in the
|
||||
description of any schema node defined using this type. When
|
||||
the specific occurrence occurred prior to the last time the
|
||||
associated timeticks attribute was zero, then the timestamp
|
||||
value is zero. Note that this requires all timestamp values
|
||||
to be reset to zero when the value of the associated timeticks
|
||||
attribute reaches 497+ days and wraps around to zero.
|
||||
|
||||
The associated timeticks schema node must be specified
|
||||
in the description of any schema node using this type.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the TimeStamp textual convention of the SMIv2.";
|
||||
reference
|
||||
"RFC 2579: Textual Conventions for SMIv2";
|
||||
}
|
||||
|
||||
/*** collection of generic address types ***/
|
||||
|
||||
typedef phys-address {
|
||||
type string {
|
||||
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
description
|
||||
"Represents media- or physical-level addresses represented
|
||||
as a sequence octets, each octet represented by two hexadecimal
|
||||
numbers. Octets are separated by colons. The canonical
|
||||
representation uses lowercase characters.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the PhysAddress textual convention of the SMIv2.";
|
||||
reference
|
||||
"RFC 2579: Textual Conventions for SMIv2";
|
||||
}
|
||||
|
||||
typedef mac-address {
|
||||
type string {
|
||||
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
|
||||
}
|
||||
description
|
||||
"The mac-address type represents an IEEE 802 MAC address.
|
||||
The canonical representation uses lowercase characters.
|
||||
|
||||
In the value set and its semantics, this type is equivalent
|
||||
to the MacAddress textual convention of the SMIv2.";
|
||||
reference
|
||||
"IEEE 802: IEEE Standard for Local and Metropolitan Area
|
||||
Networks: Overview and Architecture
|
||||
RFC 2579: Textual Conventions for SMIv2";
|
||||
}
|
||||
|
||||
/*** collection of XML-specific types ***/
|
||||
|
||||
typedef xpath1.0 {
|
||||
type string;
|
||||
description
|
||||
"This type represents an XPATH 1.0 expression.
|
||||
|
||||
When a schema node is defined that uses this type, the
|
||||
description of the schema node MUST specify the XPath
|
||||
context in which the XPath expression is evaluated.";
|
||||
reference
|
||||
"XPATH: XML Path Language (XPath) Version 1.0";
|
||||
}
|
||||
|
||||
/*** collection of string types ***/
|
||||
|
||||
typedef hex-string {
|
||||
type string {
|
||||
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
|
||||
}
|
||||
description
|
||||
"A hexadecimal string with octets represented as hex digits
|
||||
separated by colons. The canonical representation uses
|
||||
lowercase characters.";
|
||||
}
|
||||
|
||||
typedef uuid {
|
||||
type string {
|
||||
pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
|
||||
+ '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
|
||||
}
|
||||
description
|
||||
"A Universally Unique IDentifier in the string representation
|
||||
defined in RFC 4122. The canonical representation uses
|
||||
lowercase characters.
|
||||
|
||||
The following is an example of a UUID in string representation:
|
||||
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
|
||||
";
|
||||
reference
|
||||
"RFC 4122: A Universally Unique IDentifier (UUID) URN
|
||||
Namespace";
|
||||
}
|
||||
|
||||
typedef dotted-quad {
|
||||
type string {
|
||||
pattern
|
||||
'(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
|
||||
+ '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
|
||||
}
|
||||
description
|
||||
"An unsigned 32-bit number expressed in the dotted-quad
|
||||
notation, i.e., four octets written as decimal numbers
|
||||
and separated with the '.' (full stop) character.";
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue