Hi Phil,
On 5/14/19 6:17 PM, Phil Sutter wrote:
> Hi Fernando,
>
> On Tue, May 14, 2019 at 05:43:39PM +0200, Fernando Fernandez Mancera wrote:
>> This last patch does not work. The first one works fine with a string as
>> chain name.
>>
> [...]
>> [...]
>> This error comes from symbol_parse() at expr_evaluate_symbol() after the
>> expr_evaluate() call added in the first patch.
>
> Yes, symbol_expr is used only for symbolic constants, therefore
> symbol_parse() is very restrictive.
>
> [...]>>> diff --git a/src/parser_bison.y b/src/parser_bison.y
>>> index 69b5773..42fd71f 100644
>>> --- a/src/parser_bison.y
>>> +++ b/src/parser_bison.y
>>> @@ -3841,7 +3841,13 @@ verdict_expr : ACCEPT
>>> }
>>> ;
>>>
>>> -chain_expr : identifier
>>> +chain_expr : variable_expr
>>> + {
>>> + $$ = symbol_expr_alloc(&@$, SYMBOL_VALUE,
>>> + current_scope(state),
>>> + $1->sym->identifier);
>>> + }
>
> I didn't test it, but you can probably just drop the curly braces and
> everything inside here. 'variable_expr' already turns into an
> expression (a variable_expr, not symbol_expr), which is probably what
> you want.
>
I tried that first and I got the same error. I have tried it again.. and
I am getting the same error.
file.nft:1:15-17: Error: Can't parse symbolic netfilter verdict expressions
define dest = ber
^^^
Thanks! :-)
>>> + | identifier
>>> {
>>> $$ = constant_expr_alloc(&@$, &string_type,
>>> BYTEORDER_HOST_ENDIAN,
>>>
>>
>
> Cheers, Phil
>