- Changed master to 5.2.0.PRE
- Modified Makefiles for static linkage and coverage - test namespace abstractions
This commit is contained in:
parent
f9f533834b
commit
7ebb538ebf
18 changed files with 112 additions and 109 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
# Clixon Changelog
|
# Clixon Changelog
|
||||||
|
|
||||||
|
* [5.2.0](#520) Expected: June 2021
|
||||||
* [5.1.0](#510) 15 April 2021
|
* [5.1.0](#510) 15 April 2021
|
||||||
* [5.0.0](#500) 27 February 2021
|
* [5.0.0](#500) 27 February 2021
|
||||||
* [5.0.1](#501) 10 March 2021
|
* [5.0.1](#501) 10 March 2021
|
||||||
|
|
@ -28,6 +29,9 @@
|
||||||
* [3.3.2](#332) Aug 27 2017
|
* [3.3.2](#332) Aug 27 2017
|
||||||
* [3.3.1](#331) June 7 2017
|
* [3.3.1](#331) June 7 2017
|
||||||
|
|
||||||
|
## 5.2.0
|
||||||
|
Expected: June 2021
|
||||||
|
|
||||||
## 5.1.0
|
## 5.1.0
|
||||||
15 April 2021
|
15 April 2021
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@ configure: configure.ac
|
||||||
cd $(srcdir) && autoconf
|
cd $(srcdir) && autoconf
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
rm -f *.gcov
|
||||||
for i in $(SUBDIRS) doc example util docker; \
|
for i in $(SUBDIRS) doc example util docker; \
|
||||||
do (cd $$i && $(MAKE) $(MFLAGS) $@); done;
|
do (cd $$i && $(MAKE) $(MFLAGS) $@); done;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,13 +39,11 @@ top_srcdir = @top_srcdir@
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
LINKAGE = @LINKAGE@
|
LINKAGE = @LINKAGE@
|
||||||
ifeq ($(LINKAGE),static)
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
SH_SUFFIX = a
|
ifeq ($(LINKAGE),dynamic)
|
||||||
else
|
CPPFLAGS += -fPIC
|
||||||
CPPFLAGS = @CPPFLAGS@ -fPIC
|
|
||||||
SH_SUFFIX = @SH_SUFFIX@
|
|
||||||
endif
|
endif
|
||||||
|
SH_SUFFIX = @SH_SUFFIX@
|
||||||
INSTALLFLAGS = @INSTALLFLAGS@
|
INSTALLFLAGS = @INSTALLFLAGS@
|
||||||
LDFLAGS = @LDFLAGS@
|
LDFLAGS = @LDFLAGS@
|
||||||
|
|
||||||
|
|
@ -65,7 +63,7 @@ CLIXON_MINOR = @CLIXON_VERSION_MINOR@
|
||||||
|
|
||||||
# Use this clixon lib for linking
|
# Use this clixon lib for linking
|
||||||
ifeq ($(LINKAGE),static)
|
ifeq ($(LINKAGE),static)
|
||||||
CLIXON_LIB = libclixon.a
|
CLIXON_LIB = libclixon$(SH_SUFFIX)
|
||||||
else
|
else
|
||||||
CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR)
|
CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR)
|
||||||
endif
|
endif
|
||||||
|
|
|
||||||
|
|
@ -39,17 +39,15 @@ top_srcdir = @top_srcdir@
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
LINKAGE = @LINKAGE@
|
LINKAGE = @LINKAGE@
|
||||||
ifeq ($(LINKAGE),dynamic)
|
|
||||||
CPPFLAGS = @CPPFLAGS@ -fPIC
|
|
||||||
else
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
ifeq ($(LINKAGE),dynamic)
|
||||||
|
CPPFLAGS += -fPIC
|
||||||
endif
|
endif
|
||||||
SH_SUFFIX = @SH_SUFFIX@
|
SH_SUFFIX = @SH_SUFFIX@
|
||||||
INSTALLFLAGS = @INSTALLFLAGS@
|
INSTALLFLAGS = @INSTALLFLAGS@
|
||||||
ifeq ($(LINKAGE),dynamic)
|
|
||||||
LDFLAGS = @LDFLAGS@
|
LDFLAGS = @LDFLAGS@
|
||||||
else
|
ifeq ($(LINKAGE),static)
|
||||||
LDFLAGS = @LDFLAGS@ -rdynamic -L.
|
LDFLAGS += -rdynamic -L.
|
||||||
endif
|
endif
|
||||||
|
|
||||||
prefix = @prefix@
|
prefix = @prefix@
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,6 @@ APPL = clixon_restconf
|
||||||
# Common source - not accessible from plugin - independent of restconf package (fcgi|native)
|
# Common source - not accessible from plugin - independent of restconf package (fcgi|native)
|
||||||
APPSRC =
|
APPSRC =
|
||||||
APPSRC += restconf_api.c # maybe empty
|
APPSRC += restconf_api.c # maybe empty
|
||||||
APPSRC += restconf_api_$(with_restconf).c
|
|
||||||
APPSRC += restconf_err.c
|
APPSRC += restconf_err.c
|
||||||
APPSRC += restconf_methods.c
|
APPSRC += restconf_methods.c
|
||||||
APPSRC += restconf_methods_post.c
|
APPSRC += restconf_methods_post.c
|
||||||
|
|
@ -114,6 +113,7 @@ APPOBJ = $(APPSRC:.c=.o)
|
||||||
# are not in the lib.
|
# are not in the lib.
|
||||||
LIBSRC = restconf_lib.c
|
LIBSRC = restconf_lib.c
|
||||||
LIBSRC += restconf_handle.c
|
LIBSRC += restconf_handle.c
|
||||||
|
LIBSRC += restconf_api_$(with_restconf).c
|
||||||
|
|
||||||
LIBOBJ = $(LIBSRC:.c=.o)
|
LIBOBJ = $(LIBSRC:.c=.o)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1773,7 +1773,7 @@ main(int argc,
|
||||||
) < 0)
|
) < 0)
|
||||||
goto done;
|
goto done;
|
||||||
clicon_debug_init(dbg, NULL);
|
clicon_debug_init(dbg, NULL);
|
||||||
clicon_log(LOG_NOTICE, "%s openssl: %u Started", __PROGRAM__, getpid());
|
clicon_log(LOG_NOTICE, "%s native %u Started", __PROGRAM__, getpid());
|
||||||
if (set_signal(SIGTERM, restconf_sig_term, NULL) < 0){
|
if (set_signal(SIGTERM, restconf_sig_term, NULL) < 0){
|
||||||
clicon_err(OE_DAEMON, errno, "Setting signal");
|
clicon_err(OE_DAEMON, errno, "Setting signal");
|
||||||
goto done;
|
goto done;
|
||||||
|
|
|
||||||
10
configure
vendored
10
configure
vendored
|
|
@ -2259,9 +2259,9 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
|
||||||
|
|
||||||
|
|
||||||
CLIXON_VERSION_MAJOR="5"
|
CLIXON_VERSION_MAJOR="5"
|
||||||
CLIXON_VERSION_MINOR="1"
|
CLIXON_VERSION_MINOR="2"
|
||||||
CLIXON_VERSION_PATCH="0"
|
CLIXON_VERSION_PATCH="0"
|
||||||
CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}\""
|
CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}.PRE\""
|
||||||
|
|
||||||
# Check CLIgen
|
# Check CLIgen
|
||||||
if test "$prefix" = "NONE"; then
|
if test "$prefix" = "NONE"; then
|
||||||
|
|
@ -4547,7 +4547,13 @@ if test "$prefix" = "NONE"; then
|
||||||
prefix=${ac_default_prefix}
|
prefix=${ac_default_prefix}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "$LINKAGE" = "dynamic" ; then
|
||||||
SH_SUFFIX=".so"
|
SH_SUFFIX=".so"
|
||||||
|
elif test "$LINKAGE" = "static" ; then
|
||||||
|
SH_SUFFIX=".a"
|
||||||
|
else
|
||||||
|
as_fn_error $? "No such linkage: ${LINKAGE}" "$LINENO" 5
|
||||||
|
fi
|
||||||
|
|
||||||
# This is for cligen
|
# This is for cligen
|
||||||
|
|
||||||
|
|
|
||||||
10
configure.ac
10
configure.ac
|
|
@ -49,9 +49,9 @@ AC_INIT(lib/clixon/clixon.h.in)
|
||||||
AC_CONFIG_AUX_DIR(config-aux)
|
AC_CONFIG_AUX_DIR(config-aux)
|
||||||
|
|
||||||
CLIXON_VERSION_MAJOR="5"
|
CLIXON_VERSION_MAJOR="5"
|
||||||
CLIXON_VERSION_MINOR="1"
|
CLIXON_VERSION_MINOR="2"
|
||||||
CLIXON_VERSION_PATCH="0"
|
CLIXON_VERSION_PATCH="0"
|
||||||
CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}\""
|
CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}.PRE\""
|
||||||
|
|
||||||
# Check CLIgen
|
# Check CLIgen
|
||||||
if test "$prefix" = "NONE"; then
|
if test "$prefix" = "NONE"; then
|
||||||
|
|
@ -148,7 +148,13 @@ if test "$prefix" = "NONE"; then
|
||||||
prefix=${ac_default_prefix}
|
prefix=${ac_default_prefix}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "$LINKAGE" = "dynamic" ; then
|
||||||
SH_SUFFIX=".so"
|
SH_SUFFIX=".so"
|
||||||
|
elif test "$LINKAGE" = "static" ; then
|
||||||
|
SH_SUFFIX=".a"
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([No such linkage: ${LINKAGE}])
|
||||||
|
fi
|
||||||
|
|
||||||
# This is for cligen
|
# This is for cligen
|
||||||
AC_ARG_WITH([cligen], AS_HELP_STRING([--with-cligen=dir],[Use CLIGEN installation in this dir]))
|
AC_ARG_WITH([cligen], AS_HELP_STRING([--with-cligen=dir],[Use CLIGEN installation in this dir]))
|
||||||
|
|
|
||||||
|
|
@ -194,3 +194,10 @@ Use MAXPATHLEN (not PATH_MAX) in sys/param.h
|
||||||
|
|
||||||
socat PTY,link=/tmp/clixon-tty,rawer EXEC:"/usr/local/bin/clixon_cli -f /usr/local/etc/example.xml",pty,stderr &
|
socat PTY,link=/tmp/clixon-tty,rawer EXEC:"/usr/local/bin/clixon_cli -f /usr/local/etc/example.xml",pty,stderr &
|
||||||
screen /tmp/clixon-tty
|
screen /tmp/clixon-tty
|
||||||
|
|
||||||
|
## Coverage
|
||||||
|
|
||||||
|
```
|
||||||
|
LDFLAGS=-coverage LINKAGE=static CFLAGS="-O2 -Wall -coverage" ./configure
|
||||||
|
bash <(curl -s https://codecov.io/bash) -t <token>
|
||||||
|
```
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,12 @@ INSTALLFLAGS = @INSTALLFLAGS@
|
||||||
with_restconf = @with_restconf@
|
with_restconf = @with_restconf@
|
||||||
|
|
||||||
INCLUDES = -I$(includedir) @INCLUDES@
|
INCLUDES = -I$(includedir) @INCLUDES@
|
||||||
CPPFLAGS = @CPPFLAGS@ -fPIC
|
LDFLAGS = @LDFLAGS@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
ifeq ($(LINKAGE),dynamic)
|
||||||
|
CPPFLAGS += -fPIC
|
||||||
|
endif
|
||||||
|
LINKAGE = @LINKAGE@
|
||||||
|
|
||||||
BE_PLUGIN = $(APPNAME)_backend.so
|
BE_PLUGIN = $(APPNAME)_backend.so
|
||||||
BE2_PLUGIN = $(APPNAME)_backend_nacm.so
|
BE2_PLUGIN = $(APPNAME)_backend_nacm.so
|
||||||
|
|
@ -87,32 +92,52 @@ YANGSPECS = clixon-example@2020-12-01.yang
|
||||||
BE_SRC = $(APPNAME)_backend.c
|
BE_SRC = $(APPNAME)_backend.c
|
||||||
BE_OBJ = $(BE_SRC:%.c=%.o)
|
BE_OBJ = $(BE_SRC:%.c=%.o)
|
||||||
$(BE_PLUGIN): $(BE_OBJ)
|
$(BE_PLUGIN): $(BE_OBJ)
|
||||||
$(CC) -Wall -shared -o $@ -lc $<
|
ifeq ($(LINKAGE),static)
|
||||||
|
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
|
||||||
|
else
|
||||||
|
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
|
||||||
|
endif
|
||||||
|
|
||||||
# Secondary NACM backend plugin
|
# Secondary NACM backend plugin
|
||||||
BE2_SRC = $(APPNAME)_backend_nacm.c
|
BE2_SRC = $(APPNAME)_backend_nacm.c
|
||||||
BE2_OBJ = $(BE2_SRC:%.c=%.o)
|
BE2_OBJ = $(BE2_SRC:%.c=%.o)
|
||||||
$(BE2_PLUGIN): $(BE2_OBJ)
|
$(BE2_PLUGIN): $(BE2_OBJ)
|
||||||
$(CC) -Wall -shared -o $@ -lc $<
|
ifeq ($(LINKAGE),static)
|
||||||
|
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
|
||||||
|
else
|
||||||
|
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
|
||||||
|
endif
|
||||||
|
|
||||||
# CLI frontend plugin
|
# CLI frontend plugin
|
||||||
CLI_SRC = $(APPNAME)_cli.c
|
CLI_SRC = $(APPNAME)_cli.c
|
||||||
CLI_OBJ = $(CLI_SRC:%.c=%.o)
|
CLI_OBJ = $(CLI_SRC:%.c=%.o)
|
||||||
$(CLI_PLUGIN): $(CLI_OBJ)
|
$(CLI_PLUGIN): $(CLI_OBJ)
|
||||||
$(CC) -Wall -shared -o $@ -lc $^
|
ifeq ($(LINKAGE),static)
|
||||||
|
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -L ../../apps/cli/ -lclixon_cli
|
||||||
|
else
|
||||||
|
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_cli
|
||||||
|
endif
|
||||||
|
|
||||||
# NETCONF frontend plugin
|
# NETCONF frontend plugin
|
||||||
NETCONF_SRC = $(APPNAME)_netconf.c
|
NETCONF_SRC = $(APPNAME)_netconf.c
|
||||||
NETCONF_OBJ = $(NETCONF_SRC:%.c=%.o)
|
NETCONF_OBJ = $(NETCONF_SRC:%.c=%.o)
|
||||||
$(NETCONF_PLUGIN): $(NETCONF_OBJ)
|
$(NETCONF_PLUGIN): $(NETCONF_OBJ)
|
||||||
$(CC) -Wall -shared -o $@ -lc $^
|
ifeq ($(LINKAGE),static)
|
||||||
|
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -L ../../apps/netconf/ -lclixon_netconf
|
||||||
|
else
|
||||||
|
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_netconf
|
||||||
|
endif
|
||||||
|
|
||||||
# See configure.ac
|
# See configure.ac
|
||||||
# RESTCONF frontend plugin
|
# RESTCONF frontend plugin
|
||||||
RESTCONF_SRC = $(APPNAME)_restconf.c
|
RESTCONF_SRC = $(APPNAME)_restconf.c
|
||||||
RESTCONF_OBJ = $(RESTCONF_SRC:%.c=%.o)
|
RESTCONF_OBJ = $(RESTCONF_SRC:%.c=%.o)
|
||||||
$(RESTCONF_PLUGIN): $(RESTCONF_OBJ)
|
$(RESTCONF_PLUGIN): $(RESTCONF_OBJ)
|
||||||
$(CC) -Wall -shared -o $@ -lc $^
|
ifeq ($(LINKAGE),static)
|
||||||
|
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -L ../../apps/restconf/ -lclixon_restconf
|
||||||
|
else
|
||||||
|
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_restconf
|
||||||
|
endif
|
||||||
|
|
||||||
SRC = $(BE_SRC) $(BE2_SRC) $(CLI_SRC) $(NETCONF_SRC)
|
SRC = $(BE_SRC) $(BE2_SRC) $(CLI_SRC) $(NETCONF_SRC)
|
||||||
SRC += $(RESTCONF_SRC)
|
SRC += $(RESTCONF_SRC)
|
||||||
|
|
|
||||||
|
|
@ -53,10 +53,9 @@ CLIXON_MINOR = @CLIXON_VERSION_MINOR@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
LINKAGE = @LINKAGE@
|
LINKAGE = @LINKAGE@
|
||||||
ifeq ($(LINKAGE),static)
|
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
else
|
ifeq ($(LINKAGE),dynamic)
|
||||||
CFLAGS = -fPIC @CFLAGS@
|
CFLAGS += -fPIC
|
||||||
endif
|
endif
|
||||||
SH_SUFFIX = @SH_SUFFIX@
|
SH_SUFFIX = @SH_SUFFIX@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
|
|
|
||||||
|
|
@ -209,7 +209,7 @@ plugin_load_one(clicon_handle h,
|
||||||
dlerror(); /* Clear any existing error */
|
dlerror(); /* Clear any existing error */
|
||||||
if ((handle = dlopen(file, dlflags)) == NULL) {
|
if ((handle = dlopen(file, dlflags)) == NULL) {
|
||||||
error = (char*)dlerror();
|
error = (char*)dlerror();
|
||||||
clicon_err(OE_PLUGIN, errno, "dlopen: %s", error ? error : "Unknown error");
|
clicon_err(OE_PLUGIN, errno, "dlopen(%s): %s", file, error ? error : "Unknown error");
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
/* call plugin_init() if defined, eg CLIXON_PLUGIN_INIT or CLIXON_BACKEND_INIT */
|
/* call plugin_init() if defined, eg CLIXON_PLUGIN_INIT or CLIXON_BACKEND_INIT */
|
||||||
|
|
@ -692,6 +692,24 @@ typedef struct {
|
||||||
/* List of rpc callback entries XXX hang on handle */
|
/* List of rpc callback entries XXX hang on handle */
|
||||||
static rpc_callback_t *rpc_cb_list = NULL;
|
static rpc_callback_t *rpc_cb_list = NULL;
|
||||||
|
|
||||||
|
#if 0 /* Debugging */
|
||||||
|
static int
|
||||||
|
rpc_callback_dump(clicon_handle h,
|
||||||
|
FILE *f)
|
||||||
|
{
|
||||||
|
rpc_callback_t *rc;
|
||||||
|
|
||||||
|
if ((rc = rpc_cb_list) != NULL)
|
||||||
|
do {
|
||||||
|
fprintf(f, "%s %s\n", __FUNCTION__, rc->rc_name);
|
||||||
|
|
||||||
|
rc = NEXTQ(rpc_callback_t *, rc);
|
||||||
|
} while (rc != rpc_cb_list);
|
||||||
|
fprintf(f, "%s--------------\n", __FUNCTION__);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*! Register a RPC callback by appending a new RPC to the list
|
/*! Register a RPC callback by appending a new RPC to the list
|
||||||
*
|
*
|
||||||
* @param[in] h clicon handle
|
* @param[in] h clicon handle
|
||||||
|
|
|
||||||
|
|
@ -398,68 +398,6 @@ clixon_process_argv_get(clicon_handle h,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NYI
|
|
||||||
/*! Make a copy of process-entry struct
|
|
||||||
*
|
|
||||||
* @param[in] pe0 Original process-entry
|
|
||||||
* @param[in] pnew New copy of pe0
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
clixon_process_register_dup(process_entry_t *pe0,
|
|
||||||
process_entry_t **pnew)
|
|
||||||
{
|
|
||||||
int retval = -1;
|
|
||||||
process_entry_t *pe1 = NULL;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (pe0 == NULL){
|
|
||||||
clicon_err(OE_DB, EINVAL, "pe0 is NULL");
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
if (pnew == NULL){
|
|
||||||
clicon_err(OE_DB, EINVAL, "pnew is NULL");
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
if ((pe1 = malloc(sizeof(process_entry_t))) == NULL) {
|
|
||||||
clicon_err(OE_DB, errno, "malloc");
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
memset(pe1, 0, sizeof(*pe1));
|
|
||||||
memcpy(pe1, pe0, sizeof(process_entry_t)); /* Note lots of malloced memory that needs to be handled after this copy*/
|
|
||||||
pe1->pe_exiting = 0;
|
|
||||||
pe1->pe_clone = 0;
|
|
||||||
if ((pe1->pe_name = strdup(pe0->pe_name)) == NULL){
|
|
||||||
clicon_err(OE_DB, errno, "strdup name");
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
if (pe0->pe_description && (pe1->pe_description = strdup(pe0->pe_description)) == NULL){
|
|
||||||
clicon_err(OE_DB, errno, "strdup name");
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
if (pe0->pe_netns && (pe1->pe_netns = strdup(pe0->pe_netns)) == NULL){
|
|
||||||
clicon_err(OE_DB, errno, "strdup netns");
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
if ((pe1->pe_argv = calloc(pe0->pe_argc, sizeof(char *))) == NULL){
|
|
||||||
clicon_err(OE_UNIX, errno, "calloc");
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
for (i=0; i<pe0->pe_argc; i++){
|
|
||||||
if (pe0->pe_argv[i] != NULL &&
|
|
||||||
(pe1->pe_argv[i] = strdup(pe0->pe_argv[i])) == NULL){
|
|
||||||
clicon_err(OE_UNIX, errno, "strdup");
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ADDQ(pe1, _proc_entry_list);
|
|
||||||
*pnew = pe1;
|
|
||||||
retval = 0;
|
|
||||||
done:
|
|
||||||
/* dealloc pe1 on error */
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*! Register an internal process
|
/*! Register an internal process
|
||||||
*
|
*
|
||||||
* @param[in] h Clixon handle
|
* @param[in] h Clixon handle
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ DATASTORE_TOP="config"
|
||||||
# clixon yang revisions occuring in tests
|
# clixon yang revisions occuring in tests
|
||||||
CLIXON_LIB_REV="2021-03-08"
|
CLIXON_LIB_REV="2021-03-08"
|
||||||
CLIXON_CONFIG_REV="2021-03-08"
|
CLIXON_CONFIG_REV="2021-03-08"
|
||||||
CLIXON_RESTCONF_REV="2020-12-30"
|
CLIXON_RESTCONF_REV="2021-03-08"
|
||||||
CLIXON_EXAMPLE_REV="2020-12-01"
|
CLIXON_EXAMPLE_REV="2020-12-01"
|
||||||
|
|
||||||
# Length of TSL RSA key
|
# Length of TSL RSA key
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,9 @@ testname=
|
||||||
# Namespace: netconf base
|
# Namespace: netconf base
|
||||||
BASENS='urn:ietf:params:xml:ns:netconf:base:1.0'
|
BASENS='urn:ietf:params:xml:ns:netconf:base:1.0'
|
||||||
|
|
||||||
|
# Namespace: Clixon config
|
||||||
|
CONFNS='xmlns="http://clicon.org/config"'
|
||||||
|
|
||||||
# Namespace: Clixon lib
|
# Namespace: Clixon lib
|
||||||
LIBNS='xmlns="http://clicon.org/lib"'
|
LIBNS='xmlns="http://clicon.org/lib"'
|
||||||
|
|
||||||
|
|
@ -315,12 +318,12 @@ function stop_backend(){
|
||||||
|
|
||||||
# Wait for restconf to stop sending 502 Bad Gateway
|
# Wait for restconf to stop sending 502 Bad Gateway
|
||||||
function wait_backend(){
|
function wait_backend(){
|
||||||
reply=$(echo '<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101"><ping xmlns="http://clicon.org/lib"/></rpc>]]>]]>' | $clixon_netconf -qef $cfg 2> /dev/null)
|
reply=$(echo "<rpc $DEFAULTNS><ping $LIBNS/></rpc>]]>]]>" | $clixon_netconf -qef $cfg 2> /dev/null)
|
||||||
let i=0;
|
let i=0;
|
||||||
while [[ $reply != "<rpc-reply"* ]]; do
|
while [[ $reply != "<rpc-reply"* ]]; do
|
||||||
# echo "sleep $DEMSLEEP"
|
# echo "sleep $DEMSLEEP"
|
||||||
sleep $DEMSLEEP
|
sleep $DEMSLEEP
|
||||||
reply=$(echo '<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101" xmlns="http://clicon.org/lib"><ping/></rpc>]]>]]>' | clixon_netconf -qef $cfg 2> /dev/null)
|
reply=$(echo "<rpc $ÐEFAULTSNS $LIBNS><ping/></rpc>]]>]]>" | clixon_netconf -qef $cfg 2> /dev/null)
|
||||||
# echo "reply:$reply"
|
# echo "reply:$reply"
|
||||||
let i++;
|
let i++;
|
||||||
# echo "wait_backend $i"
|
# echo "wait_backend $i"
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ else
|
||||||
EXTRACONF=""
|
EXTRACONF=""
|
||||||
fi
|
fi
|
||||||
cat <<EOF > $cfg
|
cat <<EOF > $cfg
|
||||||
<clixon-config xmlns="http://clicon.org/config">
|
<clixon-config $CONFNS>
|
||||||
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
|
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
|
||||||
<CLICON_FEATURE>ietf-netconf:startup</CLICON_FEATURE>
|
<CLICON_FEATURE>ietf-netconf:startup</CLICON_FEATURE>
|
||||||
<CLICON_FEATURE>clixon-restconf:allow-auth-none</CLICON_FEATURE> <!-- Use auth-type=none -->
|
<CLICON_FEATURE>clixon-restconf:allow-auth-none</CLICON_FEATURE> <!-- Use auth-type=none -->
|
||||||
|
|
@ -81,7 +81,7 @@ function rpcstatus()
|
||||||
ret=$($clixon_netconf -qf $cfg<<EOF
|
ret=$($clixon_netconf -qf $cfg<<EOF
|
||||||
$DEFAULTHELLO
|
$DEFAULTHELLO
|
||||||
<rpc $DEFAULTNS>
|
<rpc $DEFAULTNS>
|
||||||
<process-control xmlns="http://clicon.org/lib">
|
<process-control $LIBNS>
|
||||||
<name>restconf</name>
|
<name>restconf</name>
|
||||||
<operation>status</operation>
|
<operation>status</operation>
|
||||||
</process-control>
|
</process-control>
|
||||||
|
|
@ -89,7 +89,7 @@ $DEFAULTHELLO
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
# Check pid
|
# Check pid
|
||||||
expect="<pid xmlns=\"http://clicon.org/lib\">[0-9]*</pid>"
|
expect="<pid $LIBNS>[0-9]*</pid>"
|
||||||
match=$(echo "$ret" | grep --null -Go "$expect")
|
match=$(echo "$ret" | grep --null -Go "$expect")
|
||||||
if [ -z "$match" ]; then
|
if [ -z "$match" ]; then
|
||||||
pid=0
|
pid=0
|
||||||
|
|
@ -120,7 +120,7 @@ function rpcoperation()
|
||||||
|
|
||||||
sleep $DEMSLEEP
|
sleep $DEMSLEEP
|
||||||
new "send rpc $operation"
|
new "send rpc $operation"
|
||||||
expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><process-control xmlns=\"http://clicon.org/lib\"><name>restconf</name><operation>$operation</operation></process-control></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><ok xmlns=\"http://clicon.org/lib\"/></rpc-reply>]]>]]>$"
|
expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><process-control $LIBNS><name>restconf</name><operation>$operation</operation></process-control></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><ok $LIBNS/></rpc-reply>]]>]]>$"
|
||||||
|
|
||||||
sleep $DEMSLEEP
|
sleep $DEMSLEEP
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat <<EOF > $cfg
|
cat <<EOF > $cfg
|
||||||
<clixon-config xmlns="http://clicon.org/config">
|
<clixon-config $CONFNS>
|
||||||
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
|
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
|
||||||
<CLICON_FEATURE>ietf-netconf:startup</CLICON_FEATURE>
|
<CLICON_FEATURE>ietf-netconf:startup</CLICON_FEATURE>
|
||||||
<CLICON_FEATURE>clixon-restconf:allow-auth-none</CLICON_FEATURE> <!-- Use auth-type=none -->
|
<CLICON_FEATURE>clixon-restconf:allow-auth-none</CLICON_FEATURE> <!-- Use auth-type=none -->
|
||||||
|
|
@ -95,7 +95,7 @@ function rpcstatus()
|
||||||
ret=$($clixon_netconf -qf $cfg<<EOF
|
ret=$($clixon_netconf -qf $cfg<<EOF
|
||||||
$DEFAULTHELLO
|
$DEFAULTHELLO
|
||||||
<rpc $DEFAULTNS>
|
<rpc $DEFAULTNS>
|
||||||
<process-control xmlns="http://clicon.org/lib">
|
<process-control $LIBNS>
|
||||||
<name>restconf</name>
|
<name>restconf</name>
|
||||||
<operation>status</operation>
|
<operation>status</operation>
|
||||||
</process-control>
|
</process-control>
|
||||||
|
|
@ -103,7 +103,7 @@ $DEFAULTHELLO
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
# Check pid
|
# Check pid
|
||||||
expect="<pid xmlns=\"http://clicon.org/lib\">[0-9]*</pid>"
|
expect="<pid $LIBNS>[0-9]*</pid>"
|
||||||
match=$(echo "$ret" | grep --null -Go "$expect")
|
match=$(echo "$ret" | grep --null -Go "$expect")
|
||||||
if [ -z "$match" ]; then
|
if [ -z "$match" ]; then
|
||||||
pid=0
|
pid=0
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ module trans{
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat <<EOF > $cfg
|
cat <<EOF > $cfg
|
||||||
<clixon-config xmlns="http://clicon.org/config">
|
<clixon-config $CONFNS>
|
||||||
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
|
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
|
||||||
<CLICON_YANG_DIR>/usr/local/share/clixon</CLICON_YANG_DIR>
|
<CLICON_YANG_DIR>/usr/local/share/clixon</CLICON_YANG_DIR>
|
||||||
<CLICON_YANG_MAIN_FILE>$fyang</CLICON_YANG_MAIN_FILE>
|
<CLICON_YANG_MAIN_FILE>$fyang</CLICON_YANG_MAIN_FILE>
|
||||||
|
|
@ -115,7 +115,7 @@ xml="<table xmlns=\"urn:example:clixon\"><parameter><name>0</name></parameter></
|
||||||
checklog "$nr nacm_end add: $xml" $line
|
checklog "$nr nacm_end add: $xml" $line
|
||||||
|
|
||||||
new "Send restart nacm plugin"
|
new "Send restart nacm plugin"
|
||||||
expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><restart-plugin xmlns=\"http://clicon.org/lib\"><plugin>example_backend_nacm</plugin></restart-plugin></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><ok/></rpc-reply>]]>]]>"
|
expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><restart-plugin $LIBNS><plugin>example_backend_nacm</plugin></restart-plugin></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><ok/></rpc-reply>]]>]]>"
|
||||||
|
|
||||||
# Now analyze log:
|
# Now analyze log:
|
||||||
# all transactions come from nacm plugin only.
|
# all transactions come from nacm plugin only.
|
||||||
|
|
@ -129,7 +129,7 @@ done
|
||||||
|
|
||||||
# Negative test: restart a plugin that does not exist
|
# Negative test: restart a plugin that does not exist
|
||||||
new "Send restart to nonexistatn plugin expect fail"
|
new "Send restart to nonexistatn plugin expect fail"
|
||||||
expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><restart-plugin xmlns=\"http://clicon.org/lib\"><plugin>xxx</plugin></restart-plugin></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><rpc-error><error-type>application</error-type><error-tag>bad-element</error-tag><error-info><bad-element>plugin</bad-element></error-info><error-severity>error</error-severity><error-message>No such plugin</error-message></rpc-error></rpc-reply>]]>]]>$"
|
expecteof "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO<rpc $DEFAULTNS><restart-plugin $LIBNS><plugin>xxx</plugin></restart-plugin></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><rpc-error><error-type>application</error-type><error-tag>bad-element</error-tag><error-info><bad-element>plugin</bad-element></error-info><error-severity>error</error-severity><error-message>No such plugin</error-message></rpc-error></rpc-reply>]]>]]>$"
|
||||||
|
|
||||||
if [ $BE -ne 0 ]; then
|
if [ $BE -ne 0 ]; then
|
||||||
new "Kill backend"
|
new "Kill backend"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue