}
;
- $$->code = 'C';
+symbol:
+ SYM {
+ $$ = f_new_inst();
+ switch ($1->class) {
+ case SYM_NUMBER:
+ $$ = f_new_inst();
+ $$->code = 'c';
+ $$->aux = T_INT;
+ $$->a2.i = $1->aux;
+ break;
+ case SYM_IPA:
+ { NEW_F_VAL; $$ = f_new_inst(); $$->code = 'C'; $$->a1.p = val; val->type = T_IP; val->val.px.ip = * (ip_addr *) ($1->def); }
+ break;
+ case SYM_VARIABLE | T_BOOL:
+ case SYM_VARIABLE | T_INT:
+ case SYM_VARIABLE | T_PAIR:
+ case SYM_VARIABLE | T_STRING:
+ case SYM_VARIABLE | T_IP:
+ case SYM_VARIABLE | T_PREFIX:
+ case SYM_VARIABLE | T_PREFIX_SET:
+ case SYM_VARIABLE | T_SET:
+ case SYM_VARIABLE | T_PATH:
+ case SYM_VARIABLE | T_PATH_MASK:
+ case SYM_VARIABLE | T_CLIST:
++ $$->code = 'V';
+ $$->a1.p = $1->def;
++ $$->a2.p = $1->name;
+ break;
+ default:
+ cf_error("%s: variable expected.", $1->name );
+ }
+ }
+
static_attr:
FROM { $$ = f_new_inst(); $$->aux = T_IP; $$->a2.i = OFFSETOF(struct rta, from); $$->a1.i = 1; }