Alternative yang spec option -y added to all applications
This commit is contained in:
parent
236b661e43
commit
c59869a44e
10 changed files with 86 additions and 167 deletions
|
|
@ -57,6 +57,7 @@
|
|||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netinet/in.h>
|
||||
#include <libgen.h>
|
||||
|
||||
/* cligen */
|
||||
#include <cligen/cligen.h>
|
||||
|
|
@ -141,7 +142,8 @@ usage(char *argv0, clicon_handle h)
|
|||
" -r\t\tReload running database\n"
|
||||
" -p \t\tPrint database yang specification\n"
|
||||
" -t \t\tPrint alternate spec translation (eg if YANG print KEY, if KEY print YANG)\n"
|
||||
" -g <group>\tClient membership required to this group (default: %s)\n",
|
||||
" -g <group>\tClient membership required to this group (default: %s)\n"
|
||||
"\t-y <file>\tOverride yang spec file (dont include .yang suffix)\n",
|
||||
argv0,
|
||||
plgdir ? plgdir : "none",
|
||||
confsock ? confsock : "none",
|
||||
|
|
@ -426,9 +428,15 @@ main(int argc, char **argv)
|
|||
case 't' : /* Print alternative dbspec format (eg if YANG, print KEY) */
|
||||
printalt++;
|
||||
break;
|
||||
case 'y' : /* yang module */
|
||||
clicon_option_str_set(h, "CLICON_YANG_MODULE_MAIN", optarg);
|
||||
case 'y' :{ /* yang module */
|
||||
/* Set revision to NULL, extract dir and module */
|
||||
char *str = strdup(optarg);
|
||||
char *dir = dirname(str);
|
||||
hash_del(clicon_options(h), (char*)"CLICON_YANG_MODULE_REVISION");
|
||||
clicon_option_str_set(h, "CLICON_YANG_MODULE_MAIN", basename(optarg));
|
||||
clicon_option_str_set(h, "CLICON_YANG_DIR", strdup(dir));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
usage(argv[0], h);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -595,8 +595,7 @@ load_config_filev(clicon_handle h,
|
|||
{
|
||||
int ret = -1;
|
||||
struct stat st;
|
||||
char **vecp = NULL;
|
||||
char *filename;
|
||||
char *filename = NULL;
|
||||
int replace;
|
||||
cg_var *cv;
|
||||
char *opstr;
|
||||
|
|
@ -628,11 +627,10 @@ load_config_filev(clicon_handle h,
|
|||
clicon_err(OE_PLUGIN, 0, "No such var name: %s", varstr);
|
||||
goto done;
|
||||
}
|
||||
if ((vecp = clicon_realpath(NULL, cv_string_get(cv), __FUNCTION__)) == NULL){
|
||||
if ((filename = realpath(cv_string_get(cv), NULL)) == NULL){
|
||||
cli_output(stderr, "Failed to resolve filename\n");
|
||||
goto done;
|
||||
}
|
||||
filename = vecp[0];
|
||||
if (stat(filename, &st) < 0){
|
||||
clicon_err(OE_UNIX, 0, "load_config: stat(%s): %s",
|
||||
filename, strerror(errno));
|
||||
|
|
@ -668,14 +666,8 @@ load_config_filev(clicon_handle h,
|
|||
// }
|
||||
ret = 0;
|
||||
done:
|
||||
unchunk_group(__FUNCTION__);
|
||||
if (vecp){
|
||||
if (vecp[0])
|
||||
free(vecp[0]);
|
||||
if (vecp[1])
|
||||
free(vecp[1]);
|
||||
free(vecp);
|
||||
}
|
||||
if (filename)
|
||||
free(filename);
|
||||
if (xt)
|
||||
xml_free(xt);
|
||||
if (fd != -1)
|
||||
|
|
@ -704,8 +696,7 @@ save_config_filev(clicon_handle h,
|
|||
cvec *argv)
|
||||
{
|
||||
int retval = -1;
|
||||
char **vecp;
|
||||
char *filename;
|
||||
char *filename = NULL;
|
||||
cg_var *cv;
|
||||
char *dbstr;
|
||||
char *varstr;
|
||||
|
|
@ -732,11 +723,10 @@ save_config_filev(clicon_handle h,
|
|||
clicon_err(OE_PLUGIN, 0, "No such var name: %s", varstr);
|
||||
goto done;
|
||||
}
|
||||
if ((vecp = clicon_realpath(NULL, cv_string_get(cv), __FUNCTION__)) == NULL){
|
||||
if ((filename = realpath(cv_string_get(cv), NULL)) == NULL){
|
||||
cli_output(stderr, "Failed to resolve filename\n");
|
||||
goto done;
|
||||
}
|
||||
filename = vecp[0];
|
||||
if (clicon_rpc_get_config(h, dbstr,"/", &xt) < 0)
|
||||
goto done;
|
||||
if ((f = fopen(filename, "wb")) == NULL){
|
||||
|
|
@ -748,7 +738,8 @@ save_config_filev(clicon_handle h,
|
|||
retval = 0;
|
||||
/* Fall through */
|
||||
done:
|
||||
unchunk_group(__FUNCTION__);
|
||||
if (filename)
|
||||
free(filename);
|
||||
if (xt)
|
||||
xml_free(xt);
|
||||
if (f != NULL)
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@
|
|||
#include <sys/param.h>
|
||||
#include <netinet/in.h>
|
||||
#include <assert.h>
|
||||
#include <libgen.h>
|
||||
|
||||
/* cligen */
|
||||
#include <cligen/cligen.h>
|
||||
|
|
@ -69,7 +70,7 @@
|
|||
#include "cli_handle.h"
|
||||
|
||||
/* Command line options to be passed to getopt(3) */
|
||||
#define CLI_OPTS "hD:f:F:1u:d:m:qpGLl:"
|
||||
#define CLI_OPTS "hD:f:F:1u:d:m:qpGLl:y:"
|
||||
|
||||
/*! terminate cli application */
|
||||
static int
|
||||
|
|
@ -150,7 +151,8 @@ usage(char *argv0, clicon_handle h)
|
|||
"\t-p \t\tPrint database yang specification\n"
|
||||
"\t-G \t\tPrint CLI syntax generated from dbspec (if CLICON_CLI_GENMODEL enabled)\n"
|
||||
"\t-L \t\tDebug print dynamic CLI syntax including completions and expansions\n"
|
||||
"\t-l <s|e|o> \tLog on (s)yslog, std(e)rr or std(o)ut (stderr is default)\n",
|
||||
"\t-l <s|e|o> \tLog on (s)yslog, std(e)rr or std(o)ut (stderr is default)\n"
|
||||
"\t-y <file>\tOverride yang spec file (dont include .yang suffix)\n",
|
||||
argv0,
|
||||
confsock ? confsock : "none",
|
||||
plgdir ? plgdir : "none"
|
||||
|
|
@ -288,6 +290,15 @@ main(int argc, char **argv)
|
|||
case 'L' : /* Debug print dynamic CLI syntax */
|
||||
logclisyntax++;
|
||||
break;
|
||||
case 'y' :{ /* yang module */
|
||||
/* Set revision to NULL, extract dir and module */
|
||||
char *str = strdup(optarg);
|
||||
char *dir = dirname(str);
|
||||
hash_del(clicon_options(h), (char*)"CLICON_YANG_MODULE_REVISION");
|
||||
clicon_option_str_set(h, "CLICON_YANG_MODULE_MAIN", basename(optarg));
|
||||
clicon_option_str_set(h, "CLICON_YANG_DIR", strdup(dir));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
usage(argv[0], h);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@
|
|||
#include <arpa/inet.h>
|
||||
#include <assert.h>
|
||||
#include <netinet/in.h>
|
||||
#include <libgen.h>
|
||||
|
||||
/* cligen */
|
||||
#include <cligen/cligen.h>
|
||||
|
|
@ -70,7 +71,7 @@
|
|||
#include "netconf_rpc.h"
|
||||
|
||||
/* Command line options to be passed to getopt(3) */
|
||||
#define NETCONF_OPTS "hDqf:d:S"
|
||||
#define NETCONF_OPTS "hDqf:d:Sy:"
|
||||
|
||||
/*! Process incoming packet
|
||||
* @param[in] h Clicon handle
|
||||
|
|
@ -286,7 +287,8 @@ usage(clicon_handle h,
|
|||
"\t-q\t\tQuiet: dont send hello prompt\n"
|
||||
"\t-f <file>\tConfiguration file (mandatory)\n"
|
||||
"\t-d <dir>\tSpecify netconf plugin directory dir (default: %s)\n"
|
||||
"\t-S\t\tLog on syslog\n",
|
||||
"\t-S\t\tLog on syslog\n"
|
||||
"\t-y <file>\tOverride yang spec file (dont include .yang suffix)\n",
|
||||
argv0,
|
||||
netconfdir
|
||||
);
|
||||
|
|
@ -359,6 +361,15 @@ main(int argc, char **argv)
|
|||
usage(h, argv[0]);
|
||||
clicon_option_str_set(h, "CLICON_NETCONF_DIR", optarg);
|
||||
break;
|
||||
case 'y' :{ /* yang module */
|
||||
/* Set revision to NULL, extract dir and module */
|
||||
char *str = strdup(optarg);
|
||||
char *dir = dirname(str);
|
||||
hash_del(clicon_options(h), (char*)"CLICON_YANG_MODULE_REVISION");
|
||||
clicon_option_str_set(h, "CLICON_YANG_MODULE_MAIN", basename(optarg));
|
||||
clicon_option_str_set(h, "CLICON_YANG_DIR", strdup(dir));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
usage(h, argv[0]);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@
|
|||
#include <sys/time.h>
|
||||
#include <sys/wait.h>
|
||||
#include <curl/curl.h>
|
||||
#include <libgen.h>
|
||||
|
||||
/* cligen */
|
||||
#include <cligen/cligen.h>
|
||||
|
|
@ -71,7 +72,7 @@
|
|||
#include "restconf_methods.h"
|
||||
|
||||
/* Command line options to be passed to getopt(3) */
|
||||
#define RESTCONF_OPTS "hDf:p:"
|
||||
#define RESTCONF_OPTS "hDf:p:y:"
|
||||
|
||||
/* Should be discovered via "/.well-known/host-meta"
|
||||
resource ([RFC6415]) */
|
||||
|
|
@ -243,7 +244,8 @@ usage(clicon_handle h,
|
|||
"\t-h \t\tHelp\n"
|
||||
"\t-D \t\tDebug. Log to syslog\n"
|
||||
"\t-f <file>\tConfiguration file (mandatory)\n"
|
||||
"\t-d <dir>\tSpecify restconf plugin directory dir (default: %s)\n",
|
||||
"\t-d <dir>\tSpecify restconf plugin directory dir (default: %s)\n"
|
||||
"\t-y <file>\tOverride yang spec file (dont include .yang suffix)\n",
|
||||
argv0,
|
||||
restconfdir
|
||||
);
|
||||
|
|
@ -264,6 +266,7 @@ main(int argc,
|
|||
char *sockpath;
|
||||
char *path;
|
||||
clicon_handle h;
|
||||
char *yangspec=NULL;
|
||||
|
||||
/* In the startup, logs to stderr & debug flag set later */
|
||||
clicon_log_init(__PROGRAM__, LOG_INFO, CLICON_LOG_SYSLOG);
|
||||
|
|
@ -289,6 +292,9 @@ main(int argc,
|
|||
usage(h, argv[0]);
|
||||
clicon_option_str_set(h, "CLICON_RESTCONF_DIR", optarg);
|
||||
break;
|
||||
case 'y' : /* yang module */
|
||||
yangspec = optarg;
|
||||
break;
|
||||
default:
|
||||
usage(h, argv[0]);
|
||||
break;
|
||||
|
|
@ -312,6 +318,15 @@ main(int argc,
|
|||
if (clicon_options_main(h) < 0)
|
||||
goto done;
|
||||
|
||||
/* Overwrite yang module with -y option */
|
||||
if (yangspec){
|
||||
/* Set revision to NULL, extract dir and module */
|
||||
char *str = strdup(yangspec);
|
||||
char *dir = dirname(str);
|
||||
hash_del(clicon_options(h), (char*)"CLICON_YANG_MODULE_REVISION");
|
||||
clicon_option_str_set(h, "CLICON_YANG_MODULE_MAIN", basename(yangspec));
|
||||
clicon_option_str_set(h, "CLICON_YANG_DIR", strdup(dir));
|
||||
}
|
||||
/* Initialize plugins group */
|
||||
if (restconf_plugin_load(h) < 0)
|
||||
return -1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue