forked from Mirror/frr

Mgmtd makes use of libyang's internal ietf-yang-library module to add support for said module to FRR management. Previously, mgmtd was loading this module explicitly; however, that required that libyang's `ietf-yang-library.yang` module definition file be co-located with FRR's yang files so that it (and ietf-datastore.yang) would be found when searched for by libyang using FRRs search path. This isn't always the case depending on how the user compiles and installs libyang so mgmtd was failing to run in some cases. Instead of doing it the above way we simply tell libyang to load it's internal version of ietf-yang-library when we initialize the libyang context. This required adding a boolean to a couple of the init functions which is why so many files are touched (although all the changes are minimal). Signed-off-by: Christian Hopps <chopps@labn.net>
93 lines
1.8 KiB
C
93 lines
1.8 KiB
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* generic CLI test helper functions
|
|
*
|
|
* Copyright (C) 2015 by David Lamparter,
|
|
* for Open Source Routing / NetDEF, Inc.
|
|
*/
|
|
|
|
#include <zebra.h>
|
|
#include <sys/stat.h>
|
|
|
|
#include "debug.h"
|
|
#include "frrevent.h"
|
|
#include "vty.h"
|
|
#include "command.h"
|
|
#include "memory.h"
|
|
#include "lib_vty.h"
|
|
#include "log.h"
|
|
|
|
#include "common_cli.h"
|
|
|
|
struct event_loop *master;
|
|
|
|
int dump_args(struct vty *vty, const char *descr, int argc,
|
|
struct cmd_token *argv[])
|
|
{
|
|
int i;
|
|
vty_out(vty, "%s with %d args.\n", descr, argc);
|
|
for (i = 0; i < argc; i++) {
|
|
vty_out(vty, "[%02d] %s@%s: %s\n", i, argv[i]->text,
|
|
argv[i]->varname, argv[i]->arg);
|
|
}
|
|
|
|
return CMD_SUCCESS;
|
|
}
|
|
|
|
static void vty_do_exit(int isexit)
|
|
{
|
|
printf("\nend.\n");
|
|
cmd_terminate();
|
|
vty_terminate();
|
|
nb_terminate();
|
|
yang_terminate();
|
|
event_master_free(master);
|
|
|
|
log_memstats(stderr, "testcli");
|
|
if (!isexit)
|
|
exit(0);
|
|
}
|
|
|
|
const struct frr_yang_module_info *const *test_yang_modules = NULL;
|
|
int test_log_prio = ZLOG_DISABLED;
|
|
|
|
/* main routine. */
|
|
int main(int argc, char **argv)
|
|
{
|
|
struct event thread;
|
|
size_t yangcount;
|
|
|
|
/* Set umask before anything for security */
|
|
umask(0027);
|
|
|
|
/* master init. */
|
|
master = event_master_create(NULL);
|
|
|
|
zlog_aux_init("NONE: ", test_log_prio);
|
|
|
|
/* Library inits. */
|
|
cmd_init(1);
|
|
cmd_hostname_set("test");
|
|
cmd_domainname_set("test.domain");
|
|
|
|
vty_init(master, false);
|
|
lib_cmd_init();
|
|
debug_init();
|
|
|
|
for (yangcount = 0; test_yang_modules && test_yang_modules[yangcount];
|
|
yangcount++)
|
|
;
|
|
nb_init(master, test_yang_modules, yangcount, false, false);
|
|
|
|
test_init(argc, argv);
|
|
|
|
vty_stdio(vty_do_exit);
|
|
|
|
/* Fetch next active thread. */
|
|
while (event_fetch(master, &thread))
|
|
event_call(&thread);
|
|
|
|
/* Not reached. */
|
|
exit(0);
|
|
}
|