summaryrefslogtreecommitdiff
path: root/filter/filter.c
diff options
context:
space:
mode:
authorPavel Tvrdik <pawel.tvrdik@gmail.com>2016-11-16 12:15:43 +0100
committerPavel Tvrdik <pawel.tvrdik@gmail.com>2016-11-16 12:22:01 +0100
commit4b135d095860cf861ff47c24a10169faa41fe35a (patch)
treedaea4e0621ee77caa43efecfbe63dd542389f7ad /filter/filter.c
parentbb721f0d6d00bc2d7944640bfaf1cb266060d972 (diff)
Birdtest: Add function format in grammar for stringify expression
Diffstat (limited to 'filter/filter.c')
-rw-r--r--filter/filter.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/filter/filter.c b/filter/filter.c
index 88d138a0..145ff4b3 100644
--- a/filter/filter.c
+++ b/filter/filter.c
@@ -563,6 +563,14 @@ f_rta_cow(void)
(*f_rte)->attrs = rta_do_cow((*f_rte)->attrs, f_pool);
}
+static char *
+val_format_str(struct f_val v) {
+ buffer b;
+ LOG_BUFFER_INIT(b);
+ val_format(v, &b);
+ return lp_strdup(f_pool, b.start);
+}
+
static struct tbf rl_runtime_err = TBF_DEFAULT_LOG_LIMITS;
#define runtime(fmt, ...) do { \
@@ -1477,6 +1485,13 @@ interpret(struct f_inst *what)
break;
+ case P('f','m'): /* Format */
+ ONEARG;
+
+ res.type = T_STRING;
+ res.val.s = val_format_str(v1);
+ break;
+
case P('a','s'): /* Birdtest Assert */
ONEARG;