%type <t> text opttext
%type <bs> bytestring
-%type <s> symbol
-%type <kw> kw_sym
+%type <s> symbol symbol_known toksym
- %type <v> bytestring_text
+ %type <v> bytestring_text text_or_ipa
%type <x> bytestring_expr
%nonassoc PREFIX_DUMMY
| /* empty */ { $$ = NULL; }
;
- $$ = cf_eval($2, T_VOID);
+ text_or_ipa:
+ TEXT { $$.type = T_STRING; $$.val.s = $1; }
+ | IP4 { $$.type = T_IP; $$.val.ip = ipa_from_ip4($1); }
+ | IP6 { $$.type = T_IP; $$.val.ip = ipa_from_ip6($1); }
+ | CF_SYM_KNOWN {
+ if (($1->class == (SYM_CONSTANT | T_STRING)) ||
+ ($1->class == (SYM_CONSTANT | T_IP)))
+ $$ = *($1->val);
+ else
+ cf_error("String or IP constant expected");
+ }
+ | '(' term ')' {
++ $$ = *cf_eval($2, T_VOID);
+ if (($$.type != T_BYTESTRING) && ($$.type != T_STRING))
+ cf_error("Bytestring or string value expected");
+ }
+ ;
+
bytestring:
BYTETEXT
- | bytestring_expr { $$ = cf_eval($1, T_BYTESTRING).val.bs; }
+ | bytestring_expr { $$ = cf_eval($1, T_BYTESTRING)->val.bs; }
;
bytestring_text:
%nonassoc ELSE
%type <xp> cmds_int cmd_prep
- %type <x> term term_bs cmd cmd_var cmds cmds_scoped constant constructor print_list var var_init var_list function_call symbol_value bgp_path_expr bgp_path bgp_path_tail
+ %type <x> term term_bs cmd cmd_var cmds cmds_scoped constant constructor print_list var var_list function_call symbol_value bgp_path_expr bgp_path bgp_path_tail
-%type <fda> dynamic_attr
%type <fsa> static_attr
%type <f> filter where_filter
%type <fl> filter_body function_body