diff options
author | Dave Barach <dave@barachs.net> | 2020-06-18 17:04:18 -0400 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2020-06-19 07:03:34 +0000 |
commit | 961e3c8428be81ae74f7e8ee293b16808a74d45e (patch) | |
tree | e4fbff493e10fb6a6979d0ae503b77e569d8f4f2 /src/vat/main.c | |
parent | fb4df27faecde54e610d41a84d9ee71234347316 (diff) |
vlib: add recursive macro expander to debug cli
All of the pieces have been sitting around for years.
Added several debug CLI commands:
"define <variable-name> <value>"
"undefine <variable-name>"
"show macro [noeval]"
"echo <whatever>"
Macros may refer to other macros. To defer evaluation:
"define foo \$(bar)" or some such.
The macro evaluator is not smart about "define foo \$(foo)" or more
complicated circular definitions, so don't do that.
Environment variables are available, simply use $<name-of-environment-vbl>
The macro expander has a table of (overrideable) builtin names, which
are evaluated by calling functions.
Simple example:
echo $USER
define ip1 192.168.1.1/24
define ip2 192.168.2.1/24
loop create
loop create
set int ip address loop0 $ip1
set int ip address loop1 $ip2
show int addr
show macro
undefine ip1
undefine ip2
Type: feature
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I08a800647bac573d8ae3cfd75c40061d41c5f976
Diffstat (limited to 'src/vat/main.c')
-rw-r--r-- | src/vat/main.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/vat/main.c b/src/vat/main.c index 139594944d2..a6779c591ce 100644 --- a/src/vat/main.c +++ b/src/vat/main.c @@ -208,14 +208,14 @@ init_error_string_table (vat_main_t * vam) } static i8 * -eval_current_file (macro_main_t * mm, i32 complain) +eval_current_file (clib_macro_main_t * mm, i32 complain) { vat_main_t *vam = &vat_main; return ((i8 *) format (0, "%s%c", vam->current_file, 0)); } static i8 * -eval_current_line (macro_main_t * mm, i32 complain) +eval_current_line (clib_macro_main_t * mm, i32 complain) { vat_main_t *vam = &vat_main; return ((i8 *) format (0, "%d%c", vam->input_line_number, 0)); |