diff options
Diffstat (limited to 'src/parser.y')
-rw-r--r-- | src/parser.y | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/parser.y b/src/parser.y index 653c7649..ac3d890f 100644 --- a/src/parser.y +++ b/src/parser.y @@ -383,8 +383,8 @@ static void location_update(struct location *loc, struct location *rhs, int n) %type <cmd> line %destructor { cmd_free($$); } line -%type <cmd> base_cmd add_cmd create_cmd insert_cmd delete_cmd list_cmd flush_cmd rename_cmd export_cmd monitor_cmd -%destructor { cmd_free($$); } base_cmd add_cmd create_cmd insert_cmd delete_cmd list_cmd flush_cmd rename_cmd export_cmd monitor_cmd +%type <cmd> base_cmd add_cmd create_cmd insert_cmd delete_cmd list_cmd flush_cmd rename_cmd export_cmd monitor_cmd describe_cmd +%destructor { cmd_free($$); } base_cmd add_cmd create_cmd insert_cmd delete_cmd list_cmd flush_cmd rename_cmd export_cmd monitor_cmd describe_cmd %type <handle> table_spec tables_spec chain_spec chain_identifier ruleid_spec ruleset_spec %destructor { handle_free(&$$); } table_spec tables_spec chain_spec chain_identifier ruleid_spec ruleset_spec @@ -614,12 +614,7 @@ base_cmd : /* empty */ add_cmd { $$ = $1; } | RENAME rename_cmd { $$ = $2; } | EXPORT export_cmd { $$ = $2; } | MONITOR monitor_cmd { $$ = $2; } - | DESCRIBE primary_expr - { - expr_describe($2); - expr_free($2); - $$ = NULL; - } + | DESCRIBE describe_cmd { $$ = $2; } ; add_cmd : TABLE table_spec @@ -865,6 +860,14 @@ monitor_object : /* empty */ } ; +describe_cmd : primary_expr + { + struct handle h = { .family = NFPROTO_UNSPEC }; + $$ = cmd_alloc(CMD_DESCRIBE, CMD_OBJ_EXPR, &h, &@$, NULL); + $$->expr = $1; + } + ; + output_format : /* empty */ { $$ = NFT_OUTPUT_DEFAULT; |