from 3.6.1: * https://github.com/clicon/clixon/issues/23 clixon_cli failing with error
* The example included a reference to nacm yang file which did not exist and was not used * Added clixon-config@2018-04-30.yang
This commit is contained in:
parent
cfe4702069
commit
5bc39a9bc0
8 changed files with 486 additions and 63 deletions
|
|
@ -8,6 +8,13 @@
|
||||||
### Corrected Bugs
|
### Corrected Bugs
|
||||||
* Fixed JSON unbalanced braces resultin assert.
|
* Fixed JSON unbalanced braces resultin assert.
|
||||||
|
|
||||||
|
## 3.6.1 (29 May 2018)
|
||||||
|
|
||||||
|
### Corrected Bugs
|
||||||
|
* https://github.com/clicon/clixon/issues/23 clixon_cli failing with error
|
||||||
|
* The example included a reference to nacm yang file which did not exist and was not used
|
||||||
|
* Added clixon-config@2018-04-30.yang
|
||||||
|
|
||||||
## 3.6.0 (30 April 2018)
|
## 3.6.0 (30 April 2018)
|
||||||
|
|
||||||
### Major changes:
|
### Major changes:
|
||||||
|
|
|
||||||
109
configure
vendored
109
configure
vendored
|
|
@ -640,6 +640,11 @@ SH_SUFFIX
|
||||||
AR_SUFFIX
|
AR_SUFFIX
|
||||||
OBJ_SUFFIX
|
OBJ_SUFFIX
|
||||||
INSTALLFLAGS
|
INSTALLFLAGS
|
||||||
|
INSTALL_LIB
|
||||||
|
INSTALL
|
||||||
|
INSTALL_DATA
|
||||||
|
INSTALL_SCRIPT
|
||||||
|
INSTALL_PROGRAM
|
||||||
CPPFLAGS
|
CPPFLAGS
|
||||||
INCLUDES
|
INCLUDES
|
||||||
LDFLAGS
|
LDFLAGS
|
||||||
|
|
@ -2339,6 +2344,104 @@ test -n "$target_alias" &&
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Find a good install program. We prefer a C program (faster),
|
||||||
|
# so one script is as good as another. But avoid the broken or
|
||||||
|
# incompatible versions:
|
||||||
|
# SysV /etc/install, /usr/sbin/install
|
||||||
|
# SunOS /usr/etc/install
|
||||||
|
# IRIX /sbin/install
|
||||||
|
# AIX /bin/install
|
||||||
|
# AmigaOS /C/install, which installs bootblocks on floppy discs
|
||||||
|
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
|
||||||
|
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
|
||||||
|
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
|
||||||
|
# OS/2's system install, which has a completely different semantic
|
||||||
|
# ./install, which can be erroneously created by make from ./install.sh.
|
||||||
|
# Reject install programs that cannot install multiple files.
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
|
||||||
|
$as_echo_n "checking for a BSD-compatible install... " >&6; }
|
||||||
|
if test -z "$INSTALL"; then
|
||||||
|
if ${ac_cv_path_install+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||||
|
for as_dir in $PATH
|
||||||
|
do
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
test -z "$as_dir" && as_dir=.
|
||||||
|
# Account for people who put trailing slashes in PATH elements.
|
||||||
|
case $as_dir/ in #((
|
||||||
|
./ | .// | /[cC]/* | \
|
||||||
|
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
|
||||||
|
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
|
||||||
|
/usr/ucb/* ) ;;
|
||||||
|
*)
|
||||||
|
# OSF1 and SCO ODT 3.0 have their own names for install.
|
||||||
|
# Don't use installbsd from OSF since it installs stuff as root
|
||||||
|
# by default.
|
||||||
|
for ac_prog in ginstall scoinst install; do
|
||||||
|
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||||
|
if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
|
||||||
|
if test $ac_prog = install &&
|
||||||
|
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
|
||||||
|
# AIX install. It has an incompatible calling convention.
|
||||||
|
:
|
||||||
|
elif test $ac_prog = install &&
|
||||||
|
grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
|
||||||
|
# program-specific install script used by HP pwplus--don't use.
|
||||||
|
:
|
||||||
|
else
|
||||||
|
rm -rf conftest.one conftest.two conftest.dir
|
||||||
|
echo one > conftest.one
|
||||||
|
echo two > conftest.two
|
||||||
|
mkdir conftest.dir
|
||||||
|
if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
|
||||||
|
test -s conftest.one && test -s conftest.two &&
|
||||||
|
test -s conftest.dir/conftest.one &&
|
||||||
|
test -s conftest.dir/conftest.two
|
||||||
|
then
|
||||||
|
ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
|
||||||
|
break 3
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
done
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
|
||||||
|
rm -rf conftest.one conftest.two conftest.dir
|
||||||
|
|
||||||
|
fi
|
||||||
|
if test "${ac_cv_path_install+set}" = set; then
|
||||||
|
INSTALL=$ac_cv_path_install
|
||||||
|
else
|
||||||
|
# As a last resort, use the slow shell script. Don't cache a
|
||||||
|
# value for INSTALL within a source directory, because that will
|
||||||
|
# break other packages using the cache if that directory is
|
||||||
|
# removed, or if the value is a relative name.
|
||||||
|
INSTALL=$ac_install_sh
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
|
||||||
|
$as_echo "$INSTALL" >&6; }
|
||||||
|
|
||||||
|
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
|
||||||
|
# It thinks the first close brace ends the variable substitution.
|
||||||
|
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
|
||||||
|
|
||||||
|
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
|
||||||
|
|
||||||
|
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -4787,6 +4890,7 @@ gives unlimited permission to copy, distribute and modify it."
|
||||||
|
|
||||||
ac_pwd='$ac_pwd'
|
ac_pwd='$ac_pwd'
|
||||||
srcdir='$srcdir'
|
srcdir='$srcdir'
|
||||||
|
INSTALL='$INSTALL'
|
||||||
test -n "\$AWK" || AWK=awk
|
test -n "\$AWK" || AWK=awk
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
|
|
@ -5369,6 +5473,10 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
|
||||||
# CONFIG_FILE
|
# CONFIG_FILE
|
||||||
#
|
#
|
||||||
|
|
||||||
|
case $INSTALL in
|
||||||
|
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
|
||||||
|
*) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
|
||||||
|
esac
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||||
|
|
@ -5422,6 +5530,7 @@ s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
|
||||||
s&@builddir@&$ac_builddir&;t t
|
s&@builddir@&$ac_builddir&;t t
|
||||||
s&@abs_builddir@&$ac_abs_builddir&;t t
|
s&@abs_builddir@&$ac_abs_builddir&;t t
|
||||||
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
|
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
|
||||||
|
s&@INSTALL@&$ac_INSTALL&;t t
|
||||||
$ac_datarootdir_hack
|
$ac_datarootdir_hack
|
||||||
"
|
"
|
||||||
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
|
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
|
||||||
|
|
|
||||||
|
|
@ -73,11 +73,17 @@ AC_SUBST(CLIGEN_PREFIX)
|
||||||
AC_MSG_RESULT(CLIXON version is ${CLIXON_VERSION})
|
AC_MSG_RESULT(CLIXON version is ${CLIXON_VERSION})
|
||||||
|
|
||||||
AC_CANONICAL_TARGET
|
AC_CANONICAL_TARGET
|
||||||
|
|
||||||
AC_SUBST(CC)
|
AC_SUBST(CC)
|
||||||
AC_SUBST(CFLAGS)
|
AC_SUBST(CFLAGS)
|
||||||
AC_SUBST(LDFLAGS)
|
AC_SUBST(LDFLAGS)
|
||||||
AC_SUBST(INCLUDES)
|
AC_SUBST(INCLUDES)
|
||||||
AC_SUBST(CPPFLAGS)
|
AC_SUBST(CPPFLAGS)
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
AC_SUBST(INSTALL)
|
||||||
|
AC_SUBST(INSTALL_LIB)
|
||||||
|
AC_SUBST(INSTALL_DATA)
|
||||||
|
AC_SUBST(INSTALL_PROGRAM)
|
||||||
AC_SUBST(INSTALLFLAGS)
|
AC_SUBST(INSTALLFLAGS)
|
||||||
AC_SUBST(LIBS)
|
AC_SUBST(LIBS)
|
||||||
AC_SUBST(OBJ_SUFFIX)
|
AC_SUBST(OBJ_SUFFIX)
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,6 @@ module example {
|
||||||
import ietf-routing {
|
import ietf-routing {
|
||||||
prefix rt;
|
prefix rt;
|
||||||
}
|
}
|
||||||
import ietf-netconf-acm {
|
|
||||||
prefix nacm;
|
|
||||||
}
|
|
||||||
description
|
description
|
||||||
"Example code that includes ietf-ip and ietf-routing";
|
"Example code that includes ietf-ip and ietf-routing";
|
||||||
/* Translation function example - See also example_cli */
|
/* Translation function example - See also example_cli */
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ fyangerr=$dir/err.yang
|
||||||
cat <<EOF > $cfg
|
cat <<EOF > $cfg
|
||||||
<config>
|
<config>
|
||||||
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
|
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
|
||||||
<CLICON_YANG_DIR>/usr/local/share/$APPNAME/yang</CLICON_YANG_DIR>
|
<CLICON_YANG_DIR>/usr/local/share/clixon</CLICON_YANG_DIR>
|
||||||
<CLICON_YANG_MODULE_MAIN>$fyang</CLICON_YANG_MODULE_MAIN>
|
<CLICON_YANG_MODULE_MAIN>$fyang</CLICON_YANG_MODULE_MAIN>
|
||||||
<CLICON_CLISPEC_DIR>/usr/local/lib/$APPNAME/clispec</CLICON_CLISPEC_DIR>
|
<CLICON_CLISPEC_DIR>/usr/local/lib/$APPNAME/clispec</CLICON_CLISPEC_DIR>
|
||||||
<CLICON_RESTCONF_DIR>/usr/local/lib/$APPNAME/restconf</CLICON_RESTCONF_DIR>
|
<CLICON_RESTCONF_DIR>/usr/local/lib/$APPNAME/restconf</CLICON_RESTCONF_DIR>
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ bindir = @bindir@
|
||||||
includedir = @includedir@
|
includedir = @includedir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
|
|
||||||
YANGSPECS = clixon-config@2018-02-12.yang
|
YANGSPECS = clixon-config@2018-04-30.yang
|
||||||
YANGSPECS += ietf-netconf@2011-06-01.yang
|
YANGSPECS += ietf-netconf@2011-06-01.yang
|
||||||
YANGSPECS += ietf-netconf-acm@2018-02-14.yang
|
YANGSPECS += ietf-netconf-acm@2018-02-14.yang
|
||||||
YANGSPECS += ietf-inet-types@2013-07-15.yang
|
YANGSPECS += ietf-inet-types@2013-07-15.yang
|
||||||
|
|
|
||||||
|
|
@ -82,40 +82,6 @@ module clixon-config {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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 {
|
container config {
|
||||||
leaf CLICON_CONFIGFILE{
|
leaf CLICON_CONFIGFILE{
|
||||||
type string;
|
type string;
|
||||||
|
|
@ -147,12 +113,6 @@ module clixon-config {
|
||||||
"Location of backend .so plugins. Load all .so
|
"Location of backend .so plugins. Load all .so
|
||||||
plugins in this dir as backend plugins";
|
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 {
|
leaf CLICON_NETCONF_DIR {
|
||||||
type string;
|
type string;
|
||||||
description "Location of netconf (frontend) .so plugins";
|
description "Location of netconf (frontend) .so plugins";
|
||||||
|
|
@ -220,7 +180,7 @@ module clixon-config {
|
||||||
description "Generate code for CLI completion of existing db symbols";
|
description "Generate code for CLI completion of existing db symbols";
|
||||||
}
|
}
|
||||||
leaf CLICON_CLI_GENMODEL_TYPE {
|
leaf CLICON_CLI_GENMODEL_TYPE {
|
||||||
type cli_genmodel_type;
|
type string;
|
||||||
default "VARS";
|
default "VARS";
|
||||||
description "How to generate and show CLI syntax: VARS|ALL";
|
description "How to generate and show CLI syntax: VARS|ALL";
|
||||||
}
|
}
|
||||||
|
|
@ -277,6 +237,14 @@ module clixon-config {
|
||||||
"Set if all configuration changes are committed automatically
|
"Set if all configuration changes are committed automatically
|
||||||
on every edit change. Explicit commit commands unnecessary";
|
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 {
|
leaf CLICON_XMLDB_DIR {
|
||||||
type string;
|
type string;
|
||||||
mandatory true;
|
mandatory true;
|
||||||
|
|
@ -332,22 +300,5 @@ module clixon-config {
|
||||||
type startup_mode;
|
type startup_mode;
|
||||||
description "Which method to boot/start clicon backend";
|
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";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
353
yang/clixon-config@2018-04-30.yang
Normal file
353
yang/clixon-config@2018-04-30.yang
Normal file
|
|
@ -0,0 +1,353 @@
|
||||||
|
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";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue