module clixon-config { prefix cc; organization "Clicon / Clixon"; contact "Olof Hagsand "; 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-09-30 { description "Aligned to Clixon 3.8.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"; } } } 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 "; } enum VARS{ description "Keywords on non-key variables: a y "; } enum ALL{ description "Keywords on all variables: a x 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: [@]"; } leaf CLICON_YANG_MODULE_REVISION { type string; description "Option used to construct initial yang file: [@]"; } 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 k ' 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"; } leaf CLICON_MODULE_LIBRARY_RFC7895 { type boolean; default false; description "Enable RFC 7895 YANG Module library support as state data. Ifenabled, module info will appear when doing netconf get or restconf GET"; } leaf CLICON_STREAM_DISCOVERY_RFC5277 { type boolean; default false; description "Enable event stream discovery as described in RFC 5277 sections 3.2. If enabled, available streams will appear when doing netconf get or restconf GET"; } leaf CLICON_STREAM_DISCOVERY_RFC8040 { type boolean; default false; description "Enable event stream discovery as described in RFC 5277 sections 3.2. If enabled, available streams will appear when doing netconf get or restconf GET"; } } }