summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/parser.y2
-rw-r--r--src/rule.c8
2 files changed, 7 insertions, 3 deletions
diff --git a/src/parser.y b/src/parser.y
index db6f4933..af348578 100644
--- a/src/parser.y
+++ b/src/parser.y
@@ -719,7 +719,7 @@ list_cmd : TABLE table_spec
{
$$ = cmd_alloc(CMD_LIST, CMD_OBJ_CHAIN, &$2, &@$, NULL);
}
- | SETS table_spec
+ | SETS tables_spec
{
$$ = cmd_alloc(CMD_LIST, CMD_OBJ_SETS, &$2, &@$, NULL);
}
diff --git a/src/rule.c b/src/rule.c
index b7190401..00dedf54 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -668,8 +668,12 @@ static int do_command_list(struct netlink_ctx *ctx, struct cmd *cmd)
case CMD_OBJ_SETS:
if (netlink_list_sets(ctx, &cmd->handle, &cmd->location) < 0)
return -1;
- list_for_each_entry_safe(set, nset, &ctx->list, list)
- list_move_tail(&set->list, &table->sets);
+ list_for_each_entry(set, &ctx->list, list){
+ if (netlink_get_setelems(ctx, &set->handle,
+ &cmd->location, set) < 0)
+ return -1;
+ set_print(set);
+ }
break;
case CMD_OBJ_SET:
if (netlink_get_set(ctx, &cmd->handle, &cmd->location) < 0)