Removed old yangs, updated ietf-list-pagination.yang
This commit is contained in:
parent
74c8244c66
commit
f17da6ff83
5 changed files with 4 additions and 2295 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -1,523 +0,0 @@
|
||||||
module clixon-lib {
|
|
||||||
yang-version 1.1;
|
|
||||||
namespace "http://clicon.org/lib";
|
|
||||||
prefix cl;
|
|
||||||
|
|
||||||
import ietf-yang-types {
|
|
||||||
prefix yang;
|
|
||||||
}
|
|
||||||
import ietf-netconf-monitoring {
|
|
||||||
prefix ncm;
|
|
||||||
}
|
|
||||||
import ietf-yang-metadata {
|
|
||||||
prefix "md";
|
|
||||||
}
|
|
||||||
organization
|
|
||||||
"Clicon / Clixon";
|
|
||||||
|
|
||||||
contact
|
|
||||||
"Olof Hagsand <olof@hagsand.se>";
|
|
||||||
|
|
||||||
description
|
|
||||||
"***** BEGIN LICENSE BLOCK *****
|
|
||||||
Copyright (C) 2009-2019 Olof Hagsand
|
|
||||||
Copyright (C) 2020-2022 Olof Hagsand and Rubicon Communications, LLC(Netgate)
|
|
||||||
|
|
||||||
This file is part of CLIXON
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the \"License\");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an \"AS IS\" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
Alternatively, the contents of this file may be used under the terms of
|
|
||||||
the GNU General Public License Version 3 or later (the \"GPL\"),
|
|
||||||
in which case the provisions of the GPL are applicable instead
|
|
||||||
of those above. If you wish to allow use of your version of this file only
|
|
||||||
under the terms of the GPL, and not to allow others to
|
|
||||||
use your version of this file under the terms of Apache License version 2,
|
|
||||||
indicate your decision by deleting the provisions above and replace them with
|
|
||||||
the notice and other provisions required by the GPL. If you do not delete
|
|
||||||
the provisions above, a recipient may use your version of this file under
|
|
||||||
the terms of any one of the Apache License version 2 or the GPL.
|
|
||||||
|
|
||||||
***** END LICENSE BLOCK *****
|
|
||||||
|
|
||||||
Clixon Netconf extensions for communication between clients and backend.
|
|
||||||
This scheme adds:
|
|
||||||
- Added values of RFC6022 transport identityref
|
|
||||||
- RPCs for debug, stats and process-control
|
|
||||||
- Informal description of attributes
|
|
||||||
|
|
||||||
Clixon also extends NETCONF for internal use with some internal attributes. These
|
|
||||||
are not visible for external usage bit belongs to the namespace of this YANG.
|
|
||||||
The internal attributes are:
|
|
||||||
- content (also RESTCONF)
|
|
||||||
- depth (also RESTCONF)
|
|
||||||
- username
|
|
||||||
- autocommit
|
|
||||||
- copystartup
|
|
||||||
- transport (see RFC6022)
|
|
||||||
- source-host (see RFC6022)
|
|
||||||
- objectcreate
|
|
||||||
- objectexisted
|
|
||||||
- link # For split multiple XML files
|
|
||||||
";
|
|
||||||
revision 2024-04-01 {
|
|
||||||
description
|
|
||||||
"Added: debug bits type
|
|
||||||
Added: xmldb-split extension
|
|
||||||
Added: Default format
|
|
||||||
Released in Clixon 7.1";
|
|
||||||
}
|
|
||||||
revision 2024-01-01 {
|
|
||||||
description
|
|
||||||
"Removed container creators from 6.5
|
|
||||||
Released in 7.0";
|
|
||||||
}
|
|
||||||
revision 2023-11-01 {
|
|
||||||
description
|
|
||||||
"Added ignore-compare extension
|
|
||||||
Added creator meta configuration
|
|
||||||
Removed obsolete extension autocli-op
|
|
||||||
Released in 6.5.0";
|
|
||||||
}
|
|
||||||
revision 2023-05-01 {
|
|
||||||
description
|
|
||||||
"Restructured and extended stats rpc to schema mountpoints
|
|
||||||
Moved datastore-format typedef from clixon-config
|
|
||||||
";
|
|
||||||
}
|
|
||||||
revision 2023-03-01 {
|
|
||||||
description
|
|
||||||
"Added creator meta-object";
|
|
||||||
}
|
|
||||||
revision 2022-12-01 {
|
|
||||||
description
|
|
||||||
"Added values of RFC6022 transport identityref
|
|
||||||
Added description of internal netconf attributes";
|
|
||||||
}
|
|
||||||
revision 2021-12-05 {
|
|
||||||
description
|
|
||||||
"Obsoleted: extension autocli-op";
|
|
||||||
}
|
|
||||||
revision 2021-11-11 {
|
|
||||||
description
|
|
||||||
"Changed: RPC stats extended with YANG stats";
|
|
||||||
}
|
|
||||||
revision 2021-03-08 {
|
|
||||||
description
|
|
||||||
"Changed: RPC process-control output to choice dependent on operation";
|
|
||||||
}
|
|
||||||
revision 2020-12-30 {
|
|
||||||
description
|
|
||||||
"Changed: RPC process-control output parameter status to pid";
|
|
||||||
}
|
|
||||||
revision 2020-12-08 {
|
|
||||||
description
|
|
||||||
"Added: autocli-op extension.
|
|
||||||
rpc process-control for process/daemon management
|
|
||||||
Released in clixon 4.9";
|
|
||||||
}
|
|
||||||
revision 2020-04-23 {
|
|
||||||
description
|
|
||||||
"Added: stats RPC for clixon XML and memory statistics.
|
|
||||||
Added: restart-plugin RPC for restarting individual plugins without restarting backend.";
|
|
||||||
}
|
|
||||||
revision 2019-08-13 {
|
|
||||||
description
|
|
||||||
"No changes (reverted change)";
|
|
||||||
}
|
|
||||||
revision 2019-06-05 {
|
|
||||||
description
|
|
||||||
"ping rpc added for liveness";
|
|
||||||
}
|
|
||||||
revision 2019-01-02 {
|
|
||||||
description
|
|
||||||
"Released in Clixon 3.9";
|
|
||||||
}
|
|
||||||
typedef service-operation {
|
|
||||||
type enumeration {
|
|
||||||
enum start {
|
|
||||||
description
|
|
||||||
"Start if not already running";
|
|
||||||
}
|
|
||||||
enum stop {
|
|
||||||
description
|
|
||||||
"Stop if running";
|
|
||||||
}
|
|
||||||
enum restart {
|
|
||||||
description
|
|
||||||
"Stop if running, then start";
|
|
||||||
}
|
|
||||||
enum status {
|
|
||||||
description
|
|
||||||
"Check status";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
description
|
|
||||||
"Common operations that can be performed on a service";
|
|
||||||
}
|
|
||||||
typedef datastore_format{
|
|
||||||
description
|
|
||||||
"Datastore format (only xml and json implemented in actual data.";
|
|
||||||
type enumeration{
|
|
||||||
enum xml{
|
|
||||||
description
|
|
||||||
"Save and load xmldb as XML
|
|
||||||
More specifically, such a file looks like: <config>...</config> provided
|
|
||||||
DATASTORE_TOP_SYMBOL is 'config'";
|
|
||||||
}
|
|
||||||
enum json{
|
|
||||||
description "Save and load xmldb as JSON";
|
|
||||||
}
|
|
||||||
enum text{
|
|
||||||
description "'Curly' C-like text format";
|
|
||||||
}
|
|
||||||
enum cli{
|
|
||||||
description "CLI format";
|
|
||||||
}
|
|
||||||
enum default{
|
|
||||||
description "Default format";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
typedef clixon_debug_t {
|
|
||||||
description
|
|
||||||
"Debug flags.
|
|
||||||
Flags are seperated into subject areas and detail
|
|
||||||
Can also be given directly as -D <flag> to clixon commands
|
|
||||||
Note there are also constants in the code that need to be in sync with these values";
|
|
||||||
type bits {
|
|
||||||
/* Subjects: */
|
|
||||||
bit default {
|
|
||||||
description "Default logs";
|
|
||||||
position 0;
|
|
||||||
}
|
|
||||||
bit msg {
|
|
||||||
description "In/out messages";
|
|
||||||
position 1;
|
|
||||||
}
|
|
||||||
bit init {
|
|
||||||
description "Initialization";
|
|
||||||
position 2;
|
|
||||||
}
|
|
||||||
bit xml {
|
|
||||||
description "XML processing";
|
|
||||||
position 3;
|
|
||||||
}
|
|
||||||
bit xpath {
|
|
||||||
description "XPath processing";
|
|
||||||
position 4;
|
|
||||||
}
|
|
||||||
bit yang {
|
|
||||||
description "YANG processing";
|
|
||||||
position 5;
|
|
||||||
}
|
|
||||||
bit backend {
|
|
||||||
description "Backend-specific";
|
|
||||||
position 6;
|
|
||||||
}
|
|
||||||
bit cli {
|
|
||||||
description "CLI frontend";
|
|
||||||
position 7;
|
|
||||||
}
|
|
||||||
bit netconf {
|
|
||||||
description "NETCONF frontend";
|
|
||||||
position 8;
|
|
||||||
}
|
|
||||||
bit restconf {
|
|
||||||
description "RESTCONF frontend";
|
|
||||||
position 9;
|
|
||||||
}
|
|
||||||
bit snmp {
|
|
||||||
description "SNMP frontend";
|
|
||||||
position 10;
|
|
||||||
}
|
|
||||||
bit nacm {
|
|
||||||
description "NACM processing";
|
|
||||||
position 11;
|
|
||||||
}
|
|
||||||
bit proc {
|
|
||||||
description "Process handling";
|
|
||||||
position 12;
|
|
||||||
}
|
|
||||||
bit datastore {
|
|
||||||
description "Datastore xmldb management";
|
|
||||||
position 13;
|
|
||||||
}
|
|
||||||
bit event {
|
|
||||||
description "Event processing";
|
|
||||||
position 14;
|
|
||||||
}
|
|
||||||
bit rpc {
|
|
||||||
description "RPC handling";
|
|
||||||
position 15;
|
|
||||||
}
|
|
||||||
bit stream {
|
|
||||||
description "Notification streams";
|
|
||||||
position 16;
|
|
||||||
}
|
|
||||||
bit parse {
|
|
||||||
description "Parser: XML,YANG, etc";
|
|
||||||
position 17;
|
|
||||||
}
|
|
||||||
bit app {
|
|
||||||
description "External applications";
|
|
||||||
position 20;
|
|
||||||
}
|
|
||||||
bit app2 {
|
|
||||||
description "External application";
|
|
||||||
position 21;
|
|
||||||
}
|
|
||||||
bit app3 {
|
|
||||||
description "External application 2";
|
|
||||||
position 22;
|
|
||||||
}
|
|
||||||
/* Detail level: */
|
|
||||||
bit detail {
|
|
||||||
description "Details: traces, parse trees, etc";
|
|
||||||
position 24;
|
|
||||||
}
|
|
||||||
bit detail2 {
|
|
||||||
description "Extra details";
|
|
||||||
position 25;
|
|
||||||
}
|
|
||||||
bit detail3 {
|
|
||||||
description "Probably more detail than you want";
|
|
||||||
position 26;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
identity snmp {
|
|
||||||
description
|
|
||||||
"SNMP";
|
|
||||||
base ncm:transport;
|
|
||||||
}
|
|
||||||
identity netconf {
|
|
||||||
description
|
|
||||||
"Just NETCONF without specific underlying transport,
|
|
||||||
Clixon uses stdio for its netconf client and therefore does not know whether it is
|
|
||||||
invoked in a script, by a NETCONF/SSH subsystem, etc";
|
|
||||||
base ncm:transport;
|
|
||||||
}
|
|
||||||
identity restconf {
|
|
||||||
description
|
|
||||||
"RESTCONF either as HTTP/1 or /2, TLS or not, reverse proxy (eg fcgi/nginx) or native";
|
|
||||||
base ncm:transport;
|
|
||||||
}
|
|
||||||
identity cli {
|
|
||||||
description
|
|
||||||
"A CLI session";
|
|
||||||
base ncm:transport;
|
|
||||||
}
|
|
||||||
extension ignore-compare {
|
|
||||||
description
|
|
||||||
"The object should be ignored when comparing device configs for equality.
|
|
||||||
The object should never be added, modified, or deleted on target.
|
|
||||||
Essentially a read-only object
|
|
||||||
One example is auto-created objects by the controller, such as uid.";
|
|
||||||
}
|
|
||||||
extension xmldb-split {
|
|
||||||
description
|
|
||||||
"When split configuration stores are used, ie CLICON_XMLDB_MULTI is set,
|
|
||||||
This extension marks where in the configuration tree, one file terminates
|
|
||||||
and a new sub-file is written.
|
|
||||||
A designer adds the 'xmldb-split' extension to a YANG node which should be split.
|
|
||||||
For example, a split could be made at mountpoints.
|
|
||||||
See also the 'link 'attribute.
|
|
||||||
";
|
|
||||||
}
|
|
||||||
md:annotation creator {
|
|
||||||
type string;
|
|
||||||
description
|
|
||||||
"This annotation contains the name of a creator of an object.
|
|
||||||
One application is the clixon controller where multiple services can
|
|
||||||
create the same object. When such a service is deleted (or changed) one needs to keep
|
|
||||||
track of which service created what.
|
|
||||||
Limitations: only objects that are actually added or deleted.
|
|
||||||
A sub-object will not be noted";
|
|
||||||
}
|
|
||||||
rpc debug {
|
|
||||||
description
|
|
||||||
"Set debug flags of backend.
|
|
||||||
Note only numerical values";
|
|
||||||
input {
|
|
||||||
leaf level {
|
|
||||||
type uint32;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rpc ping {
|
|
||||||
description "Check aliveness of backend daemon.";
|
|
||||||
}
|
|
||||||
rpc stats { /* Could be moved to state */
|
|
||||||
description "Clixon yang and datastore statistics.";
|
|
||||||
input {
|
|
||||||
leaf modules {
|
|
||||||
description "If enabled include per-module statistics";
|
|
||||||
type boolean;
|
|
||||||
mandatory false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
output {
|
|
||||||
container global{
|
|
||||||
description
|
|
||||||
"Clixon global statistics.
|
|
||||||
These are global counters incremented by new() and decreased by free() calls.
|
|
||||||
This number is higher than the sum of all datastore/module residing objects, since
|
|
||||||
objects may be used for other purposes than datastore/modules";
|
|
||||||
leaf xmlnr{
|
|
||||||
description
|
|
||||||
"Number of existing XML objects: number of residing xml/json objects
|
|
||||||
in the internal 'cxobj' representation.";
|
|
||||||
type uint64;
|
|
||||||
}
|
|
||||||
leaf yangnr{
|
|
||||||
description
|
|
||||||
"Number of resident YANG objects. ";
|
|
||||||
type uint64;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
container datastores{
|
|
||||||
list datastore{
|
|
||||||
description "Per datastore statistics for cxobj";
|
|
||||||
key "name";
|
|
||||||
leaf name{
|
|
||||||
description "Name of datastore (eg running).";
|
|
||||||
type string;
|
|
||||||
}
|
|
||||||
leaf nr{
|
|
||||||
description "Number of XML objects. That is number of residing xml/json objects
|
|
||||||
in the internal 'cxobj' representation.";
|
|
||||||
type uint64;
|
|
||||||
}
|
|
||||||
leaf size{
|
|
||||||
description "Size in bytes of internal datastore cache of datastore tree.";
|
|
||||||
type uint64;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
container module-sets{
|
|
||||||
list module-set{
|
|
||||||
description "Statistics per domain, eg top-level and mount-points";
|
|
||||||
key "name";
|
|
||||||
leaf name{
|
|
||||||
description "Name of YANG domain.";
|
|
||||||
type string;
|
|
||||||
}
|
|
||||||
leaf nr{
|
|
||||||
description
|
|
||||||
"Total number of YANG objects in set";
|
|
||||||
type uint64;
|
|
||||||
}
|
|
||||||
leaf size{
|
|
||||||
description
|
|
||||||
"Total size in bytes of internal YANG object representation for module set";
|
|
||||||
type uint64;
|
|
||||||
}
|
|
||||||
list module{
|
|
||||||
description "Statistics per module (if modules set in input)";
|
|
||||||
key "name";
|
|
||||||
leaf name{
|
|
||||||
description "Name of YANG module.";
|
|
||||||
type string;
|
|
||||||
}
|
|
||||||
leaf nr{
|
|
||||||
description
|
|
||||||
"Number of YANG objects. That is number of residing YANG objects";
|
|
||||||
type uint64;
|
|
||||||
}
|
|
||||||
leaf size{
|
|
||||||
description
|
|
||||||
"Size in bytes of internal YANG object representation.";
|
|
||||||
type uint64;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rpc restart-plugin {
|
|
||||||
description "Restart specific backend plugins.";
|
|
||||||
input {
|
|
||||||
leaf-list plugin {
|
|
||||||
description "Name of plugin to restart";
|
|
||||||
type string;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rpc process-control {
|
|
||||||
description
|
|
||||||
"Control a specific process or daemon: start/stop, etc.
|
|
||||||
This is for direct managing of a process by the backend.
|
|
||||||
Alternatively one can manage a daemon via systemd, containerd, kubernetes, etc.";
|
|
||||||
input {
|
|
||||||
leaf name {
|
|
||||||
description "Name of process";
|
|
||||||
type string;
|
|
||||||
mandatory true;
|
|
||||||
}
|
|
||||||
leaf operation {
|
|
||||||
type service-operation;
|
|
||||||
mandatory true;
|
|
||||||
description
|
|
||||||
"One of the strings 'start', 'stop', 'restart', or 'status'.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
output {
|
|
||||||
choice result {
|
|
||||||
case status {
|
|
||||||
description
|
|
||||||
"Output from status rpc";
|
|
||||||
leaf active {
|
|
||||||
description
|
|
||||||
"True if process is running, false if not.
|
|
||||||
More specifically, there is a process-id and it exists (in Linux: kill(pid,0).
|
|
||||||
Note that this is actual state and status is administrative state,
|
|
||||||
which means that changing the administrative state, eg stopped->running
|
|
||||||
may not immediately switch active to true.";
|
|
||||||
type boolean;
|
|
||||||
}
|
|
||||||
leaf description {
|
|
||||||
type string;
|
|
||||||
description "Description of process. This is a static string";
|
|
||||||
}
|
|
||||||
leaf command {
|
|
||||||
type string;
|
|
||||||
description "Start command with arguments";
|
|
||||||
}
|
|
||||||
leaf status {
|
|
||||||
description
|
|
||||||
"Administrative status (except on external kill where it enters stopped
|
|
||||||
directly from running):
|
|
||||||
stopped: pid=0, No process running
|
|
||||||
running: pid set, Process started and believed to be running
|
|
||||||
exiting: pid set, Process is killed by parent but not waited for";
|
|
||||||
type string;
|
|
||||||
}
|
|
||||||
leaf starttime {
|
|
||||||
description "Time of starting process UTC";
|
|
||||||
type yang:date-and-time;
|
|
||||||
}
|
|
||||||
leaf pid {
|
|
||||||
description "Process-id of main running process (if active)";
|
|
||||||
type uint32;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case other {
|
|
||||||
description
|
|
||||||
"Output from start/stop/restart rpc";
|
|
||||||
leaf ok {
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,327 +0,0 @@
|
||||||
module clixon-restconf {
|
|
||||||
yang-version 1.1;
|
|
||||||
namespace "http://clicon.org/restconf";
|
|
||||||
prefix "clrc";
|
|
||||||
|
|
||||||
import ietf-inet-types {
|
|
||||||
prefix inet;
|
|
||||||
}
|
|
||||||
|
|
||||||
organization
|
|
||||||
"Clixon";
|
|
||||||
|
|
||||||
contact
|
|
||||||
"Olof Hagsand <olof@hagsand.se>";
|
|
||||||
|
|
||||||
description
|
|
||||||
"This YANG module provides a data-model for the Clixon RESTCONF daemon.
|
|
||||||
There is also clixon-config also including some restconf options.
|
|
||||||
The separation is not always logical but there are some reasons for the split:
|
|
||||||
1. Some data (ie 'socket') is structurally complex and cannot be expressed as a
|
|
||||||
simple option
|
|
||||||
2. clixon-restconf is defined as a macro/grouping and can be included in
|
|
||||||
other YANGs. In particular, it can be used inside a datastore, which
|
|
||||||
is not possible for clixon-config.
|
|
||||||
3. Related to (2), options that should not be settable in a datastore should be
|
|
||||||
in clixon-config
|
|
||||||
|
|
||||||
Some of this spec if in-lined from ietf-restconf-server@2022-05-24.yang
|
|
||||||
";
|
|
||||||
revision 2022-08-01 {
|
|
||||||
description
|
|
||||||
"Added socket/call-home container
|
|
||||||
Released in Clixon 5.9";
|
|
||||||
}
|
|
||||||
revision 2022-03-21 {
|
|
||||||
description
|
|
||||||
"Added feature:
|
|
||||||
http-data - Limited static http server
|
|
||||||
Released in Clixon 5.7";
|
|
||||||
}
|
|
||||||
revision 2021-05-20 {
|
|
||||||
description
|
|
||||||
"Added log-destination for restconf
|
|
||||||
Released in Clixon 5.2";
|
|
||||||
}
|
|
||||||
revision 2021-03-15 {
|
|
||||||
description
|
|
||||||
"make authentication-type none a feature
|
|
||||||
Added flag to enable core dumps
|
|
||||||
Released in Clixon 5.1";
|
|
||||||
}
|
|
||||||
revision 2020-12-30 {
|
|
||||||
description
|
|
||||||
"Added: debug field
|
|
||||||
Added 'none' as default value for auth-type
|
|
||||||
Changed http-auth-type enum from 'password' to 'user'";
|
|
||||||
}
|
|
||||||
revision 2020-10-30 {
|
|
||||||
description
|
|
||||||
"Initial release";
|
|
||||||
}
|
|
||||||
feature fcgi {
|
|
||||||
description
|
|
||||||
"This feature indicates that the restconf server supports the fast-cgi reverse
|
|
||||||
proxy solution.
|
|
||||||
That is, a reverse proxy is the HTTP front-end and the restconf daemon listens
|
|
||||||
to a fcgi socket.
|
|
||||||
The alternative is the internal native HTTP solution.";
|
|
||||||
}
|
|
||||||
|
|
||||||
feature allow-auth-none {
|
|
||||||
description
|
|
||||||
"This feature allows the use of authentication-type none.";
|
|
||||||
}
|
|
||||||
|
|
||||||
feature http-data {
|
|
||||||
description
|
|
||||||
"This feature allows for a very limited static http-data function as
|
|
||||||
addition to RESTCONF.
|
|
||||||
It is limited to:
|
|
||||||
1. path: Local static files within WWW_DATA_ROOT
|
|
||||||
2. operation GET, HEAD, OPTIONS
|
|
||||||
3. query parameters not supported
|
|
||||||
4. indata should be NULL (no write operations)
|
|
||||||
5. Limited media: text/html, JavaScript, image, and css
|
|
||||||
6. Authentication as restconf
|
|
||||||
7. HTTP/1+2, TLS as restconf";
|
|
||||||
}
|
|
||||||
typedef http-auth-type {
|
|
||||||
type enumeration {
|
|
||||||
enum none {
|
|
||||||
if-feature "allow-auth-none";
|
|
||||||
description
|
|
||||||
"Incoming message are set to authenticated by default. No ca-auth callback is called,
|
|
||||||
Authenticated user is set to special user 'none'.
|
|
||||||
Typically assumes NACM is not enabled.";
|
|
||||||
}
|
|
||||||
enum client-certificate {
|
|
||||||
description
|
|
||||||
"TLS client certificate validation is made on each incoming message. If it passes
|
|
||||||
the authenticated user is extracted from the SSL_CN parameter
|
|
||||||
The ca-auth callback can be used to revise this behavior.";
|
|
||||||
}
|
|
||||||
enum user {
|
|
||||||
description
|
|
||||||
"User-defined authentication as defined by the ca-auth callback.
|
|
||||||
One example is some form of password authentication, such as basic auth.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
description
|
|
||||||
"Enumeration of HTTP authorization types.";
|
|
||||||
}
|
|
||||||
typedef log-destination {
|
|
||||||
type enumeration {
|
|
||||||
enum syslog {
|
|
||||||
description
|
|
||||||
"Log to syslog with:
|
|
||||||
ident: clixon_restconf and PID
|
|
||||||
facility: LOG_USER";
|
|
||||||
}
|
|
||||||
enum file {
|
|
||||||
description
|
|
||||||
"Log to generated file at /var/log/clixon_restconf.log";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
grouping clixon-restconf{
|
|
||||||
description
|
|
||||||
"HTTP RESTCONF configuration.";
|
|
||||||
leaf enable {
|
|
||||||
type boolean;
|
|
||||||
default "false";
|
|
||||||
description
|
|
||||||
"Enables RESTCONF functionality.
|
|
||||||
Note that starting/stopping of a restconf daemon is different from it being
|
|
||||||
enabled or not.
|
|
||||||
For example, if the restconf daemon is under systemd management, the restconf
|
|
||||||
daemon will only start if enable=true.";
|
|
||||||
}
|
|
||||||
leaf enable-http-data {
|
|
||||||
type boolean;
|
|
||||||
default "false";
|
|
||||||
if-feature "http-data";
|
|
||||||
description
|
|
||||||
"Enables Limited static http-data functionality.
|
|
||||||
enable must be true for this option to be meaningful.";
|
|
||||||
}
|
|
||||||
leaf auth-type {
|
|
||||||
type http-auth-type;
|
|
||||||
description
|
|
||||||
"The authentication type.
|
|
||||||
Note client-certificate applies only if ssl-enable is true and socket has ssl";
|
|
||||||
default user;
|
|
||||||
}
|
|
||||||
leaf debug {
|
|
||||||
description
|
|
||||||
"Set debug level of restconf daemon.
|
|
||||||
0 is no debug, 1 is debugging, more is detailed debug.
|
|
||||||
Debug logs will be directed to log-destination with LOG_DEBUG level (for syslog)";
|
|
||||||
type uint32;
|
|
||||||
default 0;
|
|
||||||
}
|
|
||||||
leaf log-destination {
|
|
||||||
description
|
|
||||||
"Log destination.
|
|
||||||
If debug is not set, only notice, error and warning will be logged";
|
|
||||||
type log-destination;
|
|
||||||
default syslog;
|
|
||||||
}
|
|
||||||
leaf enable-core-dump {
|
|
||||||
description
|
|
||||||
"enable core dumps.
|
|
||||||
this is a no-op on systems that don't support it.";
|
|
||||||
type boolean;
|
|
||||||
default false;
|
|
||||||
}
|
|
||||||
leaf 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
|
|
||||||
This replaces the CLICON_RESTCONF_PRETTY option in clixon-config.yang";
|
|
||||||
}
|
|
||||||
/* From this point only specific options
|
|
||||||
* First fcgi-specific options
|
|
||||||
*/
|
|
||||||
leaf fcgi-socket {
|
|
||||||
if-feature fcgi; /* Set by default by fcgi clixon_restconf daemon */
|
|
||||||
type string;
|
|
||||||
default "/www-data/fastcgi_restconf.sock";
|
|
||||||
description
|
|
||||||
"Path to FastCGI unix socket. Should be specified in webserver
|
|
||||||
Eg in nginx: fastcgi_pass unix:/www-data/clicon_restconf.sock
|
|
||||||
Only if with-restconf=fcgi, NOT native
|
|
||||||
This replaces CLICON_RESTCONF_PATH option in clixon-config.yang";
|
|
||||||
}
|
|
||||||
/* Second, local native options */
|
|
||||||
leaf server-cert-path {
|
|
||||||
type string;
|
|
||||||
description
|
|
||||||
"Path to server certificate file.
|
|
||||||
Note only applies if socket has ssl enabled";
|
|
||||||
}
|
|
||||||
leaf server-key-path {
|
|
||||||
type string;
|
|
||||||
description
|
|
||||||
"Path to server key file
|
|
||||||
Note only applies if socket has ssl enabled";
|
|
||||||
}
|
|
||||||
leaf server-ca-cert-path {
|
|
||||||
type string;
|
|
||||||
description
|
|
||||||
"Path to server CA cert file
|
|
||||||
Note only applies if socket has ssl enabled";
|
|
||||||
}
|
|
||||||
list socket {
|
|
||||||
description
|
|
||||||
"List of server sockets that the restconf daemon listens to.
|
|
||||||
Not fcgi";
|
|
||||||
key "namespace address port";
|
|
||||||
leaf namespace {
|
|
||||||
type string;
|
|
||||||
description
|
|
||||||
"Network namespace.
|
|
||||||
On platforms where namespaces are not suppported, 'default'
|
|
||||||
Default value can be changed by RESTCONF_NETNS_DEFAULT";
|
|
||||||
}
|
|
||||||
leaf address {
|
|
||||||
type inet:ip-address;
|
|
||||||
description "IP address to bind to";
|
|
||||||
}
|
|
||||||
leaf port {
|
|
||||||
type inet:port-number;
|
|
||||||
description "TCP port to bind to";
|
|
||||||
}
|
|
||||||
leaf description{
|
|
||||||
type string;
|
|
||||||
}
|
|
||||||
leaf ssl {
|
|
||||||
type boolean;
|
|
||||||
default true;
|
|
||||||
description "Enable for HTTPS otherwise HTTP protocol";
|
|
||||||
}
|
|
||||||
/* Some of this in-lined from ietf-restconf-server@2022-05-24.yang */
|
|
||||||
container call-home {
|
|
||||||
presence
|
|
||||||
"Identifies that the server has been configured to initiate
|
|
||||||
call home connections.
|
|
||||||
If set, address/port refers to destination.";
|
|
||||||
description
|
|
||||||
"See RFC 8071 NETCONF Call Home and RESTCONF Call Home";
|
|
||||||
container connection-type {
|
|
||||||
description
|
|
||||||
"Indicates the RESTCONF server's preference for how the
|
|
||||||
RESTCONF connection is maintained.";
|
|
||||||
choice connection-type {
|
|
||||||
mandatory true;
|
|
||||||
description
|
|
||||||
"Selects between available connection types.";
|
|
||||||
case persistent-connection {
|
|
||||||
container persistent {
|
|
||||||
presence
|
|
||||||
"Indicates that a persistent connection is to be
|
|
||||||
maintained.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case periodic-connection {
|
|
||||||
container periodic {
|
|
||||||
presence
|
|
||||||
"Indicates periodic connects";
|
|
||||||
leaf period {
|
|
||||||
type uint32; /* XXX: note uit16 in std */
|
|
||||||
units "seconds"; /* XXX: note minutes in draft */
|
|
||||||
default "3600"; /* XXX: same: 60min in draft */
|
|
||||||
description
|
|
||||||
"Duration of time between periodic connections.";
|
|
||||||
}
|
|
||||||
leaf idle-timeout {
|
|
||||||
type uint16;
|
|
||||||
units "seconds";
|
|
||||||
default "120"; // two minutes
|
|
||||||
description
|
|
||||||
"Specifies the maximum number of seconds that
|
|
||||||
the underlying TCP session may remain idle.
|
|
||||||
A TCP session will be dropped if it is idle
|
|
||||||
for an interval longer than this number of
|
|
||||||
seconds. If set to zero, then the server
|
|
||||||
will never drop a session because it is idle.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
container reconnect-strategy {
|
|
||||||
leaf max-attempts {
|
|
||||||
type uint8 {
|
|
||||||
range "1..max";
|
|
||||||
}
|
|
||||||
default "3";
|
|
||||||
description
|
|
||||||
"Specifies the number times the RESTCONF server tries
|
|
||||||
to connect to a specific endpoint before moving on to
|
|
||||||
the next endpoint in the list (round robin).";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
container restconf {
|
|
||||||
description
|
|
||||||
"This presence is strictly not necessary since the enable flag
|
|
||||||
in clixon-restconf is the flag bearing the actual semantics.
|
|
||||||
However, removing the presence leads to default config in all
|
|
||||||
clixon installations, even those which do not use backend-started restconf.
|
|
||||||
One could see this as mostly cosmetically annoying.
|
|
||||||
Alternative would be to make the inclusion of this yang conditional.";
|
|
||||||
presence "Enables RESTCONF";
|
|
||||||
uses clixon-restconf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -54,7 +54,7 @@ module ietf-list-pagination-nc {
|
||||||
(RFC 8174) when, and only when, they appear in all
|
(RFC 8174) when, and only when, they appear in all
|
||||||
capitals, as shown here.";
|
capitals, as shown here.";
|
||||||
|
|
||||||
revision 2024-07-08 {
|
revision 2024-10-21 {
|
||||||
description
|
description
|
||||||
"Initial revision.";
|
"Initial revision.";
|
||||||
reference
|
reference
|
||||||
|
|
@ -9,7 +9,6 @@ module ietf-list-pagination {
|
||||||
reference
|
reference
|
||||||
"RFC 8342: Network Management Datastore Architecture (NMDA)";
|
"RFC 8342: Network Management Datastore Architecture (NMDA)";
|
||||||
}
|
}
|
||||||
|
|
||||||
import ietf-yang-types {
|
import ietf-yang-types {
|
||||||
prefix yang;
|
prefix yang;
|
||||||
reference
|
reference
|
||||||
|
|
@ -21,6 +20,7 @@ module ietf-list-pagination {
|
||||||
reference
|
reference
|
||||||
"RFC 7952: Defining and Using Metadata with YANG";
|
"RFC 7952: Defining and Using Metadata with YANG";
|
||||||
}
|
}
|
||||||
|
|
||||||
import ietf-system-capabilities {
|
import ietf-system-capabilities {
|
||||||
prefix sysc;
|
prefix sysc;
|
||||||
reference
|
reference
|
||||||
|
|
@ -63,14 +63,13 @@ module ietf-list-pagination {
|
||||||
(RFC 8174) when, and only when, they appear in all
|
(RFC 8174) when, and only when, they appear in all
|
||||||
capitals, as shown here.";
|
capitals, as shown here.";
|
||||||
|
|
||||||
revision 2024-07-08 {
|
revision 2024-10-21 {
|
||||||
description
|
description
|
||||||
"Initial revision.";
|
"Initial revision.";
|
||||||
reference
|
reference
|
||||||
"RFC XXXX: List Pagination for YANG-driven Protocols";
|
"RFC XXXX: List Pagination for YANG-driven Protocols";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Annotations
|
// Annotations
|
||||||
|
|
||||||
md:annotation remaining {
|
md:annotation remaining {
|
||||||
|
|
@ -343,6 +342,7 @@ module ietf-list-pagination {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Protocol-accessible nodes
|
// Protocol-accessible nodes
|
||||||
|
|
||||||
augment
|
augment
|
||||||
"/sysc:system-capabilities/sysc:datastore-capabilities"
|
"/sysc:system-capabilities/sysc:datastore-capabilities"
|
||||||
+ "/sysc:per-node-capabilities" {
|
+ "/sysc:per-node-capabilities" {
|
||||||
Loading…
Add table
Add a link
Reference in a new issue