test restconf bugfix, added xml_nsctx_cbuf
This commit is contained in:
parent
41e23865a1
commit
7f49c13eba
5 changed files with 48 additions and 20 deletions
|
|
@ -59,6 +59,7 @@ int xml_nsctx_add(cvec *nsc, char *prefix, char *ns);
|
||||||
int xml_nsctx_node(cxobj *x, cvec **ncp);
|
int xml_nsctx_node(cxobj *x, cvec **ncp);
|
||||||
int xml_nsctx_yang(yang_stmt *yn, cvec **ncp);
|
int xml_nsctx_yang(yang_stmt *yn, cvec **ncp);
|
||||||
int xml_nsctx_yangspec(yang_stmt *yspec, cvec **ncp);
|
int xml_nsctx_yangspec(yang_stmt *yspec, cvec **ncp);
|
||||||
|
int xml_nsctx_cbuf(cbuf *cb, cvec *nsc);
|
||||||
|
|
||||||
int xml2ns(cxobj *x, char *localname, char **ns);
|
int xml2ns(cxobj *x, char *localname, char **ns);
|
||||||
int xml2ns_recurse(cxobj *x);
|
int xml2ns_recurse(cxobj *x);
|
||||||
|
|
|
||||||
|
|
@ -234,8 +234,10 @@ clixon_proc_background(char **argv,
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (child == 0) { /* Child */
|
if (child == 0) { /* Child */
|
||||||
|
#ifdef HAVE_SETNS
|
||||||
char nsfile[PATH_MAX];
|
char nsfile[PATH_MAX];
|
||||||
int nsfd;
|
int nsfd;
|
||||||
|
#endif
|
||||||
|
|
||||||
clicon_debug(1, "%s child", __FUNCTION__);
|
clicon_debug(1, "%s child", __FUNCTION__);
|
||||||
clicon_signal_unblock(0);
|
clicon_signal_unblock(0);
|
||||||
|
|
|
||||||
|
|
@ -327,8 +327,6 @@ clicon_rpc_get_config(clicon_handle h,
|
||||||
cxobj *xret = NULL;
|
cxobj *xret = NULL;
|
||||||
cxobj *xerr = NULL;
|
cxobj *xerr = NULL;
|
||||||
cxobj *xd;
|
cxobj *xd;
|
||||||
cg_var *cv = NULL;
|
|
||||||
char *prefix;
|
|
||||||
uint32_t session_id;
|
uint32_t session_id;
|
||||||
int ret;
|
int ret;
|
||||||
yang_stmt *yspec;
|
yang_stmt *yspec;
|
||||||
|
|
@ -349,12 +347,8 @@ clicon_rpc_get_config(clicon_handle h,
|
||||||
cprintf(cb, "<%s:filter %s:type=\"xpath\" %s:select=\"%s\"",
|
cprintf(cb, "<%s:filter %s:type=\"xpath\" %s:select=\"%s\"",
|
||||||
NETCONF_BASE_PREFIX, NETCONF_BASE_PREFIX, NETCONF_BASE_PREFIX,
|
NETCONF_BASE_PREFIX, NETCONF_BASE_PREFIX, NETCONF_BASE_PREFIX,
|
||||||
xpath);
|
xpath);
|
||||||
while ((cv = cvec_each(nsc, cv)) != NULL){
|
if (xml_nsctx_cbuf(cb, nsc) < 0)
|
||||||
cprintf(cb, " xmlns");
|
goto done;
|
||||||
if ((prefix = cv_name_get(cv)))
|
|
||||||
cprintf(cb, ":%s", prefix);
|
|
||||||
cprintf(cb, "=\"%s\"", cv_string_get(cv));
|
|
||||||
}
|
|
||||||
cprintf(cb, "/>");
|
cprintf(cb, "/>");
|
||||||
}
|
}
|
||||||
cprintf(cb, "</get-config></rpc>");
|
cprintf(cb, "</get-config></rpc>");
|
||||||
|
|
@ -689,8 +683,6 @@ clicon_rpc_get(clicon_handle h,
|
||||||
cxobj *xerr = NULL;
|
cxobj *xerr = NULL;
|
||||||
cxobj *xd;
|
cxobj *xd;
|
||||||
char *username;
|
char *username;
|
||||||
cg_var *cv = NULL;
|
|
||||||
char *prefix;
|
|
||||||
uint32_t session_id;
|
uint32_t session_id;
|
||||||
int ret;
|
int ret;
|
||||||
yang_stmt *yspec;
|
yang_stmt *yspec;
|
||||||
|
|
@ -716,13 +708,8 @@ clicon_rpc_get(clicon_handle h,
|
||||||
cprintf(cb, "<%s:filter %s:type=\"xpath\" %s:select=\"%s\"",
|
cprintf(cb, "<%s:filter %s:type=\"xpath\" %s:select=\"%s\"",
|
||||||
NETCONF_BASE_PREFIX, NETCONF_BASE_PREFIX, NETCONF_BASE_PREFIX,
|
NETCONF_BASE_PREFIX, NETCONF_BASE_PREFIX, NETCONF_BASE_PREFIX,
|
||||||
xpath);
|
xpath);
|
||||||
|
if (xml_nsctx_cbuf(cb, nsc) < 0)
|
||||||
while ((cv = cvec_each(nsc, cv)) != NULL){
|
goto done;
|
||||||
cprintf(cb, " xmlns");
|
|
||||||
if ((prefix = cv_name_get(cv)))
|
|
||||||
cprintf(cb, ":%s", prefix);
|
|
||||||
cprintf(cb, "=\"%s\"", cv_string_get(cv));
|
|
||||||
}
|
|
||||||
cprintf(cb, "/>");
|
cprintf(cb, "/>");
|
||||||
}
|
}
|
||||||
cprintf(cb, "</get></rpc>");
|
cprintf(cb, "</get></rpc>");
|
||||||
|
|
|
||||||
|
|
@ -440,6 +440,33 @@ xml_nsctx_yangspec(yang_stmt *yspec,
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! Print a namespace context to a cbuf using xmlns notation
|
||||||
|
* @param[in] *cb CLIgen buf written to
|
||||||
|
* @param[in] *nsc Namespace context
|
||||||
|
* @retval 0 OK
|
||||||
|
* @code
|
||||||
|
* cbuf *cb = cbuf_new();
|
||||||
|
* cprintf(cb, "<foo ");
|
||||||
|
* if (xml_nsctx_cbuf(cb, nsc) < 0)
|
||||||
|
* err;
|
||||||
|
* @endcode
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
xml_nsctx_cbuf(cbuf *cb,
|
||||||
|
cvec *nsc)
|
||||||
|
{
|
||||||
|
cg_var *cv = NULL;
|
||||||
|
char *prefix;
|
||||||
|
|
||||||
|
while ((cv = cvec_each(nsc, cv)) != NULL){
|
||||||
|
cprintf(cb, " xmlns");
|
||||||
|
if ((prefix = cv_name_get(cv)))
|
||||||
|
cprintf(cb, ":%s", prefix);
|
||||||
|
cprintf(cb, "=\"%s\"", cv_string_get(cv));
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*! Given an xml tree return URI namespace recursively : default or localname given
|
/*! Given an xml tree return URI namespace recursively : default or localname given
|
||||||
*
|
*
|
||||||
* Given an XML tree and a prefix (or NULL) return URI namespace.
|
* Given an XML tree and a prefix (or NULL) return URI namespace.
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,20 @@ APPNAME=example
|
||||||
cfg=$dir/conf.xml
|
cfg=$dir/conf.xml
|
||||||
|
|
||||||
# clixon-example and clixon-restconf is used in the test, need local copy
|
# clixon-example and clixon-restconf is used in the test, need local copy
|
||||||
cp ${TOP_SRCDIR}/example/main/clixon-example@2020-12-01.yang $dir/
|
# This is a kludge: look in src otherwise assume it is installed in /usr/local/share
|
||||||
cp ${TOP_SRCDIR}/yang/clixon/clixon-restconf@2020-10-30.yang $dir/
|
# Note that revisions may change and may need to be updated
|
||||||
|
y=clixon-example@2020-12-01.yang
|
||||||
|
if [ -d ${TOP_SRCDIR}/example/main/$y ]; then
|
||||||
|
cp ${TOP_SRCDIR}/example/main/$y $dir/
|
||||||
|
else
|
||||||
|
cp /usr/local/share/clixon/$y $dir/
|
||||||
|
fi
|
||||||
|
y=clixon-restconf@2020-10-30.yang
|
||||||
|
if [ -d ${TOP_SRCDIR}/yang/clixon ]; then
|
||||||
|
cp ${TOP_SRCDIR}/yang/clixon/$y $dir/
|
||||||
|
else
|
||||||
|
cp /usr/local/share/clixon/$y $dir/
|
||||||
|
fi
|
||||||
cat <<EOF > $cfg
|
cat <<EOF > $cfg
|
||||||
<clixon-config xmlns="http://clicon.org/config">
|
<clixon-config xmlns="http://clicon.org/config">
|
||||||
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
|
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue