diff options
author | Florian Westphal <fw@strlen.de> | 2017-02-20 18:03:18 +0100 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2017-03-16 10:09:59 +0100 |
commit | aabb9c46ac4cfdff3aad136dd2ed7cb2bb0f9293 (patch) | |
tree | 2694f95407d9ac4f0fdb76db092f50042c15e371 | |
parent | ec38e5ed61a088a1fbd2922742c9125aa1c63a7c (diff) |
src: allow listing all ct helpers
this implements
nft list ct helpers table filter
table ip filter {
ct helper ftp-standard {
..
Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r-- | include/rule.h | 1 | ||||
-rw-r--r-- | src/evaluate.c | 1 | ||||
-rw-r--r-- | src/parser_bison.y | 19 | ||||
-rw-r--r-- | src/rule.c | 2 |
4 files changed, 23 insertions, 0 deletions
diff --git a/include/rule.h b/include/rule.h index d89a963d..b791cc0a 100644 --- a/include/rule.h +++ b/include/rule.h @@ -370,6 +370,7 @@ enum cmd_obj { CMD_OBJ_COUNTERS, CMD_OBJ_QUOTA, CMD_OBJ_QUOTAS, + CMD_OBJ_CT_HELPERS, }; struct export { diff --git a/src/evaluate.c b/src/evaluate.c index ae30bc9b..20f67ee7 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -3023,6 +3023,7 @@ static int cmd_evaluate_list(struct eval_ctx *ctx, struct cmd *cmd) return cmd_evaluate_list_obj(ctx, cmd, NFT_OBJECT_COUNTER); case CMD_OBJ_COUNTERS: case CMD_OBJ_QUOTAS: + case CMD_OBJ_CT_HELPERS: if (cmd->handle.table == NULL) return 0; if (table_lookup(&cmd->handle) == NULL) diff --git a/src/parser_bison.y b/src/parser_bison.y index 2cf732ce..1bcbff59 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -1016,6 +1016,25 @@ list_cmd : TABLE table_spec { $$ = cmd_alloc(CMD_LIST, CMD_OBJ_MAP, &$2, &@$, NULL); } + | CT STRING TABLE table_spec + { + int cmd; + + if (strcmp($2, "helpers") == 0) { + cmd = CMD_OBJ_CT_HELPERS; + } else { + struct error_record *erec; + + erec = error(&@$, "unknown ct class '%s', want 'helpers'", $2); + + if (erec != NULL) { + erec_queue(erec, state->msgs); + YYERROR; + } + } + + $$ = cmd_alloc(CMD_LIST, cmd, &$4, &@$, NULL); + } ; reset_cmd : COUNTERS ruleset_spec @@ -1455,6 +1455,8 @@ static int do_command_list(struct netlink_ctx *ctx, struct cmd *cmd) case CMD_OBJ_QUOTA: case CMD_OBJ_QUOTAS: return do_list_obj(ctx, cmd, NFT_OBJECT_QUOTA); + case CMD_OBJ_CT_HELPERS: + return do_list_obj(ctx, cmd, NFT_OBJECT_CT_HELPER); default: BUG("invalid command object type %u\n", cmd->obj); } |