Netconf startup configuration support. Set CLICON_USE_STARTUP_CONFIG to 1 to

enable. Eg, if backend_main is started with -CIr startup will be copied to
  running.
 Added .. as valid step in xpath
This commit is contained in:
Olof hagsand 2017-02-10 11:54:34 +01:00
parent 30a479de68
commit 4461cc9598
20 changed files with 116 additions and 159 deletions

View file

@ -120,9 +120,7 @@ netconf_create_hello(cbuf *xf, /* msg buffer */
cprintf(xf, "<capability>urn:ietf:params:xml:ns:netconf:capability:validate:1.0</capability>\n");
cprintf(xf, "<capability>urn:ietf:params:netconf:capability:xpath:1.0</capability>\n");
cprintf(xf, "<capability>urn:ietf:params:netconf:capability:notification:1.0</capability>\n");
// cprintf(xf, "<capability>urn:rnr:rnrapi:1:0</capability>");
cprintf(xf, "<capability>urn:ietf:params:netconf:capability:startup:1.0</capability>\n");
cprintf(xf, "</capabilities>");
cprintf(xf, "<session-id>%lu</session-id>", 42+session_id);
cprintf(xf, "</hello>");

View file

@ -204,6 +204,9 @@ netconf_get_target(clicon_handle h,
else
if (xpath_first(x, "running") != NULL)
target = "running";
else
if (xpath_first(x, "startup") != NULL)
target = "startup";
}
return target;

View file

@ -247,11 +247,11 @@ netconf_get_config(clicon_handle h,
cbuf *cb_err,
cxobj *xorig)
{
cxobj *xfilter; /* filter */
int retval = -1;
char *source;
cxobj *xfilter; /* filter */
int retval = -1;
char *source;
enum filter_option foption = FILTER_SUBTREE;
char *ftype = NULL;
char *ftype = NULL;
if ((source = netconf_get_target(h, xn, "source")) == NULL){
netconf_create_rpc_error(cb_err, xorig,
@ -568,7 +568,7 @@ netconf_delete_config(clicon_handle h,
"<bad-element>target</bad-element>");
goto done;
}
if (strcmp(target, "candidate")){
if (strcmp(target, "running") == 0){
netconf_create_rpc_error(cb_err, xorig,
"bad-element",
"protocol",
@ -577,7 +577,7 @@ netconf_delete_config(clicon_handle h,
"<bad-element>target</bad-element>");
goto done;
}
if (clicon_rpc_change(h, "candidate",
if (clicon_rpc_change(h, target,
OP_REMOVE,
"/", "") < 0){
netconf_create_rpc_error(cb_err, xorig,
@ -745,8 +745,7 @@ netconf_commit(clicon_handle h,
{
int retval = -1;
if (clicon_rpc_commit(h, "candidate", "running",
0, 0) < 0){
if (clicon_rpc_commit(h, "candidate", "running") < 0){
netconf_create_rpc_error(cb_err, xorig,
"operation-failed",
"protocol", "error",