Started Clixon 5.5.0.PRE and removed optional YANGs (already disabled in 5.4.0)
This commit is contained in:
parent
01002ab14a
commit
b67fae4d61
11 changed files with 10 additions and 4769 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
# Clixon Changelog
|
# Clixon Changelog
|
||||||
|
|
||||||
|
* [5.5.0](#550) Planned January, 2022
|
||||||
* [5.4.0](#540) 30 November 2021
|
* [5.4.0](#540) 30 November 2021
|
||||||
* [5.3.0](#530) 27 September 2021
|
* [5.3.0](#530) 27 September 2021
|
||||||
* [5.2.0](#520) 1 July 2021
|
* [5.2.0](#520) 1 July 2021
|
||||||
|
|
@ -31,6 +32,9 @@
|
||||||
* [3.3.2](#332) Aug 27 2017
|
* [3.3.2](#332) Aug 27 2017
|
||||||
* [3.3.1](#331) June 7 2017
|
* [3.3.1](#331) June 7 2017
|
||||||
|
|
||||||
|
## 5.5.0
|
||||||
|
Planned: January, 2022
|
||||||
|
|
||||||
## 5.4.0
|
## 5.4.0
|
||||||
30 November, 2021
|
30 November, 2021
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ See [documentation](https://clixon-docs.readthedocs.io), [project page](https://
|
||||||
Clixon is open-source and dual licensed. Either Apache License, Version 2.0 or GNU
|
Clixon is open-source and dual licensed. Either Apache License, Version 2.0 or GNU
|
||||||
General Public License Version 2; you choose, see [LICENSE.md](LICENSE.md).
|
General Public License Version 2; you choose, see [LICENSE.md](LICENSE.md).
|
||||||
|
|
||||||
Latest release is 5.3.0 from September 2021. See [CHANGELOG.md](CHANGELOG.md) release history.
|
Clixon has a master branch continuously tested with CI, but releases are made ca every second month. Latest 5.4.0 release is from November 2021. Next is planned in January 2022. See [CHANGELOG.md](CHANGELOG.md) release history.
|
||||||
|
|
||||||
Clixon interaction is best done posting issues, pull requests, or joining the
|
Clixon interaction is best done posting issues, pull requests, or joining the
|
||||||
[slack channel](https://clixondev.slack.com).
|
[slack channel](https://clixondev.slack.com).
|
||||||
|
|
|
||||||
7
configure
vendored
7
configure
vendored
|
|
@ -2265,9 +2265,9 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
|
||||||
|
|
||||||
|
|
||||||
CLIXON_VERSION_MAJOR="5"
|
CLIXON_VERSION_MAJOR="5"
|
||||||
CLIXON_VERSION_MINOR="4"
|
CLIXON_VERSION_MINOR="5"
|
||||||
CLIXON_VERSION_PATCH="0"
|
CLIXON_VERSION_PATCH="0"
|
||||||
CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}\""
|
CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}.PRE\""
|
||||||
|
|
||||||
# Debug flag
|
# Debug flag
|
||||||
# Check whether --enable-debug was given.
|
# Check whether --enable-debug was given.
|
||||||
|
|
@ -5678,7 +5678,7 @@ _ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ac_config_files="$ac_config_files Makefile lib/Makefile lib/src/Makefile lib/clixon/Makefile apps/Makefile apps/cli/Makefile apps/backend/Makefile apps/netconf/Makefile apps/restconf/Makefile include/Makefile etc/Makefile etc/clixonrc example/Makefile example/main/Makefile example/main/example.xml extras/rpm/Makefile docker/Makefile docker/main/Makefile docker/base/Makefile util/Makefile yang/Makefile yang/clixon/Makefile yang/mandatory/Makefile yang/optional/Makefile doc/Makefile test/Makefile test/config.sh test/cicd/Makefile test/vagrant/Makefile"
|
ac_config_files="$ac_config_files Makefile lib/Makefile lib/src/Makefile lib/clixon/Makefile apps/Makefile apps/cli/Makefile apps/backend/Makefile apps/netconf/Makefile apps/restconf/Makefile include/Makefile etc/Makefile etc/clixonrc example/Makefile example/main/Makefile example/main/example.xml extras/rpm/Makefile docker/Makefile docker/main/Makefile docker/base/Makefile util/Makefile yang/Makefile yang/clixon/Makefile yang/mandatory/Makefile doc/Makefile test/Makefile test/config.sh test/cicd/Makefile test/vagrant/Makefile"
|
||||||
|
|
||||||
cat >confcache <<\_ACEOF
|
cat >confcache <<\_ACEOF
|
||||||
# This file is a shell script that caches the results of configure
|
# This file is a shell script that caches the results of configure
|
||||||
|
|
@ -6395,7 +6395,6 @@ do
|
||||||
"yang/Makefile") CONFIG_FILES="$CONFIG_FILES yang/Makefile" ;;
|
"yang/Makefile") CONFIG_FILES="$CONFIG_FILES yang/Makefile" ;;
|
||||||
"yang/clixon/Makefile") CONFIG_FILES="$CONFIG_FILES yang/clixon/Makefile" ;;
|
"yang/clixon/Makefile") CONFIG_FILES="$CONFIG_FILES yang/clixon/Makefile" ;;
|
||||||
"yang/mandatory/Makefile") CONFIG_FILES="$CONFIG_FILES yang/mandatory/Makefile" ;;
|
"yang/mandatory/Makefile") CONFIG_FILES="$CONFIG_FILES yang/mandatory/Makefile" ;;
|
||||||
"yang/optional/Makefile") CONFIG_FILES="$CONFIG_FILES yang/optional/Makefile" ;;
|
|
||||||
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
|
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
|
||||||
"test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
|
"test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
|
||||||
"test/config.sh") CONFIG_FILES="$CONFIG_FILES test/config.sh" ;;
|
"test/config.sh") CONFIG_FILES="$CONFIG_FILES test/config.sh" ;;
|
||||||
|
|
|
||||||
|
|
@ -48,9 +48,9 @@ AC_INIT(lib/clixon/clixon.h.in)
|
||||||
AC_CONFIG_AUX_DIR(config-aux)
|
AC_CONFIG_AUX_DIR(config-aux)
|
||||||
|
|
||||||
CLIXON_VERSION_MAJOR="5"
|
CLIXON_VERSION_MAJOR="5"
|
||||||
CLIXON_VERSION_MINOR="4"
|
CLIXON_VERSION_MINOR="5"
|
||||||
CLIXON_VERSION_PATCH="0"
|
CLIXON_VERSION_PATCH="0"
|
||||||
CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}\""
|
CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}.PRE\""
|
||||||
|
|
||||||
# Debug flag
|
# Debug flag
|
||||||
AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],[Build with debug symbols, default: no]),[
|
AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],[Build with debug symbols, default: no]),[
|
||||||
|
|
@ -374,7 +374,6 @@ AC_OUTPUT(Makefile
|
||||||
yang/Makefile
|
yang/Makefile
|
||||||
yang/clixon/Makefile
|
yang/clixon/Makefile
|
||||||
yang/mandatory/Makefile
|
yang/mandatory/Makefile
|
||||||
yang/optional/Makefile
|
|
||||||
doc/Makefile
|
doc/Makefile
|
||||||
test/Makefile
|
test/Makefile
|
||||||
test/config.sh
|
test/config.sh
|
||||||
|
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
||||||
#
|
|
||||||
# ***** BEGIN LICENSE BLOCK *****
|
|
||||||
#
|
|
||||||
# Copyright (C) 2017-2019 Olof Hagsand
|
|
||||||
# Copyright (C) 2020-2021 Olof Hagsand and Rubicon Communications, LLC(Netgate)
|
|
||||||
#
|
|
||||||
# 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@
|
|
||||||
|
|
||||||
# See also OPT_YANG_INSTALLDIR for optionali yang files
|
|
||||||
OPT_YANG_INSTALLDIR = @OPT_YANG_INSTALLDIR@
|
|
||||||
|
|
||||||
YANGSPECS = iana-if-type@2014-05-08.yang
|
|
||||||
YANGSPECS += ietf-interfaces@2018-02-20.yang
|
|
||||||
YANGSPECS += ietf-ip@2014-06-16.yang
|
|
||||||
YANGSPECS += ietf-netconf-monitoring@2010-10-04.yang
|
|
||||||
YANGSPECS += ietf-routing@2018-03-13.yang
|
|
||||||
YANGSPECS += iana-crypt-hash@2014-08-06.yang # collection example-module
|
|
||||||
|
|
||||||
all:
|
|
||||||
|
|
||||||
clean:
|
|
||||||
|
|
||||||
distclean: clean
|
|
||||||
rm -f Makefile *~ .depend
|
|
||||||
|
|
||||||
install: $(YANGSPECS)
|
|
||||||
install -d -m 0755 $(DESTDIR)$(OPT_YANG_INSTALLDIR)
|
|
||||||
install -m 0644 $(YANGSPECS) $(DESTDIR)$(OPT_YANG_INSTALLDIR)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
(cd $(DESTDIR)$(OPT_YANG_INSTALLDIR); rm -rf *.yang)
|
|
||||||
|
|
||||||
install-include:
|
|
||||||
|
|
||||||
depend:
|
|
||||||
|
|
||||||
|
|
||||||
#include .depend
|
|
||||||
|
|
||||||
|
|
@ -1,120 +0,0 @@
|
||||||
module iana-crypt-hash {
|
|
||||||
namespace "urn:ietf:params:xml:ns:yang:iana-crypt-hash";
|
|
||||||
prefix ianach;
|
|
||||||
|
|
||||||
organization "IANA";
|
|
||||||
contact
|
|
||||||
" Internet Assigned Numbers Authority
|
|
||||||
|
|
||||||
Postal: ICANN
|
|
||||||
12025 Waterfront Drive, Suite 300
|
|
||||||
Los Angeles, CA 90094-2536
|
|
||||||
United States
|
|
||||||
|
|
||||||
Tel: +1 310 301 5800
|
|
||||||
E-Mail: iana@iana.org>";
|
|
||||||
description
|
|
||||||
"This YANG module defines a type for storing passwords
|
|
||||||
using a hash function and features to indicate which hash
|
|
||||||
functions are supported by an implementation.
|
|
||||||
|
|
||||||
The latest revision of this YANG module can be obtained from
|
|
||||||
the IANA web site.
|
|
||||||
|
|
||||||
Requests for new values should be made to IANA via
|
|
||||||
email (iana@iana.org).
|
|
||||||
|
|
||||||
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).
|
|
||||||
|
|
||||||
The initial version of this YANG module is part of RFC 7317;
|
|
||||||
see the RFC itself for full legal notices.";
|
|
||||||
|
|
||||||
revision 2014-08-06 {
|
|
||||||
description
|
|
||||||
"Initial revision.";
|
|
||||||
reference
|
|
||||||
"RFC 7317: A YANG Data Model for System Management";
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef crypt-hash {
|
|
||||||
type string {
|
|
||||||
pattern
|
|
||||||
'$0$.*'
|
|
||||||
+ '|$1$[a-zA-Z0-9./]{1,8}$[a-zA-Z0-9./]{22}'
|
|
||||||
+ '|$5$(rounds=\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{43}'
|
|
||||||
+ '|$6$(rounds=\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{86}';
|
|
||||||
}
|
|
||||||
description
|
|
||||||
"The crypt-hash type is used to store passwords using
|
|
||||||
a hash function. The algorithms for applying the hash
|
|
||||||
function and encoding the result are implemented in
|
|
||||||
various UNIX systems as the function crypt(3).
|
|
||||||
|
|
||||||
A value of this type matches one of the forms:
|
|
||||||
|
|
||||||
$0$<clear text password>
|
|
||||||
$<id>$<salt>$<password hash>
|
|
||||||
$<id>$<parameter>$<salt>$<password hash>
|
|
||||||
|
|
||||||
The '$0$' prefix signals that the value is clear text. When
|
|
||||||
such a value is received by the server, a hash value is
|
|
||||||
calculated, and the string '$<id>$<salt>$' or
|
|
||||||
$<id>$<parameter>$<salt>$ is prepended to the result. This
|
|
||||||
value is stored in the configuration data store.
|
|
||||||
If a value starting with '$<id>$', where <id> is not '0', is
|
|
||||||
received, the server knows that the value already represents a
|
|
||||||
hashed value and stores it 'as is' in the data store.
|
|
||||||
|
|
||||||
When a server needs to verify a password given by a user, it
|
|
||||||
finds the stored password hash string for that user, extracts
|
|
||||||
the salt, and calculates the hash with the salt and given
|
|
||||||
password as input. If the calculated hash value is the same
|
|
||||||
as the stored value, the password given by the client is
|
|
||||||
accepted.
|
|
||||||
|
|
||||||
This type defines the following hash functions:
|
|
||||||
|
|
||||||
id | hash function | feature
|
|
||||||
---+---------------+-------------------
|
|
||||||
1 | MD5 | crypt-hash-md5
|
|
||||||
5 | SHA-256 | crypt-hash-sha-256
|
|
||||||
6 | SHA-512 | crypt-hash-sha-512
|
|
||||||
|
|
||||||
The server indicates support for the different hash functions
|
|
||||||
by advertising the corresponding feature.";
|
|
||||||
reference
|
|
||||||
"IEEE Std 1003.1-2008 - crypt() function
|
|
||||||
RFC 1321: The MD5 Message-Digest Algorithm
|
|
||||||
FIPS.180-4.2012: Secure Hash Standard (SHS)";
|
|
||||||
}
|
|
||||||
|
|
||||||
feature crypt-hash-md5 {
|
|
||||||
description
|
|
||||||
"Indicates that the device supports the MD5
|
|
||||||
hash function in 'crypt-hash' values.";
|
|
||||||
reference "RFC 1321: The MD5 Message-Digest Algorithm";
|
|
||||||
}
|
|
||||||
|
|
||||||
feature crypt-hash-sha-256 {
|
|
||||||
description
|
|
||||||
"Indicates that the device supports the SHA-256
|
|
||||||
hash function in 'crypt-hash' values.";
|
|
||||||
reference "FIPS.180-4.2012: Secure Hash Standard (SHS)";
|
|
||||||
}
|
|
||||||
|
|
||||||
feature crypt-hash-sha-512 {
|
|
||||||
description
|
|
||||||
"Indicates that the device supports the SHA-512
|
|
||||||
hash function in 'crypt-hash' values.";
|
|
||||||
reference "FIPS.180-4.2012: Secure Hash Standard (SHS)";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,701 +0,0 @@
|
||||||
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";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,555 +0,0 @@
|
||||||
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.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,684 +0,0 @@
|
||||||
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.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue