summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorQuentin Young <qlyoung@nvidia.com>2020-11-28 21:51:42 -0500
committerQuentin Young <qlyoung@nvidia.com>2020-12-01 18:37:14 -0500
commit3d19ffc5ef88022bc6be8daf052c4720b81b1bc7 (patch)
tree64d9611037bee181ce3ba6bbf6fecba4f88413ea /lib
parent5f98c815b6c75115963955a75d1dd2c047d589c9 (diff)
lib: add 'script <type> foo' test command
Signed-off-by: Quentin Young <qlyoung@nvidia.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/command.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/command.c b/lib/command.c
index 99f86ec680..56af946997 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -49,6 +49,8 @@
#include "northbound_cli.h"
#include "network.h"
+#include "frrscript.h"
+
DEFINE_MTYPE_STATIC(LIB, HOST, "Host config")
DEFINE_MTYPE(LIB, COMPLETION, "Completion item")
@@ -2286,10 +2288,18 @@ DEFUN(script,
"Test command - execute a script\n"
"Script name (same as filename in /etc/frr/scripts/\n")
{
- struct frrscript *fs = frrscript_load(argv[2]->arg, NULL);
- int ret = frrscript_call(fs, 42);
+ struct prefix p;
+ str2prefix("1.2.3.4/24", &p);
+
+ struct frrscript *fs = frrscript_load(argv[1]->arg, NULL);
- vty_out(vty, "Script result: %d\n", ret);
+ if (fs == NULL) {
+ vty_out(vty, "Script '/etc/frr/scripts/%s.lua' not found\n",
+ argv[1]->arg);
+ } else {
+ int ret = frrscript_call(fs, FRRSCRIPT_ARGS("cool", "prefix", &p), FRRSCRIPT_RESULTS());
+ vty_out(vty, "Script result: %d\n", ret);
+ }
return CMD_SUCCESS;
}
@@ -2389,6 +2399,10 @@ void cmd_init(int terminal)
install_element(VIEW_NODE, &echo_cmd);
install_element(VIEW_NODE, &autocomplete_cmd);
install_element(VIEW_NODE, &find_cmd);
+#ifdef DEV_BUILD
+ install_element(VIEW_NODE, &script_cmd);
+#endif
+
install_element(ENABLE_NODE, &config_end_cmd);
install_element(ENABLE_NODE, &config_disable_cmd);