summaryrefslogtreecommitdiff
path: root/conf/cf-lex.l
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2019-01-30 14:03:47 +0100
committerMaria Matejka <mq@ucw.cz>2019-02-20 22:30:54 +0100
commitc0e958e022aac79f69e6aca2652fdb6a529e68e2 (patch)
treeed43827b8f1ade3b7bec7edd9a64b0dfdbd2343a /conf/cf-lex.l
parent713658798dfafabcd0a74f510c1639f6e3c9c820 (diff)
Filter + Config: Fix bugs, tests and split symbols by type
Diffstat (limited to 'conf/cf-lex.l')
-rw-r--r--conf/cf-lex.l22
1 files changed, 18 insertions, 4 deletions
diff --git a/conf/cf-lex.l b/conf/cf-lex.l
index 9bbb3660..5e7c8418 100644
--- a/conf/cf-lex.l
+++ b/conf/cf-lex.l
@@ -285,7 +285,18 @@ else: {
}
cf_lval.s = cf_get_symbol(yytext);
- return SYM;
+ switch (cf_lval.s->class) {
+ case SYM_VOID: return CF_SYM_VOID;
+ case SYM_PROTO: return CF_SYM_PROTO;
+ case SYM_TEMPLATE: return CF_SYM_TEMPLATE;
+ case SYM_FUNCTION: return CF_SYM_FUNCTION;
+ case SYM_FILTER: return CF_SYM_FILTER;
+ case SYM_TABLE: return CF_SYM_TABLE;
+ case SYM_ATTRIBUTE: return CF_SYM_ATTRIBUTE;
+ case SYM_VARIABLE_RANGE: return CF_SYM_VARIABLE;
+ case SYM_CONSTANT_RANGE: return CF_SYM_CONSTANT;
+ default: bug("Unknown symbol class %d", cf_lval.s->class);
+ }
}
<CLI>(.|\n) {
@@ -723,9 +734,6 @@ cf_pop_scope(void)
char *
cf_symbol_class_name(struct symbol *sym)
{
- if (cf_symbol_is_constant(sym))
- return "constant";
-
switch (sym->class)
{
case SYM_VOID:
@@ -740,6 +748,12 @@ cf_symbol_class_name(struct symbol *sym)
return "filter";
case SYM_TABLE:
return "routing table";
+ case SYM_ATTRIBUTE:
+ return "custom attribute";
+ case SYM_CONSTANT_RANGE:
+ return "constant";
+ case SYM_VARIABLE_RANGE:
+ return "variable";
default:
return "unknown type";
}