* 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
|
|
@ -37,40 +37,48 @@ prefix = @prefix@
|
|||
bindir = @bindir@
|
||||
includedir = @includedir@
|
||||
datarootdir = @datarootdir@
|
||||
enable_stdyangs = @enable_stdyangs@
|
||||
|
||||
CLIXON_DATADIR = @CLIXON_DATADIR@
|
||||
|
||||
YANGSPECS = clixon-config@2018-10-21.yang
|
||||
YANGSPECS += clixon-lib@2019-01-02.yang
|
||||
YANGSPECS += ietf-netconf@2011-06-01.yang
|
||||
YANGSPECS += ietf-netconf-acm@2018-02-14.yang
|
||||
YANGSPECS += ietf-inet-types@2013-07-15.yang
|
||||
YANGSPECS += ietf-yang-types@2013-07-15.yang
|
||||
YANGSPECS += ietf-restconf@2017-01-26.yang
|
||||
YANGSPECS += ietf-restconf-monitoring@2017-01-26.yang
|
||||
YANGSPECS += clixon-rfc5277@2008-07-01.yang
|
||||
YANGSPECS += ietf-yang-library@2016-06-21.yang
|
||||
SUBDIRS = clixon
|
||||
# See configure.ac
|
||||
ifeq ($(enable_stdyangs),yes)
|
||||
SUBDIRS += standard
|
||||
endif
|
||||
|
||||
APPNAME = clixon # subdir ehere these files are installed
|
||||
.PHONY: all clean depend install $(SUBDIRS)
|
||||
|
||||
all:
|
||||
all: $(SUBDIRS)
|
||||
|
||||
depend:
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||
|
||||
$(SUBDIRS):
|
||||
(cd $@; $(MAKE) $(MFLAGS) all)
|
||||
|
||||
install-include:
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i && $(MAKE) $(MFLAGS) $@||exit 1); done;
|
||||
|
||||
install:
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i && $(MAKE) $(MFLAGS) $@)||exit 1; done
|
||||
|
||||
uninstall:
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i; $(MAKE) $(MFLAGS) $@)||exit 1; done
|
||||
|
||||
clean:
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||
|
||||
distclean: clean
|
||||
rm -f Makefile *~ .depend
|
||||
for i in $(SUBDIRS); \
|
||||
do (cd $$i; $(MAKE) $(MFLAGS) $@); done
|
||||
|
||||
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
|
||||
TAGS:
|
||||
find $(srcdir) -name '*.[chyl]' -print | etags -
|
||||
|
||||
|
|
|
|||
|
|
@ -1,220 +0,0 @@
|
|||
module clixon-config {
|
||||
|
||||
prefix cc;
|
||||
|
||||
organization
|
||||
"Clicon / Clixon";
|
||||
|
||||
contact
|
||||
"Olof Hagsand <olof@hagsand.se>";
|
||||
|
||||
description
|
||||
"Clixon configuration file
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
Copyright (C) 2009-2017 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 *****";
|
||||
|
||||
revision 2017-07-02 {
|
||||
description
|
||||
"Added startup config";
|
||||
}
|
||||
typedef startup_mode{
|
||||
description "Which method to boot/start clicon backend.
|
||||
The methods differ in how they reach a running state
|
||||
Which source database to commit from, if any.";
|
||||
type enumeration{
|
||||
enum none{
|
||||
description "Do not touch running state
|
||||
Typically after crash when running state and db are synched";
|
||||
}
|
||||
enum init{
|
||||
description "Initialize running state.
|
||||
Start with a completely clean running state";
|
||||
}
|
||||
enum running{
|
||||
description "Commit running db configuration into running state
|
||||
After reboot if a persistent running db exists";
|
||||
}
|
||||
enum startup{
|
||||
description "Commit startup configuration into running state
|
||||
After reboot when no persistent running db exists";
|
||||
}
|
||||
}
|
||||
}
|
||||
container config {
|
||||
leaf CLICON_CONFIGFILE{
|
||||
type string;
|
||||
description "Location of configuration-file for default values (this file)";
|
||||
}
|
||||
leaf CLICON_YANG_DIR {
|
||||
type string;
|
||||
mandatory true;
|
||||
description "Location of YANG module and submodule files. Only if CLICON_DBSPEC_TYPE is YANG";
|
||||
}
|
||||
leaf CLICON_YANG_MODULE_MAIN {
|
||||
type string;
|
||||
default "clicon";
|
||||
description "Option used to construct initial yang file:
|
||||
<module>[@<revision>]
|
||||
This option is only relevant if CLICON_DBSPEC_TYPE is YANG";
|
||||
}
|
||||
leaf CLICON_YANG_MODULE_REVISION {
|
||||
type string;
|
||||
description "Option used to construct initial yang file:
|
||||
<module>[@<revision>]";
|
||||
}
|
||||
leaf CLICON_BACKEND_DIR {
|
||||
type string;
|
||||
description "Location of backend .so plugins. Load all .so
|
||||
plugins in this dir as backend plugins";
|
||||
}
|
||||
leaf CLICON_NETCONF_DIR {
|
||||
type string;
|
||||
description "Location of netconf (frontend) .so plugins";
|
||||
}
|
||||
leaf CLICON_RESTCONF_DIR {
|
||||
type string;
|
||||
description "Location of restconf (frontend) .so plugins. Load all .so
|
||||
plugins in this dir as restconf code plugins";
|
||||
}
|
||||
leaf CLICON_RESTCONF_PATH {
|
||||
type string;
|
||||
default "/www-data/fastcgi_restconf.sock";
|
||||
description "FastCGI unix socket. Should be specified in webserver
|
||||
Eg in nginx: fastcgi_pass unix:/www-data/clicon_restconf.sock";
|
||||
}
|
||||
leaf CLICON_CLI_DIR {
|
||||
type string;
|
||||
description "Location of cli frontend .so plugins. Load all .so
|
||||
plugins in this dir as CLI object plugins";
|
||||
}
|
||||
leaf CLICON_CLISPEC_DIR {
|
||||
type string;
|
||||
description "Location of frontend .cli cligen spec files. Load all .cli
|
||||
files in this dir as CLI specification files";
|
||||
}
|
||||
leaf CLICON_CLISPEC_FILE {
|
||||
type string;
|
||||
description "Specific frontend .cli cligen spec file.";
|
||||
}
|
||||
leaf CLICON_CLI_MODE {
|
||||
type string;
|
||||
default "base";
|
||||
description "Startup CLI mode. This should match a CLICON_MODE set in
|
||||
one of the clispec files";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL {
|
||||
type int32;
|
||||
default 1;
|
||||
description "Generate code for CLI completion of existing db symbols.
|
||||
Example: Add name=\"myspec\" in datamodel spec and reference
|
||||
as @myspec";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL_COMPLETION {
|
||||
type int32;
|
||||
default 1;
|
||||
description "Generate code for CLI completion of existing db symbols";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL_TYPE {
|
||||
type string;
|
||||
default "VARS";
|
||||
description "How to generate and show CLI syntax: VARS|ALL";
|
||||
}
|
||||
leaf CLICON_CLI_VARONLY {
|
||||
type int32;
|
||||
default 1;
|
||||
description "Dont include keys in cvec in cli vars callbacks, ie a & k in 'a <b> k <c>' ignored";
|
||||
}
|
||||
leaf CLICON_CLI_LINESCROLLING {
|
||||
type int32;
|
||||
default 1;
|
||||
description "Set to 0 if you want CLI to wrap to next line.
|
||||
Set to 1 if you want CLI to scroll sideways when approaching right margin";
|
||||
}
|
||||
|
||||
leaf CLICON_SOCK_FAMILY {
|
||||
type string;
|
||||
default "UNIX";
|
||||
description "Address family for communicating with clixon_backend (UNIX|IPv4|IPv6)";
|
||||
}
|
||||
leaf CLICON_SOCK {
|
||||
type string;
|
||||
mandatory true;
|
||||
description "If family above is AF_UNIX: Unix socket for communicating
|
||||
with clixon_backend. If family is AF_INET: IPv4 address";
|
||||
}
|
||||
leaf CLICON_SOCK_PORT {
|
||||
type int32;
|
||||
default 4535;
|
||||
description "Inet socket port for communicating with clixon_backend (only IPv4|IPv6)";
|
||||
}
|
||||
leaf CLICON_SOCK_GROUP {
|
||||
type string;
|
||||
default "clicon";
|
||||
description "Group membership to access clixon_backend unix socket";
|
||||
}
|
||||
leaf CLICON_BACKEND_PIDFILE {
|
||||
type string;
|
||||
mandatory true;
|
||||
description "Process-id file";
|
||||
}
|
||||
leaf CLICON_AUTOCOMMIT {
|
||||
type int32;
|
||||
default 0;
|
||||
description "Set if all configuration changes are committed directly,
|
||||
commit command unnecessary";
|
||||
}
|
||||
leaf CLICON_MASTER_PLUGIN {
|
||||
type string;
|
||||
default "master";
|
||||
description "Name of master plugin (both frontend and backend).
|
||||
Master plugin has special callbacks for frontends.
|
||||
See clicon user manual for more info. (Obsolete)";
|
||||
}
|
||||
leaf CLICON_XMLDB_DIR {
|
||||
type string;
|
||||
mandatory true;
|
||||
description "Directory where \"running\", \"candidate\" and \"startup\" are placed";
|
||||
}
|
||||
leaf CLICON_USE_STARTUP_CONFIG {
|
||||
type int32;
|
||||
default 0;
|
||||
description "Enabled uses \"startup\" configuration on boot. It is called
|
||||
startup_db and exists in XMLDB_DIR. NOTE: Obsolete with CLICON_STARTUP_MODE";
|
||||
}
|
||||
leaf CLICON_XMLDB_PLUGIN {
|
||||
type string;
|
||||
mandatory true;
|
||||
description "XMLDB datastore plugin filename (see datastore/ and clixon_xml_db.[ch])";
|
||||
}
|
||||
leaf CLICON_STARTUP_MODE {
|
||||
type startup_mode;
|
||||
description "Which method to boot/start clicon backend";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,256 +0,0 @@
|
|||
module clixon-config {
|
||||
|
||||
prefix cc;
|
||||
|
||||
organization
|
||||
"Clicon / Clixon";
|
||||
|
||||
contact
|
||||
"Olof Hagsand <olof@hagsand.se>";
|
||||
|
||||
description
|
||||
"Clixon configuration file
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
Copyright (C) 2009-2017 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 *****";
|
||||
|
||||
revision 2017-12-03 {
|
||||
description
|
||||
"Added startup config for Clixon 1.3.3 and xmldb_cache in 1.4.0";
|
||||
}
|
||||
typedef startup_mode{
|
||||
description
|
||||
"Which method to boot/start clicon backend.
|
||||
The methods differ in how they reach a running state
|
||||
Which source database to commit from, if any.";
|
||||
type enumeration{
|
||||
enum none{
|
||||
description
|
||||
"Do not touch running state
|
||||
Typically after crash when running state and db are synched";
|
||||
}
|
||||
enum init{
|
||||
description
|
||||
"Initialize running state.
|
||||
Start with a completely clean running state";
|
||||
}
|
||||
enum running{
|
||||
description
|
||||
"Commit running db configuration into running state
|
||||
After reboot if a persistent running db exists";
|
||||
}
|
||||
enum startup{
|
||||
description
|
||||
"Commit startup configuration into running state
|
||||
After reboot when no persistent running db exists";
|
||||
}
|
||||
}
|
||||
}
|
||||
container config {
|
||||
leaf CLICON_CONFIGFILE{
|
||||
type string;
|
||||
description
|
||||
"Location of configuration-file for default values (this file)";
|
||||
}
|
||||
leaf CLICON_YANG_DIR {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"Location of YANG module and submodule files.";
|
||||
}
|
||||
leaf CLICON_YANG_MODULE_MAIN {
|
||||
type string;
|
||||
default "clicon";
|
||||
description
|
||||
"Option used to construct initial yang file:
|
||||
<module>[@<revision>]";
|
||||
}
|
||||
leaf CLICON_YANG_MODULE_REVISION {
|
||||
type string;
|
||||
description
|
||||
"Option used to construct initial yang file:
|
||||
<module>[@<revision>]";
|
||||
}
|
||||
leaf CLICON_BACKEND_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of backend .so plugins. Load all .so
|
||||
plugins in this dir as backend plugins";
|
||||
}
|
||||
leaf CLICON_NETCONF_DIR {
|
||||
type string;
|
||||
description "Location of netconf (frontend) .so plugins";
|
||||
}
|
||||
leaf CLICON_RESTCONF_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of restconf (frontend) .so plugins. Load all .so
|
||||
plugins in this dir as restconf code plugins";
|
||||
}
|
||||
leaf CLICON_RESTCONF_PATH {
|
||||
type string;
|
||||
default "/www-data/fastcgi_restconf.sock";
|
||||
description
|
||||
"FastCGI unix socket. Should be specified in webserver
|
||||
Eg in nginx: fastcgi_pass unix:/www-data/clicon_restconf.sock";
|
||||
}
|
||||
leaf CLICON_CLI_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of cli frontend .so plugins. Load all .so
|
||||
plugins in this dir as CLI object plugins";
|
||||
}
|
||||
leaf CLICON_CLISPEC_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of frontend .cli cligen spec files. Load all .cli
|
||||
files in this dir as CLI specification files";
|
||||
}
|
||||
leaf CLICON_CLISPEC_FILE {
|
||||
type string;
|
||||
description "Specific frontend .cli cligen spec file.";
|
||||
}
|
||||
leaf CLICON_CLI_MODE {
|
||||
type string;
|
||||
default "base";
|
||||
description
|
||||
"Startup CLI mode. This should match a CLICON_MODE set in
|
||||
one of the clispec files";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Generate code for CLI completion of existing db symbols.
|
||||
Example: Add name=\"myspec\" in datamodel spec and reference
|
||||
as @myspec";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL_COMPLETION {
|
||||
type int32;
|
||||
default 1;
|
||||
description "Generate code for CLI completion of existing db symbols";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL_TYPE {
|
||||
type string;
|
||||
default "VARS";
|
||||
description "How to generate and show CLI syntax: VARS|ALL";
|
||||
}
|
||||
leaf CLICON_CLI_VARONLY {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Dont include keys in cvec in cli vars callbacks,
|
||||
ie a & k in 'a <b> k <c>' ignored";
|
||||
}
|
||||
leaf CLICON_CLI_LINESCROLLING {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Set to 0 if you want CLI to wrap to next line.
|
||||
Set to 1 if you want CLI to scroll sideways when approaching
|
||||
right margin";
|
||||
}
|
||||
leaf CLICON_SOCK_FAMILY {
|
||||
type string;
|
||||
default "UNIX";
|
||||
description
|
||||
"Address family for communicating with clixon_backend
|
||||
(UNIX|IPv4|IPv6)";
|
||||
}
|
||||
leaf CLICON_SOCK {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"If family above is AF_UNIX: Unix socket for communicating
|
||||
with clixon_backend. If family is AF_INET: IPv4 address";
|
||||
}
|
||||
leaf CLICON_SOCK_PORT {
|
||||
type int32;
|
||||
default 4535;
|
||||
description
|
||||
"Inet socket port for communicating with clixon_backend
|
||||
(only IPv4|IPv6)";
|
||||
}
|
||||
leaf CLICON_SOCK_GROUP {
|
||||
type string;
|
||||
default "clicon";
|
||||
description "Group membership to access clixon_backend unix socket";
|
||||
}
|
||||
leaf CLICON_BACKEND_PIDFILE {
|
||||
type string;
|
||||
mandatory true;
|
||||
description "Process-id file of backend daemon";
|
||||
}
|
||||
leaf CLICON_AUTOCOMMIT {
|
||||
type int32;
|
||||
default 0;
|
||||
description
|
||||
"Set if all configuration changes are committed automatically
|
||||
on every edit change. Explicit commit commands unnecessary";
|
||||
}
|
||||
leaf CLICON_MASTER_PLUGIN {
|
||||
type string;
|
||||
default "master";
|
||||
description
|
||||
"Name of master plugin (both frontend and backend).
|
||||
Master plugin has special callbacks for frontends.
|
||||
See clicon user manual for more info. (Obsolete?)";
|
||||
}
|
||||
leaf CLICON_XMLDB_DIR {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"Directory where \"running\", \"candidate\" and \"startup\" are placed";
|
||||
}
|
||||
leaf CLICON_XMLDB_PLUGIN {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"XMLDB datastore plugin filename
|
||||
(see datastore/ and clixon_xml_db.[ch])";
|
||||
}
|
||||
leaf CLICON_XMLDB_CACHE {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"XMLDB datastore cache.
|
||||
If set, XML parsed tree is stored in memory";
|
||||
}
|
||||
leaf CLICON_USE_STARTUP_CONFIG {
|
||||
type int32;
|
||||
default 0;
|
||||
description
|
||||
"Enabled uses \"startup\" configuration on boot. It is called
|
||||
startup_db and exists in XMLDB_DIR.
|
||||
NOTE: Obsolete with 1.3.3 and CLICON_STARTUP_MODE";
|
||||
}
|
||||
leaf CLICON_STARTUP_MODE {
|
||||
type startup_mode;
|
||||
description "Which method to boot/start clicon backend";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,291 +0,0 @@
|
|||
module clixon-config {
|
||||
|
||||
prefix cc;
|
||||
|
||||
organization
|
||||
"Clicon / Clixon";
|
||||
|
||||
contact
|
||||
"Olof Hagsand <olof@hagsand.se>";
|
||||
|
||||
description
|
||||
"Clixon configuration file
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
Copyright (C) 2009-2017 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 *****";
|
||||
|
||||
revision 2017-12-27 {
|
||||
description
|
||||
"Added xml sort option for 1.4.0";
|
||||
}
|
||||
typedef startup_mode{
|
||||
description
|
||||
"Which method to boot/start clicon backend.
|
||||
The methods differ in how they reach a running state
|
||||
Which source database to commit from, if any.";
|
||||
type enumeration{
|
||||
enum none{
|
||||
description
|
||||
"Do not touch running state
|
||||
Typically after crash when running state and db are synched";
|
||||
}
|
||||
enum init{
|
||||
description
|
||||
"Initialize running state.
|
||||
Start with a completely clean running state";
|
||||
}
|
||||
enum running{
|
||||
description
|
||||
"Commit running db configuration into running state
|
||||
After reboot if a persistent running db exists";
|
||||
}
|
||||
enum startup{
|
||||
description
|
||||
"Commit startup configuration into running state
|
||||
After reboot when no persistent running db exists";
|
||||
}
|
||||
}
|
||||
}
|
||||
typedef xmldb_format{
|
||||
description
|
||||
"Format of TEXT xml database format.";
|
||||
type enumeration{
|
||||
enum xml{
|
||||
description "Save and load xmldb as XML";
|
||||
}
|
||||
enum json{
|
||||
description "Save and load xmldb as JSON";
|
||||
}
|
||||
}
|
||||
}
|
||||
container config {
|
||||
leaf CLICON_CONFIGFILE{
|
||||
type string;
|
||||
description
|
||||
"Location of configuration-file for default values (this file)";
|
||||
}
|
||||
leaf CLICON_YANG_DIR {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"Location of YANG module and submodule files.";
|
||||
}
|
||||
leaf CLICON_YANG_MODULE_MAIN {
|
||||
type string;
|
||||
default "clicon";
|
||||
description
|
||||
"Option used to construct initial yang file:
|
||||
<module>[@<revision>]";
|
||||
}
|
||||
leaf CLICON_YANG_MODULE_REVISION {
|
||||
type string;
|
||||
description
|
||||
"Option used to construct initial yang file:
|
||||
<module>[@<revision>]";
|
||||
}
|
||||
leaf CLICON_BACKEND_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of backend .so plugins. Load all .so
|
||||
plugins in this dir as backend plugins";
|
||||
}
|
||||
leaf CLICON_NETCONF_DIR {
|
||||
type string;
|
||||
description "Location of netconf (frontend) .so plugins";
|
||||
}
|
||||
leaf CLICON_RESTCONF_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of restconf (frontend) .so plugins. Load all .so
|
||||
plugins in this dir as restconf code plugins";
|
||||
}
|
||||
leaf CLICON_RESTCONF_PATH {
|
||||
type string;
|
||||
default "/www-data/fastcgi_restconf.sock";
|
||||
description
|
||||
"FastCGI unix socket. Should be specified in webserver
|
||||
Eg in nginx: fastcgi_pass unix:/www-data/clicon_restconf.sock";
|
||||
}
|
||||
leaf CLICON_CLI_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of cli frontend .so plugins. Load all .so
|
||||
plugins in this dir as CLI object plugins";
|
||||
}
|
||||
leaf CLICON_CLISPEC_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of frontend .cli cligen spec files. Load all .cli
|
||||
files in this dir as CLI specification files";
|
||||
}
|
||||
leaf CLICON_CLISPEC_FILE {
|
||||
type string;
|
||||
description "Specific frontend .cli cligen spec file.";
|
||||
}
|
||||
leaf CLICON_CLI_MODE {
|
||||
type string;
|
||||
default "base";
|
||||
description
|
||||
"Startup CLI mode. This should match a CLICON_MODE set in
|
||||
one of the clispec files";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Generate code for CLI completion of existing db symbols.
|
||||
Example: Add name=\"myspec\" in datamodel spec and reference
|
||||
as @myspec";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL_COMPLETION {
|
||||
type int32;
|
||||
default 1;
|
||||
description "Generate code for CLI completion of existing db symbols";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL_TYPE {
|
||||
type string;
|
||||
default "VARS";
|
||||
description "How to generate and show CLI syntax: VARS|ALL";
|
||||
}
|
||||
leaf CLICON_CLI_VARONLY {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Dont include keys in cvec in cli vars callbacks,
|
||||
ie a & k in 'a <b> k <c>' ignored";
|
||||
}
|
||||
leaf CLICON_CLI_LINESCROLLING {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Set to 0 if you want CLI to wrap to next line.
|
||||
Set to 1 if you want CLI to scroll sideways when approaching
|
||||
right margin";
|
||||
}
|
||||
leaf CLICON_SOCK_FAMILY {
|
||||
type string;
|
||||
default "UNIX";
|
||||
description
|
||||
"Address family for communicating with clixon_backend
|
||||
(UNIX|IPv4|IPv6)";
|
||||
}
|
||||
leaf CLICON_SOCK {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"If family above is AF_UNIX: Unix socket for communicating
|
||||
with clixon_backend. If family is AF_INET: IPv4 address";
|
||||
}
|
||||
leaf CLICON_SOCK_PORT {
|
||||
type int32;
|
||||
default 4535;
|
||||
description
|
||||
"Inet socket port for communicating with clixon_backend
|
||||
(only IPv4|IPv6)";
|
||||
}
|
||||
leaf CLICON_SOCK_GROUP {
|
||||
type string;
|
||||
default "clicon";
|
||||
description "Group membership to access clixon_backend unix socket";
|
||||
}
|
||||
leaf CLICON_BACKEND_PIDFILE {
|
||||
type string;
|
||||
mandatory true;
|
||||
description "Process-id file of backend daemon";
|
||||
}
|
||||
leaf CLICON_AUTOCOMMIT {
|
||||
type int32;
|
||||
default 0;
|
||||
description
|
||||
"Set if all configuration changes are committed automatically
|
||||
on every edit change. Explicit commit commands unnecessary";
|
||||
}
|
||||
leaf CLICON_MASTER_PLUGIN {
|
||||
type string;
|
||||
default "master";
|
||||
description
|
||||
"Name of master plugin (both frontend and backend).
|
||||
Master plugin has special callbacks for frontends.
|
||||
See clicon user manual for more info. (Obsolete?)";
|
||||
}
|
||||
leaf CLICON_XMLDB_DIR {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"Directory where \"running\", \"candidate\" and \"startup\" are placed";
|
||||
}
|
||||
leaf CLICON_XMLDB_PLUGIN {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"XMLDB datastore plugin filename
|
||||
(see datastore/ and clixon_xml_db.[ch])";
|
||||
}
|
||||
leaf CLICON_XMLDB_CACHE {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"XMLDB datastore cache.
|
||||
If set, XML candidate/running parsed tree is stored in memory
|
||||
If not set, candidate/running is always accessed via disk.";
|
||||
}
|
||||
leaf CLICON_XMLDB_FORMAT {
|
||||
type xmldb_format;
|
||||
default xml;
|
||||
description "XMLDB datastore format.";
|
||||
}
|
||||
leaf CLICON_XMLDB_PRETTY {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"XMLDB datastore pretty print.
|
||||
If set, insert spaces and line-feeds making the XML/JSON human
|
||||
readable. If not set, make the XML/JSON more compact.";
|
||||
}
|
||||
leaf CLICON_XML_SORT {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"If set, sort XML lists and leaf-lists alphabetically and uses binary
|
||||
search. Unless ordered-by user is used.
|
||||
Only works for Yang specified XML.
|
||||
If not set, all lists accessed via linear search.";
|
||||
}
|
||||
leaf CLICON_USE_STARTUP_CONFIG {
|
||||
type int32;
|
||||
default 0;
|
||||
description
|
||||
"Enabled uses \"startup\" configuration on boot. It is called
|
||||
startup_db and exists in XMLDB_DIR.
|
||||
NOTE: Obsolete with 1.3.3 and CLICON_STARTUP_MODE";
|
||||
}
|
||||
leaf CLICON_STARTUP_MODE {
|
||||
type startup_mode;
|
||||
description "Which method to boot/start clicon backend";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,304 +0,0 @@
|
|||
module clixon-config {
|
||||
|
||||
prefix cc;
|
||||
|
||||
organization
|
||||
"Clicon / Clixon";
|
||||
|
||||
contact
|
||||
"Olof Hagsand <olof@hagsand.se>";
|
||||
|
||||
description
|
||||
"Clixon configuration file
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
Copyright (C) 2009-2018 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 *****";
|
||||
|
||||
revision 2018-02-12 {
|
||||
description
|
||||
"Added pretty print for datastore";
|
||||
}
|
||||
typedef startup_mode{
|
||||
description
|
||||
"Which method to boot/start clicon backend.
|
||||
The methods differ in how they reach a running state
|
||||
Which source database to commit from, if any.";
|
||||
type enumeration{
|
||||
enum none{
|
||||
description
|
||||
"Do not touch running state
|
||||
Typically after crash when running state and db are synched";
|
||||
}
|
||||
enum init{
|
||||
description
|
||||
"Initialize running state.
|
||||
Start with a completely clean running state";
|
||||
}
|
||||
enum running{
|
||||
description
|
||||
"Commit running db configuration into running state
|
||||
After reboot if a persistent running db exists";
|
||||
}
|
||||
enum startup{
|
||||
description
|
||||
"Commit startup configuration into running state
|
||||
After reboot when no persistent running db exists";
|
||||
}
|
||||
}
|
||||
}
|
||||
typedef xmldb_format{
|
||||
description
|
||||
"Format of TEXT xml database format.";
|
||||
type enumeration{
|
||||
enum xml{
|
||||
description "Save and load xmldb as XML";
|
||||
}
|
||||
enum json{
|
||||
description "Save and load xmldb as JSON";
|
||||
}
|
||||
}
|
||||
}
|
||||
container config {
|
||||
leaf CLICON_CONFIGFILE{
|
||||
type string;
|
||||
description
|
||||
"Location of configuration-file for default values (this file)";
|
||||
}
|
||||
leaf CLICON_YANG_DIR {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"Location of YANG module and submodule files.";
|
||||
}
|
||||
leaf CLICON_YANG_MODULE_MAIN {
|
||||
type string;
|
||||
default "clicon";
|
||||
description
|
||||
"Option used to construct initial yang file:
|
||||
<module>[@<revision>]";
|
||||
}
|
||||
leaf CLICON_YANG_MODULE_REVISION {
|
||||
type string;
|
||||
description
|
||||
"Option used to construct initial yang file:
|
||||
<module>[@<revision>]";
|
||||
}
|
||||
leaf CLICON_BACKEND_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of backend .so plugins. Load all .so
|
||||
plugins in this dir as backend plugins";
|
||||
}
|
||||
leaf CLICON_NETCONF_DIR {
|
||||
type string;
|
||||
description "Location of netconf (frontend) .so plugins";
|
||||
}
|
||||
leaf CLICON_RESTCONF_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of restconf (frontend) .so plugins. Load all .so
|
||||
plugins in this dir as restconf code plugins";
|
||||
}
|
||||
leaf CLICON_RESTCONF_PATH {
|
||||
type string;
|
||||
default "/www-data/fastcgi_restconf.sock";
|
||||
description
|
||||
"FastCGI unix socket. Should be specified in webserver
|
||||
Eg in nginx: fastcgi_pass unix:/www-data/clicon_restconf.sock";
|
||||
}
|
||||
leaf CLICON_RESTCONF_PRETTY {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"Restconf return value pretty print.
|
||||
Restconf clients may add HTTP header:
|
||||
Accept: application/yang-data+json, or
|
||||
Accept: application/yang-data+xml
|
||||
to get return value in XML or JSON.
|
||||
RFC 8040 examples print XML and JSON in pretty-printed form.
|
||||
Setting this value to false makes restconf return not pretty-printed
|
||||
which may be desirable for performance or tests";
|
||||
}
|
||||
leaf CLICON_CLI_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of cli frontend .so plugins. Load all .so
|
||||
plugins in this dir as CLI object plugins";
|
||||
}
|
||||
leaf CLICON_CLISPEC_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of frontend .cli cligen spec files. Load all .cli
|
||||
files in this dir as CLI specification files";
|
||||
}
|
||||
leaf CLICON_CLISPEC_FILE {
|
||||
type string;
|
||||
description "Specific frontend .cli cligen spec file.";
|
||||
}
|
||||
leaf CLICON_CLI_MODE {
|
||||
type string;
|
||||
default "base";
|
||||
description
|
||||
"Startup CLI mode. This should match a CLICON_MODE set in
|
||||
one of the clispec files";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Generate code for CLI completion of existing db symbols.
|
||||
Example: Add name=\"myspec\" in datamodel spec and reference
|
||||
as @myspec";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL_COMPLETION {
|
||||
type int32;
|
||||
default 1;
|
||||
description "Generate code for CLI completion of existing db symbols";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL_TYPE {
|
||||
type string;
|
||||
default "VARS";
|
||||
description "How to generate and show CLI syntax: VARS|ALL";
|
||||
}
|
||||
leaf CLICON_CLI_VARONLY {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Dont include keys in cvec in cli vars callbacks,
|
||||
ie a & k in 'a <b> k <c>' ignored";
|
||||
}
|
||||
leaf CLICON_CLI_LINESCROLLING {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Set to 0 if you want CLI to wrap to next line.
|
||||
Set to 1 if you want CLI to scroll sideways when approaching
|
||||
right margin";
|
||||
}
|
||||
leaf CLICON_SOCK_FAMILY {
|
||||
type string;
|
||||
default "UNIX";
|
||||
description
|
||||
"Address family for communicating with clixon_backend
|
||||
(UNIX|IPv4|IPv6)";
|
||||
}
|
||||
leaf CLICON_SOCK {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"If family above is AF_UNIX: Unix socket for communicating
|
||||
with clixon_backend. If family is AF_INET: IPv4 address";
|
||||
}
|
||||
leaf CLICON_SOCK_PORT {
|
||||
type int32;
|
||||
default 4535;
|
||||
description
|
||||
"Inet socket port for communicating with clixon_backend
|
||||
(only IPv4|IPv6)";
|
||||
}
|
||||
leaf CLICON_SOCK_GROUP {
|
||||
type string;
|
||||
default "clicon";
|
||||
description "Group membership to access clixon_backend unix socket";
|
||||
}
|
||||
leaf CLICON_BACKEND_PIDFILE {
|
||||
type string;
|
||||
mandatory true;
|
||||
description "Process-id file of backend daemon";
|
||||
}
|
||||
leaf CLICON_AUTOCOMMIT {
|
||||
type int32;
|
||||
default 0;
|
||||
description
|
||||
"Set if all configuration changes are committed automatically
|
||||
on every edit change. Explicit commit commands unnecessary";
|
||||
}
|
||||
leaf CLICON_MASTER_PLUGIN {
|
||||
type string;
|
||||
default "master";
|
||||
description
|
||||
"Name of master plugin (both frontend and backend).
|
||||
Master plugin has special callbacks for frontends.
|
||||
See clicon user manual for more info. (Obsolete?)";
|
||||
}
|
||||
leaf CLICON_XMLDB_DIR {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"Directory where \"running\", \"candidate\" and \"startup\" are placed";
|
||||
}
|
||||
leaf CLICON_XMLDB_PLUGIN {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"XMLDB datastore plugin filename
|
||||
(see datastore/ and clixon_xml_db.[ch])";
|
||||
}
|
||||
leaf CLICON_XMLDB_CACHE {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"XMLDB datastore cache.
|
||||
If set, XML candidate/running parsed tree is stored in memory
|
||||
If not set, candidate/running is always accessed via disk.";
|
||||
}
|
||||
leaf CLICON_XMLDB_FORMAT {
|
||||
type xmldb_format;
|
||||
default xml;
|
||||
description "XMLDB datastore format.";
|
||||
}
|
||||
leaf CLICON_XMLDB_PRETTY {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"XMLDB datastore pretty print.
|
||||
If set, insert spaces and line-feeds making the XML/JSON human
|
||||
readable. If not set, make the XML/JSON more compact.";
|
||||
}
|
||||
leaf CLICON_XML_SORT {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"If set, sort XML lists and leaf-lists alphabetically and uses binary
|
||||
search. Unless ordered-by user is used.
|
||||
Only works for Yang specified XML.
|
||||
If not set, all lists accessed via linear search.";
|
||||
}
|
||||
leaf CLICON_USE_STARTUP_CONFIG {
|
||||
type int32;
|
||||
default 0;
|
||||
description
|
||||
"Enabled uses \"startup\" configuration on boot. It is called
|
||||
startup_db and exists in XMLDB_DIR.
|
||||
NOTE: Obsolete with 1.3.3 and CLICON_STARTUP_MODE";
|
||||
}
|
||||
leaf CLICON_STARTUP_MODE {
|
||||
type startup_mode;
|
||||
description "Which method to boot/start clicon backend";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,353 +0,0 @@
|
|||
module clixon-config {
|
||||
|
||||
prefix cc;
|
||||
|
||||
organization
|
||||
"Clicon / Clixon";
|
||||
|
||||
contact
|
||||
"Olof Hagsand <olof@hagsand.se>";
|
||||
|
||||
description
|
||||
"Clixon configuration file
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
Copyright (C) 2009-2018 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 *****";
|
||||
|
||||
revision 2018-04-30 {
|
||||
description
|
||||
"Released with Clixon 3.6";
|
||||
}
|
||||
typedef startup_mode{
|
||||
description
|
||||
"Which method to boot/start clicon backend.
|
||||
The methods differ in how they reach a running state
|
||||
Which source database to commit from, if any.";
|
||||
type enumeration{
|
||||
enum none{
|
||||
description
|
||||
"Do not touch running state
|
||||
Typically after crash when running state and db are synched";
|
||||
}
|
||||
enum init{
|
||||
description
|
||||
"Initialize running state.
|
||||
Start with a completely clean running state";
|
||||
}
|
||||
enum running{
|
||||
description
|
||||
"Commit running db configuration into running state
|
||||
After reboot if a persistent running db exists";
|
||||
}
|
||||
enum startup{
|
||||
description
|
||||
"Commit startup configuration into running state
|
||||
After reboot when no persistent running db exists";
|
||||
}
|
||||
}
|
||||
}
|
||||
typedef xmldb_format{
|
||||
description
|
||||
"Format of TEXT xml database format.";
|
||||
type enumeration{
|
||||
enum xml{
|
||||
description "Save and load xmldb as XML";
|
||||
}
|
||||
enum json{
|
||||
description "Save and load xmldb as JSON";
|
||||
}
|
||||
}
|
||||
}
|
||||
typedef cli_genmodel_type{
|
||||
description
|
||||
"How to generate CLI from YANG model,
|
||||
eg list a{ key x; leaf x; leaf y;}";
|
||||
type enumeration{
|
||||
enum NONE{
|
||||
description "No extra keywords: a <x> <y>";
|
||||
}
|
||||
enum VARS{
|
||||
description "Keywords on non-key variables: a <x> y <y>";
|
||||
}
|
||||
enum ALL{
|
||||
description "Keywords on all variables: a x <x> y <y>";
|
||||
}
|
||||
}
|
||||
}
|
||||
typedef nacm_mode{
|
||||
description
|
||||
"Mode of RFC8341 Network Configuration Access Control Model.
|
||||
It is unclear from the RFC whether NACM rules are internal
|
||||
in a configuration (ie embedded in regular config) or external/OOB
|
||||
in s separate, specific NACM-config";
|
||||
type enumeration{
|
||||
enum disabled{
|
||||
description "NACM is disabled";
|
||||
}
|
||||
enum internal{
|
||||
description "NACM is enabled and available in the regular config";
|
||||
}
|
||||
enum external{
|
||||
description "NACM is enabled and available in a separate config";
|
||||
}
|
||||
}
|
||||
}
|
||||
container config {
|
||||
leaf CLICON_CONFIGFILE{
|
||||
type string;
|
||||
description
|
||||
"Location of configuration-file for default values (this file)";
|
||||
}
|
||||
leaf CLICON_YANG_DIR {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"Location of YANG module and submodule files.";
|
||||
}
|
||||
leaf CLICON_YANG_MODULE_MAIN {
|
||||
type string;
|
||||
default "clicon";
|
||||
description
|
||||
"Option used to construct initial yang file:
|
||||
<module>[@<revision>]";
|
||||
}
|
||||
leaf CLICON_YANG_MODULE_REVISION {
|
||||
type string;
|
||||
description
|
||||
"Option used to construct initial yang file:
|
||||
<module>[@<revision>]";
|
||||
}
|
||||
leaf CLICON_BACKEND_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of backend .so plugins. Load all .so
|
||||
plugins in this dir as backend plugins";
|
||||
}
|
||||
leaf CLICON_BACKEND_REGEXP {
|
||||
type string;
|
||||
description
|
||||
"Regexp of matching backend plugins in CLICON_BACKEND_DIR";
|
||||
default "(.so)$";
|
||||
}
|
||||
leaf CLICON_NETCONF_DIR {
|
||||
type string;
|
||||
description "Location of netconf (frontend) .so plugins";
|
||||
}
|
||||
leaf CLICON_RESTCONF_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of restconf (frontend) .so plugins. Load all .so
|
||||
plugins in this dir as restconf code plugins";
|
||||
}
|
||||
leaf CLICON_RESTCONF_PATH {
|
||||
type string;
|
||||
default "/www-data/fastcgi_restconf.sock";
|
||||
description
|
||||
"FastCGI unix socket. Should be specified in webserver
|
||||
Eg in nginx: fastcgi_pass unix:/www-data/clicon_restconf.sock";
|
||||
}
|
||||
leaf CLICON_RESTCONF_PRETTY {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"Restconf return value pretty print.
|
||||
Restconf clients may add HTTP header:
|
||||
Accept: application/yang-data+json, or
|
||||
Accept: application/yang-data+xml
|
||||
to get return value in XML or JSON.
|
||||
RFC 8040 examples print XML and JSON in pretty-printed form.
|
||||
Setting this value to false makes restconf return not pretty-printed
|
||||
which may be desirable for performance or tests";
|
||||
}
|
||||
leaf CLICON_CLI_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of cli frontend .so plugins. Load all .so
|
||||
plugins in this dir as CLI object plugins";
|
||||
}
|
||||
leaf CLICON_CLISPEC_DIR {
|
||||
type string;
|
||||
description
|
||||
"Location of frontend .cli cligen spec files. Load all .cli
|
||||
files in this dir as CLI specification files";
|
||||
}
|
||||
leaf CLICON_CLISPEC_FILE {
|
||||
type string;
|
||||
description "Specific frontend .cli cligen spec file.";
|
||||
}
|
||||
leaf CLICON_CLI_MODE {
|
||||
type string;
|
||||
default "base";
|
||||
description
|
||||
"Startup CLI mode. This should match a CLICON_MODE set in
|
||||
one of the clispec files";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Generate code for CLI completion of existing db symbols.
|
||||
Example: Add name=\"myspec\" in datamodel spec and reference
|
||||
as @myspec";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL_COMPLETION {
|
||||
type int32;
|
||||
default 1;
|
||||
description "Generate code for CLI completion of existing db symbols";
|
||||
}
|
||||
leaf CLICON_CLI_GENMODEL_TYPE {
|
||||
type cli_genmodel_type;
|
||||
default "VARS";
|
||||
description "How to generate and show CLI syntax: VARS|ALL";
|
||||
}
|
||||
leaf CLICON_CLI_VARONLY {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Dont include keys in cvec in cli vars callbacks,
|
||||
ie a & k in 'a <b> k <c>' ignored";
|
||||
}
|
||||
leaf CLICON_CLI_LINESCROLLING {
|
||||
type int32;
|
||||
default 1;
|
||||
description
|
||||
"Set to 0 if you want CLI to wrap to next line.
|
||||
Set to 1 if you want CLI to scroll sideways when approaching
|
||||
right margin";
|
||||
}
|
||||
leaf CLICON_SOCK_FAMILY {
|
||||
type string;
|
||||
default "UNIX";
|
||||
description
|
||||
"Address family for communicating with clixon_backend
|
||||
(UNIX|IPv4|IPv6)";
|
||||
}
|
||||
leaf CLICON_SOCK {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"If family above is AF_UNIX: Unix socket for communicating
|
||||
with clixon_backend. If family is AF_INET: IPv4 address";
|
||||
}
|
||||
leaf CLICON_SOCK_PORT {
|
||||
type int32;
|
||||
default 4535;
|
||||
description
|
||||
"Inet socket port for communicating with clixon_backend
|
||||
(only IPv4|IPv6)";
|
||||
}
|
||||
leaf CLICON_SOCK_GROUP {
|
||||
type string;
|
||||
default "clicon";
|
||||
description "Group membership to access clixon_backend unix socket";
|
||||
}
|
||||
leaf CLICON_BACKEND_PIDFILE {
|
||||
type string;
|
||||
mandatory true;
|
||||
description "Process-id file of backend daemon";
|
||||
}
|
||||
leaf CLICON_AUTOCOMMIT {
|
||||
type int32;
|
||||
default 0;
|
||||
description
|
||||
"Set if all configuration changes are committed automatically
|
||||
on every edit change. Explicit commit commands unnecessary";
|
||||
}
|
||||
leaf CLICON_XMLDB_DIR {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"Directory where \"running\", \"candidate\" and \"startup\" are placed";
|
||||
}
|
||||
leaf CLICON_XMLDB_PLUGIN {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"XMLDB datastore plugin filename
|
||||
(see datastore/ and clixon_xml_db.[ch])";
|
||||
}
|
||||
leaf CLICON_XMLDB_CACHE {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"XMLDB datastore cache.
|
||||
If set, XML candidate/running parsed tree is stored in memory
|
||||
If not set, candidate/running is always accessed via disk.";
|
||||
}
|
||||
leaf CLICON_XMLDB_FORMAT {
|
||||
type xmldb_format;
|
||||
default xml;
|
||||
description "XMLDB datastore format.";
|
||||
}
|
||||
leaf CLICON_XMLDB_PRETTY {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"XMLDB datastore pretty print.
|
||||
If set, insert spaces and line-feeds making the XML/JSON human
|
||||
readable. If not set, make the XML/JSON more compact.";
|
||||
}
|
||||
leaf CLICON_XML_SORT {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"If set, sort XML lists and leaf-lists alphabetically and uses binary
|
||||
search. Unless ordered-by user is used.
|
||||
Only works for Yang specified XML.
|
||||
If not set, all lists accessed via linear search.";
|
||||
}
|
||||
leaf CLICON_USE_STARTUP_CONFIG {
|
||||
type int32;
|
||||
default 0;
|
||||
description
|
||||
"Enabled uses \"startup\" configuration on boot. It is called
|
||||
startup_db and exists in XMLDB_DIR.
|
||||
NOTE: Obsolete with 1.3.3 and CLICON_STARTUP_MODE";
|
||||
}
|
||||
leaf CLICON_STARTUP_MODE {
|
||||
type startup_mode;
|
||||
description "Which method to boot/start clicon backend";
|
||||
}
|
||||
leaf CLICON_TRANSACTION_MOD {
|
||||
type boolean;
|
||||
default false;
|
||||
description "If set, modifications in validation and commit
|
||||
callbacks are written back into the datastore";
|
||||
}
|
||||
leaf CLICON_NACM_MODE {
|
||||
type nacm_mode;
|
||||
default disabled;
|
||||
description "RFC8341 network access configuration control model
|
||||
(NACM) mode: disabled, in regular (internal) config
|
||||
or separate external file given by CLICON_NACM_FILE";
|
||||
}
|
||||
leaf CLICON_NACM_FILE {
|
||||
type string;
|
||||
description "RFC8341 NACM external configuration file";
|
||||
}
|
||||
}
|
||||
}
|
||||
69
yang/clixon/Makefile.in
Normal file
69
yang/clixon/Makefile.in
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
#
|
||||
# ***** 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@
|
||||
|
||||
CLIXON_DATADIR = @CLIXON_DATADIR@
|
||||
|
||||
YANGSPECS = clixon-config@2018-10-21.yang
|
||||
YANGSPECS += clixon-lib@2019-01-02.yang
|
||||
YANGSPECS += clixon-rfc5277@2008-07-01.yang
|
||||
|
||||
APPNAME = clixon # subdir ehere these files are installed
|
||||
|
||||
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
|
||||
|
||||
|
|
@ -134,6 +134,7 @@ module clixon-config {
|
|||
"Location of configuration-file for default values (this file)";
|
||||
}
|
||||
leaf-list CLICON_YANG_DIR {
|
||||
ordered-by user;
|
||||
type string;
|
||||
description
|
||||
"Yang directory path for finding module and submodule files.
|
||||
|
|
@ -1,279 +0,0 @@
|
|||
module ietf-restconf {
|
||||
yang-version 1.1;
|
||||
namespace "urn:ietf:params:xml:ns:yang:ietf-restconf";
|
||||
prefix "rc";
|
||||
|
||||
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 conceptual YANG specifications
|
||||
for basic RESTCONF media type definitions used in
|
||||
RESTCONF protocol messages.
|
||||
|
||||
Note that the YANG definitions within this module do not
|
||||
represent configuration data of any kind.
|
||||
The 'restconf-media-type' YANG extension statement
|
||||
provides a normative syntax for XML and JSON
|
||||
message-encoding purposes.
|
||||
|
||||
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.";
|
||||
}
|
||||
|
||||
extension yang-data {
|
||||
argument name {
|
||||
yin-element true;
|
||||
}
|
||||
description
|
||||
"This extension is used to specify a YANG data template that
|
||||
represents conceptual data defined in YANG. It is
|
||||
intended to describe hierarchical data independent of
|
||||
protocol context or specific message-encoding format.
|
||||
Data definition statements within a yang-data extension
|
||||
specify the generic syntax for the specific YANG data
|
||||
template, whose name is the argument of the 'yang-data'
|
||||
extension statement.
|
||||
|
||||
Note that this extension does not define a media type.
|
||||
A specification using this extension MUST specify the
|
||||
message-encoding rules, including the content media type.
|
||||
|
||||
The mandatory 'name' parameter value identifies the YANG
|
||||
data template that is being defined. It contains the
|
||||
template name.
|
||||
|
||||
This extension is ignored unless it appears as a top-level
|
||||
statement. It MUST contain data definition statements
|
||||
that result in exactly one container data node definition.
|
||||
An instance of a YANG data template can thus be translated
|
||||
into an XML instance document, whose top-level element
|
||||
corresponds to the top-level container.
|
||||
|
||||
The module name and namespace values for the YANG module using
|
||||
the extension statement are assigned to instance document data
|
||||
conforming to the data definition statements within
|
||||
this extension.
|
||||
|
||||
The substatements of this extension MUST follow the
|
||||
'data-def-stmt' rule in the YANG ABNF.
|
||||
|
||||
The XPath document root is the extension statement itself,
|
||||
such that the child nodes of the document root are
|
||||
represented by the data-def-stmt substatements within
|
||||
this extension. This conceptual document is the context
|
||||
for the following YANG statements:
|
||||
|
||||
- must-stmt
|
||||
- when-stmt
|
||||
- path-stmt
|
||||
- min-elements-stmt
|
||||
- max-elements-stmt
|
||||
- mandatory-stmt
|
||||
- unique-stmt
|
||||
- ordered-by
|
||||
- instance-identifier data type
|
||||
|
||||
The following data-def-stmt substatements are constrained
|
||||
when used within a 'yang-data' extension statement.
|
||||
|
||||
- The list-stmt is not required to have a key-stmt defined.
|
||||
- The if-feature-stmt is ignored if present.
|
||||
- The config-stmt is ignored if present.
|
||||
- The available identity values for any 'identityref'
|
||||
leaf or leaf-list nodes are limited to the module
|
||||
containing this extension statement and the modules
|
||||
imported into that module.
|
||||
";
|
||||
}
|
||||
|
||||
rc:yang-data yang-errors {
|
||||
uses errors;
|
||||
}
|
||||
|
||||
rc:yang-data yang-api {
|
||||
uses restconf;
|
||||
}
|
||||
|
||||
grouping errors {
|
||||
description
|
||||
"A grouping that contains a YANG container
|
||||
representing the syntax and semantics of a
|
||||
YANG Patch error report within a response message.";
|
||||
|
||||
container errors {
|
||||
description
|
||||
"Represents an error report returned by the server if
|
||||
a request results in an error.";
|
||||
|
||||
list error {
|
||||
description
|
||||
"An entry containing information about one
|
||||
specific error that occurred while processing
|
||||
a RESTCONF request.";
|
||||
reference
|
||||
"RFC 6241, Section 4.3.";
|
||||
|
||||
leaf error-type {
|
||||
type enumeration {
|
||||
enum transport {
|
||||
description
|
||||
"The transport layer.";
|
||||
}
|
||||
enum rpc {
|
||||
description
|
||||
"The rpc or notification layer.";
|
||||
}
|
||||
enum protocol {
|
||||
description
|
||||
"The protocol operation layer.";
|
||||
}
|
||||
enum application {
|
||||
description
|
||||
"The server application layer.";
|
||||
}
|
||||
}
|
||||
mandatory true;
|
||||
description
|
||||
"The protocol layer where the error occurred.";
|
||||
}
|
||||
|
||||
leaf error-tag {
|
||||
type string;
|
||||
mandatory true;
|
||||
description
|
||||
"The enumerated error-tag.";
|
||||
}
|
||||
|
||||
leaf error-app-tag {
|
||||
type string;
|
||||
description
|
||||
"The application-specific error-tag.";
|
||||
}
|
||||
|
||||
leaf error-path {
|
||||
type instance-identifier;
|
||||
description
|
||||
"The YANG instance identifier associated
|
||||
with the error node.";
|
||||
}
|
||||
|
||||
leaf error-message {
|
||||
type string;
|
||||
description
|
||||
"A message describing the error.";
|
||||
}
|
||||
|
||||
anydata error-info {
|
||||
description
|
||||
"This anydata value MUST represent a container with
|
||||
zero or more data nodes representing additional
|
||||
error information.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping restconf {
|
||||
description
|
||||
"Conceptual grouping representing the RESTCONF
|
||||
root resource.";
|
||||
|
||||
container restconf {
|
||||
description
|
||||
"Conceptual container representing the RESTCONF
|
||||
root resource.";
|
||||
container data {
|
||||
description
|
||||
"Container representing the datastore resource.
|
||||
Represents the conceptual root of all state data
|
||||
and configuration data supported by the server.
|
||||
The child nodes of this container can be any data
|
||||
resources that are defined as top-level data nodes
|
||||
from the YANG modules advertised by the server in
|
||||
the 'ietf-yang-library' module.";
|
||||
}
|
||||
|
||||
container operations {
|
||||
description
|
||||
"Container for all operation resources.
|
||||
|
||||
Each resource is represented as an empty leaf with the
|
||||
name of the RPC operation from the YANG 'rpc' statement.
|
||||
|
||||
For example, the 'system-restart' RPC operation defined
|
||||
in the 'ietf-system' module would be represented as
|
||||
an empty leaf in the 'ietf-system' namespace. This is
|
||||
a conceptual leaf and will not actually be found in
|
||||
the module:
|
||||
|
||||
module ietf-system {
|
||||
leaf system-reset {
|
||||
type empty;
|
||||
}
|
||||
}
|
||||
|
||||
To invoke the 'system-restart' RPC operation:
|
||||
|
||||
POST /restconf/operations/ietf-system:system-restart
|
||||
|
||||
To discover the RPC operations supported by the server:
|
||||
|
||||
GET /restconf/operations
|
||||
|
||||
In XML, the YANG module namespace identifies the module:
|
||||
|
||||
<system-restart
|
||||
xmlns='urn:ietf:params:xml:ns:yang:ietf-system'/>
|
||||
|
||||
In JSON, the YANG module name identifies the module:
|
||||
|
||||
{ 'ietf-system:system-restart' : [null] }
|
||||
";
|
||||
}
|
||||
|
||||
leaf yang-library-version {
|
||||
type string {
|
||||
pattern '\d{4}-\d{2}-\d{2}';
|
||||
}
|
||||
config false;
|
||||
mandatory true;
|
||||
description
|
||||
"Identifies the revision date of the 'ietf-yang-library'
|
||||
module that is implemented by this RESTCONF server.
|
||||
Indicates the year, month, and day in YYYY-MM-DD
|
||||
numeric format.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
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
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";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue