* Changed typo configure --with-yang-standard-installdir to `configure --with-yang-standard-dir

* Updated command-line usage of cli,netconf,backend apps in sync with clixon-docs user manual
* Documented differences between protocol stubs for external vs internal netconf
This commit is contained in:
Olof hagsand 2021-12-05 12:13:56 +01:00
parent b67fae4d61
commit 478911d0f5
11 changed files with 40 additions and 29 deletions

View file

@ -35,6 +35,12 @@
## 5.5.0 ## 5.5.0
Planned: January, 2022 Planned: January, 2022
### Corrected Bugs
### Minor features
* Changed typo `configure --with-yang-standard-installdir` to `configure --with-yang-standard-dir`
## 5.4.0 ## 5.4.0
30 November, 2021 30 November, 2021

View file

@ -446,12 +446,12 @@ usage(clicon_handle h,
"where options are\n" "where options are\n"
"\t-h\t\tHelp\n" "\t-h\t\tHelp\n"
"\t-D <level>\tDebug level\n" "\t-D <level>\tDebug level\n"
"\t-f <file>\tCLICON config file\n" "\t-f <file>\tClixon config file\n"
"\t-E <dir> \tExtra configuration file directory\n" "\t-E <dir> \tExtra configuration file directory\n"
"\t-l (s|e|o|f<file>) Log on (s)yslog, std(e)rr or std(o)ut (stderr is default) Only valid if -F, if background syslog is on syslog.\n" "\t-l (s|e|o|f<file>) Log on (s)yslog, std(e)rr, std(o)ut or (f)ile. Syslog is default. If foreground, then syslog and stderr is default. Filename is given after -f as follows: -lf<file>\n"
"\t-d <dir>\tSpecify backend plugin directory (default: %s)\n" "\t-d <dir>\tSpecify backend plugin directory (default: %s)\n"
"\t-p <dir>\tYang directory path (see CLICON_YANG_DIR)\n" "\t-p <dir>\tAdd Yang directory path (see CLICON_YANG_DIR)\n"
"\t-b <dir>\tSpecify XMLDB database directory\n" "\t-b <dir>\tSpecify datastore directory\n"
"\t-F\t\tRun in foreground, do not run as daemon\n" "\t-F\t\tRun in foreground, do not run as daemon\n"
"\t-z\t\tKill other config daemon and exit\n" "\t-z\t\tKill other config daemon and exit\n"
"\t-a UNIX|IPv4|IPv6 Internal backend socket family\n" "\t-a UNIX|IPv4|IPv6 Internal backend socket family\n"
@ -459,7 +459,7 @@ usage(clicon_handle h,
"\t-P <file>\tPid filename (default: %s)\n" "\t-P <file>\tPid filename (default: %s)\n"
"\t-1\t\tRun once and then quit (dont wait for events)\n" "\t-1\t\tRun once and then quit (dont wait for events)\n"
"\t-s <mode>\tSpecify backend startup mode: none|startup|running|init)\n" "\t-s <mode>\tSpecify backend startup mode: none|startup|running|init)\n"
"\t-c <file>\tLoad extra xml configuration, but don't commit.\n" "\t-c <file>\tLoad extra XML configuration file, but do not commit.\n"
"\t-q \t\tQuit startup directly after upgrading and print result on stdout\n" "\t-q \t\tQuit startup directly after upgrading and print result on stdout\n"
"\t-U <user>\tRun backend daemon as this user AND drop privileges permanently\n" "\t-U <user>\tRun backend daemon as this user AND drop privileges permanently\n"
"\t-g <group>\tClient membership required to this group (default: %s)\n" "\t-g <group>\tClient membership required to this group (default: %s)\n"
@ -604,7 +604,7 @@ main(int argc,
if (clicon_option_add(h, "CLICON_XMLDB_DIR", optarg) < 0) if (clicon_option_add(h, "CLICON_XMLDB_DIR", optarg) < 0)
goto done; goto done;
break; break;
case 'p' : /* yang dir path */ case 'p' : /* Add yang dir path */
if (clicon_option_add(h, "CLICON_YANG_DIR", optarg) < 0) if (clicon_option_add(h, "CLICON_YANG_DIR", optarg) < 0)
goto done; goto done;
break; break;

View file

@ -329,7 +329,7 @@ usage(clicon_handle h,
"\t-m <mode>\tSpecify plugin syntax mode\n" "\t-m <mode>\tSpecify plugin syntax mode\n"
"\t-q \t\tQuiet mode, dont print greetings or prompt, terminate on ctrl-C\n" "\t-q \t\tQuiet mode, dont print greetings or prompt, terminate on ctrl-C\n"
"\t-p <dir>\tYang directory path (see CLICON_YANG_DIR)\n" "\t-p <dir>\tYang directory path (see CLICON_YANG_DIR)\n"
"\t-G \t\tPrint CLI syntax generated from dbspec (if CLICON_CLI_GENMODEL enabled)\n" "\t-G \t\tPrint auo-cli CLI syntax generated from YANG (if CLICON_CLI_GENMODEL enabled)\n"
"\t-L \t\tDebug print dynamic CLI syntax including completions and expansions\n" "\t-L \t\tDebug print dynamic CLI syntax including completions and expansions\n"
"\t-l <s|e|o|f<file>> \tLog on (s)yslog, std(e)rr, std(o)ut or (f)ile (stderr is default)\n" "\t-l <s|e|o|f<file>> \tLog on (s)yslog, std(e)rr, std(o)ut or (f)ile (stderr is default)\n"
"\t-y <file>\tOverride yang spec file (dont include .yang suffix)\n" "\t-y <file>\tOverride yang spec file (dont include .yang suffix)\n"

View file

@ -71,7 +71,7 @@
#include "netconf_rpc.h" #include "netconf_rpc.h"
/* Command line options to be passed to getopt(3) */ /* Command line options to be passed to getopt(3) */
#define NETCONF_OPTS "hD:f:E:l:qa:u:d:p:y:U:t:eHo:" #define NETCONF_OPTS "hD:f:E:l:qHa:u:d:p:y:U:t:eo:"
#define NETCONF_LOGFILE "/tmp/clixon_netconf.log" #define NETCONF_LOGFILE "/tmp/clixon_netconf.log"
@ -625,16 +625,16 @@ usage(clicon_handle h,
"\t-f <file>\tConfiguration file (mandatory)\n" "\t-f <file>\tConfiguration file (mandatory)\n"
"\t-E <dir> \tExtra configuration file directory\n" "\t-E <dir> \tExtra configuration file directory\n"
"\t-l (e|o|s|f<file>) Log on std(e)rr, std(o)ut, (s)yslog(default), (f)ile\n" "\t-l (e|o|s|f<file>) Log on std(e)rr, std(o)ut, (s)yslog(default), (f)ile\n"
"\t-q\t\tQuiet: dont send hello prompt\n" "\t-q\t\tQuiet mode, do not send hello message\n"
"\t-H \t\tDo not expect hello message from server.\n"
"\t-a UNIX|IPv4|IPv6 Internal backend socket family\n" "\t-a UNIX|IPv4|IPv6 Internal backend socket family\n"
"\t-u <path|addr>\tInternal socket domain path or IP addr (see -a)\n" "\t-u <path|addr>\tInternal socket domain path or IP addr (see -a)\n"
"\t-d <dir>\tSpecify netconf plugin directory dir (default: %s)\n" "\t-d <dir>\tSpecify netconf plugin directory dir (default: %s)\n"
"\t-p <dir>\tYang directory path (see CLICON_YANG_DIR)\n" "\t-p <dir>\tAdd Yang directory path (see CLICON_YANG_DIR)\n"
"\t-y <file>\tLoad yang spec file (override yang main module)\n" "\t-y <file>\tLoad yang spec file (override yang main module)\n"
"\t-U <user>\tOver-ride unix user with a pseudo user for NACM.\n" "\t-U <user>\tOver-ride unix user with a pseudo user for NACM.\n"
"\t-t <sec>\tTimeout in seconds. Quit after this time.\n" "\t-t <sec>\tTimeout in seconds. Quit after this time.\n"
"\t-e \t\tDont ignore errors on packet input.\n" "\t-e \t\tDont ignore errors on packet input.\n"
"\t-H \t\tHello messages are optional.\n"
"\t-o \"<option>=<value>\"\tGive configuration option overriding config file (see clixon-config.yang)\n", "\t-o \"<option>=<value>\"\tGive configuration option overriding config file (see clixon-config.yang)\n",
argv0, argv0,
clicon_netconf_dir(h) clicon_netconf_dir(h)

8
configure vendored
View file

@ -727,7 +727,7 @@ with_configfile
with_libxml2 with_libxml2
with_sigaction with_sigaction
with_yang_installdir with_yang_installdir
with_yang_standard_installdir with_yang_standard_dir
' '
ac_precious_vars='build_alias ac_precious_vars='build_alias
host_alias host_alias
@ -5658,9 +5658,9 @@ $as_echo "Clixon yang files are installed in ${YANG_INSTALLDIR}" >&6; }
# This is NOT installed by Clixon and is not needed for core system # This is NOT installed by Clixon and is not needed for core system
# However, it is required by the main example and some of the tests # However, it is required by the main example and some of the tests
# Check whether --with-yang-standard-installdir was given. # Check whether --with-yang-standard-dir was given.
if test "${with_yang_standard_installdir+set}" = set; then : if test "${with_yang_standard_dir+set}" = set; then :
withval=$with_yang_standard_installdir; YANG_STANDARD_DIR="$withval" withval=$with_yang_standard_dir; YANG_STANDARD_DIR="$withval"
else else
YANG_STANDARD_DIR="${prefix}/share/yang/standard" YANG_STANDARD_DIR="${prefix}/share/yang/standard"

View file

@ -339,7 +339,7 @@ AC_MSG_RESULT(Clixon yang files are installed in ${YANG_INSTALLDIR})
# YANG_STANDARD_DIR is where clixon assumes standard IETF are # YANG_STANDARD_DIR is where clixon assumes standard IETF are
# This is NOT installed by Clixon and is not needed for core system # This is NOT installed by Clixon and is not needed for core system
# However, it is required by the main example and some of the tests # However, it is required by the main example and some of the tests
AC_ARG_WITH(yang-standard-installdir, AC_ARG_WITH(yang-standard-dir,
[AS_HELP_STRING([--with-yang-standard-dir=DIR],[Directory of standard IETF/IEEE YANG specs (default: $prefix/share/yang/standard)])], [AS_HELP_STRING([--with-yang-standard-dir=DIR],[Directory of standard IETF/IEEE YANG specs (default: $prefix/share/yang/standard)])],
[YANG_STANDARD_DIR="$withval"], [YANG_STANDARD_DIR="$withval"],
[YANG_STANDARD_DIR="${prefix}/share/yang/standard"] [YANG_STANDARD_DIR="${prefix}/share/yang/standard"]

View file

@ -1209,7 +1209,7 @@ static clixon_plugin_api api = {
clixon_plugin_init, /* init - must be called clixon_plugin_init */ clixon_plugin_init, /* init - must be called clixon_plugin_init */
example_start, /* start */ example_start, /* start */
example_exit, /* exit */ example_exit, /* exit */
.ca_extension=example_extension, /* yang extensions */ example_extension, /* yang extensions */
.ca_daemon=example_daemon, /* daemon */ .ca_daemon=example_daemon, /* daemon */
.ca_reset=example_reset, /* reset */ .ca_reset=example_reset, /* reset */
.ca_statedata=example_statedata, /* statedata : Note fn is switched if -sS <file> */ .ca_statedata=example_statedata, /* statedata : Note fn is switched if -sS <file> */

View file

@ -323,8 +323,10 @@ msg_dump(struct clicon_msg *msg)
} }
/*! Send a CLICON netconf message using internal IPC message /*! Send a CLICON netconf message using internal IPC message
*
* @param[in] s socket (unix or inet) to communicate with backend * @param[in] s socket (unix or inet) to communicate with backend
* @param[out] msg CLICON msg data reply structure. Free with free() * @param[out] msg CLICON msg data reply structure. Free with free()
* @see clicon_msg_send1 using plain NETCONF
*/ */
int int
clicon_msg_send(int s, clicon_msg_send(int s,
@ -364,6 +366,7 @@ clicon_msg_send(int s,
* @param[out] msg CLICON msg data reply structure. Free with free() * @param[out] msg CLICON msg data reply structure. Free with free()
* @param[out] eof Set if eof encountered * @param[out] eof Set if eof encountered
* Note: caller must ensure that s is closed if eof is set after call. * Note: caller must ensure that s is closed if eof is set after call.
* @see clicon_msg_rcv1 using plain NETCONF
*/ */
int int
clicon_msg_rcv(int s, clicon_msg_rcv(int s,
@ -419,11 +422,13 @@ clicon_msg_rcv(int s,
return retval; return retval;
} }
/*! Receive a message using plain ascii /*! Receive a message using plain NETCONF
*
* @param[in] s socket (unix or inet) to communicate with backend * @param[in] s socket (unix or inet) to communicate with backend
* @param[out] cb1 cligen buf struct containing the incoming message * @param[out] cb1 cligen buf struct containing the incoming message
* @param[out] eof Set if eof encountered * @param[out] eof Set if eof encountered
* @see netconf_input_cb() * @see netconf_input_cb()
* @see clicon_msg_rcv using IPC message struct
*/ */
int int
clicon_msg_rcv1(int s, clicon_msg_rcv1(int s,
@ -480,9 +485,11 @@ clicon_msg_rcv1(int s,
return retval; return retval;
} }
/*! Send a CLICON netconf message plain text /*! Send a CLICON netconf message plain NETCONF
*
* @param[in] s socket (unix or inet) to communicate with backend * @param[in] s socket (unix or inet) to communicate with backend
* @param[out] msg CLICON msg data reply structure. Free with free() * @param[out] msg CLICON msg data reply structure. Free with free()
* @see clicon_msg_send using internal IPC header
*/ */
int int
clicon_msg_send1(int s, clicon_msg_send1(int s,
@ -604,6 +611,7 @@ clicon_rpc_connect_inet(clicon_handle h,
* @param[out] xret Returned data as netconf xml tree. * @param[out] xret Returned data as netconf xml tree.
* @retval 0 OK * @retval 0 OK
* @retval -1 Error * @retval -1 Error
* @see clicon_rpc1 using plain NETCONF XML
*/ */
int int
clicon_rpc(int sock, clicon_rpc(int sock,
@ -638,19 +646,16 @@ clicon_rpc(int sock,
return retval; return retval;
} }
/*! Send a netconf message and recieve result. /*! Send a netconf message and recieve result using plain NETCONF
* *
* TBD: timeout, interrupt? * This is mainly used by the client API.
* retval may be -1 and
* errno set to ENOTCONN which means that socket is now closed probably
* due to remote peer disconnecting. The caller may have to do something,...
* *
* @param[in] sock Socket / file descriptor * @param[in] sock Socket / file descriptor
* @param[in] msgin CLICON msg data structure. It has fixed header and variable body. * @param[in] msgin CLICON msg data structure. It has fixed header and variable body.
* @param[out] msgret Returned data as netconf xml tree. * @param[out] msgret Returned data as netconf xml tree.
* @retval 0 OK * @retval 0 OK
* @retval -1 Error * @retval -1 Error
* see clicon_rpc using clicon_msg * @see clicon_rpc using clicon_msg protocol header
*/ */
int int
clicon_rpc1(int sock, clicon_rpc1(int sock,

View file

@ -38,6 +38,7 @@ bindir = @bindir@
includedir = @includedir@ includedir = @includedir@
datarootdir = @datarootdir@ datarootdir = @datarootdir@
# Also mandatory standard YANGs (see ../mandatory)
YANG_INSTALLDIR = @YANG_INSTALLDIR@ YANG_INSTALLDIR = @YANG_INSTALLDIR@
YANGSPECS = clixon-config@2021-07-11.yang # 5.3 YANGSPECS = clixon-config@2021-07-11.yang # 5.3

View file

@ -481,7 +481,7 @@ module clixon-config {
"Regexp of matching backend plugins in CLICON_BACKEND_DIR"; "Regexp of matching backend plugins in CLICON_BACKEND_DIR";
default "(.so)$"; default "(.so)$";
} }
leaf CLICON_NETCONF_DIR { leaf CLICON_NETCONF_DIR{
type string; type string;
description "Location of netconf (frontend) .so plugins"; description "Location of netconf (frontend) .so plugins";
} }
@ -707,8 +707,7 @@ module clixon-config {
type int8; type int8;
default 0; default 0;
description description
"Set CLI tab mode. This is actually a bitfield of three "Set CLI tab mode. This is a bitfield of three bits:
combinations:
bit 1: 0: <tab> shows short info of available commands bit 1: 0: <tab> shows short info of available commands
1: <tab> has same output as <?>, ie line per command 1: <tab> has same output as <?>, ie line per command
bit 2: 0: On <tab>, select a command over a <var> if both exist bit 2: 0: On <tab>, select a command over a <var> if both exist

View file

@ -39,7 +39,7 @@ bindir = @bindir@
includedir = @includedir@ includedir = @includedir@
datarootdir = @datarootdir@ datarootdir = @datarootdir@
# See also YANG_INSTALLDIR for the clixon-specific yang files # Also clixon YANGs (see ../clixon)
YANG_INSTALLDIR = @YANG_INSTALLDIR@ YANG_INSTALLDIR = @YANG_INSTALLDIR@
YANGSPECS += ietf-inet-types@2021-02-22.yang YANGSPECS += ietf-inet-types@2021-02-22.yang