Fixed errors in previous restconf commit

This commit is contained in:
Olof hagsand 2025-02-18 16:34:28 +01:00
parent a7cc1c6362
commit 9086264b89
5 changed files with 80 additions and 40 deletions

View file

@ -681,15 +681,12 @@ restconf_clixon_backend(clixon_handle h,
* But not if one does uses clixon-restdonf in which case the namespace is * But not if one does uses clixon-restdonf in which case the namespace is
* the local (top-level). * the local (top-level).
*/ */
if ((nsc = xml_nsctx_init(NULL, if ((nsc = xml_nsctx_init(NULL, CLIXON_RESTCONF_NS)) == NULL)
CLIXON_RESTCONF_NS
)) == NULL)
goto done; goto done;
if ((pw = getpwuid(getuid())) == NULL){ if ((pw = getpwuid(getuid())) == NULL){
clixon_err(OE_UNIX, errno, "getpwuid"); clixon_err(OE_UNIX, errno, "getpwuid");
goto done; goto done;
} }
/* XXX xconfig leaked */
if (clicon_rpc_get_config(h, pw->pw_name, "running", "/restconf", nsc, NULL, &xconfig) < 0) if (clicon_rpc_get_config(h, pw->pw_name, "running", "/restconf", nsc, NULL, &xconfig) < 0)
goto done; goto done;
if ((xerr = xpath_first(xconfig, NULL, "/rpc-error")) != NULL){ if ((xerr = xpath_first(xconfig, NULL, "/rpc-error")) != NULL){

View file

@ -75,7 +75,7 @@ DATASTORE_TOP="config"
CLIXON_AUTOCLI_REV="2024-08-01" CLIXON_AUTOCLI_REV="2024-08-01"
CLIXON_LIB_REV="2024-11-01" CLIXON_LIB_REV="2024-11-01"
CLIXON_CONFIG_REV="2024-11-01" CLIXON_CONFIG_REV="2024-11-01"
CLIXON_RESTCONF_REV="2022-08-01" CLIXON_RESTCONF_REV="2025-02-01"
CLIXON_EXAMPLE_REV="2022-11-01" CLIXON_EXAMPLE_REV="2022-11-01"
CLIXON_VERSION="@CLIXON_VERSION@" CLIXON_VERSION="@CLIXON_VERSION@"

View file

@ -367,7 +367,7 @@ if [ $pid1 -eq 0 ]; then err "Pid" 0; fi
sleep $DEMSLEEP sleep $DEMSLEEP
new "Get restconf config 1" new "Get restconf config 1"
expectpart "$(curl $CURLOPTS -X GET -H 'Accept: application/yang-data+xml' $RCPROTO://localhost/restconf/data/clixon-restconf:restconf?with-defaults=report-all)" 0 "HTTP/$HVER 200" "<restconf xmlns=\"http://clicon.org/restconf\"><enable>true</enable><auth-type>none</auth-type><debug>$RESTCONFDBG</debug><log-destination>$LOGDST</log-destination><enable-core-dump>false</enable-core-dump><pretty>false</pretty><socket><namespace>default</namespace><address>0.0.0.0</address><port>80</port><ssl>false</ssl></socket></restconf>" expectpart "$(curl $CURLOPTS -X GET -H 'Accept: application/yang-data+xml' $RCPROTO://localhost/restconf/data/clixon-restconf:restconf?with-defaults=report-all)" 0 "HTTP/$HVER 200" "<restconf xmlns=\"http://clicon.org/restconf\"><enable>true</enable><auth-type>none</auth-type><debug>$RESTCONFDBG</debug><log-destination>$LOGDST</log-destination><enable-core-dump>false</enable-core-dump><pretty>false</pretty><timeout>0</timeout><socket><namespace>default</namespace><address>0.0.0.0</address><port>80</port><ssl>false</ssl></socket></restconf>"
# remove it # remove it
new "Delete server" new "Delete server"
@ -464,7 +464,7 @@ if [ $pid1 -eq 0 ]; then err "Pid" 0; fi
sleep $DEMSLEEP sleep $DEMSLEEP
new "Get restconf config" new "Get restconf config"
expectpart "$(curl $CURLOPTS -X GET -H 'Accept: application/yang-data+xml' $RCPROTO://localhost/restconf/data/clixon-restconf:restconf?with-defaults=report-all)" 0 "HTTP/$HVER 200" "<restconf xmlns=\"http://clicon.org/restconf\"><enable>true</enable><auth-type>none</auth-type><debug>$RESTCONFDBG</debug><log-destination>$LOGDST</log-destination><enable-core-dump>false</enable-core-dump><pretty>false</pretty><socket><namespace>default</namespace><address>0.0.0.0</address><port>80</port><ssl>false</ssl></socket><socket><namespace>default</namespace><address>$INVALIDADDR</address><port>8080</port><ssl>false</ssl></socket></restconf>" expectpart "$(curl $CURLOPTS -X GET -H 'Accept: application/yang-data+xml' $RCPROTO://localhost/restconf/data/clixon-restconf:restconf?with-defaults=report-all)" 0 "HTTP/$HVER 200" "<restconf xmlns=\"http://clicon.org/restconf\"><enable>true</enable><auth-type>none</auth-type><debug>$RESTCONFDBG</debug><log-destination>$LOGDST</log-destination><enable-core-dump>false</enable-core-dump><pretty>false</pretty><timeout>0</timeout><socket><namespace>default</namespace><address>0.0.0.0</address><port>80</port><ssl>false</ssl></socket><socket><namespace>default</namespace><address>$INVALIDADDR</address><port>8080</port><ssl>false</ssl></socket></restconf>"
if [ $BE -ne 0 ]; then if [ $BE -ne 0 ]; then
new "Kill backend" new "Kill backend"

View file

@ -232,9 +232,6 @@ module clixon-restconf {
On platforms where namespaces are not suppported, 'default' On platforms where namespaces are not suppported, 'default'
Default value can be changed by RESTCONF_NETNS_DEFAULT"; Default value can be changed by RESTCONF_NETNS_DEFAULT";
} }
leaf description{
type string;
}
leaf address { leaf address {
type inet:ip-address; type inet:ip-address;
description "IP address to bind to"; description "IP address to bind to";
@ -243,6 +240,9 @@ module clixon-restconf {
type inet:port-number; type inet:port-number;
description "TCP port to bind to"; description "TCP port to bind to";
} }
leaf description{
type string;
}
leaf ssl { leaf ssl {
type boolean; type boolean;
default true; default true;

View file

@ -25,39 +25,18 @@ module clixon-restconf {
3. Related to (2), options that should not be settable in a datastore should be 3. Related to (2), options that should not be settable in a datastore should be
in clixon-config in clixon-config
***** BEGIN LICENSE BLOCK ***** Some of this spec if in-lined from ietf-restconf-server@2022-05-24.yang
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 *****";
revision 2025-02-01 { revision 2025-02-01 {
description description
"Added timeout parameter "Added timeout parameter
Released in Clixon 7.4"; Released in Clixon 7.4";
} }
revision 2022-08-01 {
description
"Added socket/call-home container
Released in Clixon 5.9";
}
revision 2022-03-21 { revision 2022-03-21 {
description description
"Added feature: "Added feature:
@ -85,7 +64,6 @@ module clixon-restconf {
description description
"Initial release"; "Initial release";
} }
feature fcgi { feature fcgi {
description description
"This feature indicates that the restconf server supports the fast-cgi reverse "This feature indicates that the restconf server supports the fast-cgi reverse
@ -113,7 +91,6 @@ module clixon-restconf {
6. Authentication as restconf 6. Authentication as restconf
7. HTTP/1+2, TLS as restconf"; 7. HTTP/1+2, TLS as restconf";
} }
typedef http-auth-type { typedef http-auth-type {
type enumeration { type enumeration {
enum none { enum none {
@ -277,11 +254,77 @@ module clixon-restconf {
type inet:port-number; type inet:port-number;
description "TCP port to bind to"; description "TCP port to bind to";
} }
leaf description{
type string;
}
leaf ssl { leaf ssl {
type boolean; type boolean;
default true; default true;
description "Enable for HTTPS otherwise HTTP protocol"; 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 { container restconf {