From: "Pablo M. Bermudo Garay" <pablombg@gmail.com>
To: netfilter-devel@vger.kernel.org
Cc: pablo@netfilter.org, "Pablo M. Bermudo Garay" <pablombg@gmail.com>
Subject: [PATCH nft 1/2] src: add 'list maps' support
Date: Tue, 31 May 2016 12:37:06 +0200 [thread overview]
Message-ID: <20160531103707.20058-1-pablombg@gmail.com> (raw)
This commit adds a new command that lists maps:
# nft list maps [family]
Only the declaration is displayed. If no family is specified, all maps
of all families are listed.
Example:
# nft list maps
table ip filter {
map test {
type ipv4_addr : inet_service
}
}
table ip6 filter {
map test {
type ipv6_addr : inet_service
}
}
Signed-off-by: Pablo M. Bermudo Garay <pablombg@gmail.com>
---
include/rule.h | 1 +
src/evaluate.c | 1 +
src/parser_bison.y | 5 +++++
src/rule.c | 8 +++++++-
src/scanner.l | 1 +
5 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/include/rule.h b/include/rule.h
index bd24648..11d8618 100644
--- a/include/rule.h
+++ b/include/rule.h
@@ -318,6 +318,7 @@ enum cmd_obj {
CMD_OBJ_EXPORT,
CMD_OBJ_FLOWTABLE,
CMD_OBJ_FLOWTABLES,
+ CMD_OBJ_MAPS,
};
struct export {
diff --git a/src/evaluate.c b/src/evaluate.c
index cb4d2a5..ea1a63d 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -2701,6 +2701,7 @@ static int cmd_evaluate_list(struct eval_ctx *ctx, struct cmd *cmd)
case CMD_OBJ_SETS:
case CMD_OBJ_RULESET:
case CMD_OBJ_FLOWTABLES:
+ case CMD_OBJ_MAPS:
return 0;
default:
BUG("invalid command object type %u\n", cmd->obj);
diff --git a/src/parser_bison.y b/src/parser_bison.y
index 0452b8f..c689585 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -178,6 +178,7 @@ static void location_update(struct location *loc, struct location *rhs, int n)
%token SET "set"
%token ELEMENT "element"
%token MAP "map"
+%token MAPS "maps"
%token HANDLE "handle"
%token RULESET "ruleset"
@@ -844,6 +845,10 @@ list_cmd : TABLE table_spec
{
$$ = cmd_alloc(CMD_LIST, CMD_OBJ_FLOWTABLE, &$3, &@$, NULL);
}
+ | MAPS ruleset_spec
+ {
+ $$ = cmd_alloc(CMD_LIST, CMD_OBJ_MAPS, &$2, &@$, NULL);
+ }
;
flush_cmd : TABLE table_spec
diff --git a/src/rule.c b/src/rule.c
index 5613f96..38fd664 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -1074,11 +1074,15 @@ static int do_list_sets(struct netlink_ctx *ctx, struct cmd *cmd)
list_for_each_entry(set, &table->sets, list) {
if (cmd->obj == CMD_OBJ_SETS &&
- set->flags & SET_F_ANONYMOUS)
+ (set->flags & SET_F_ANONYMOUS ||
+ set->flags & SET_F_MAP))
continue;
if (cmd->obj == CMD_OBJ_FLOWTABLES &&
!(set->flags & SET_F_EVAL))
continue;
+ if (cmd->obj == CMD_OBJ_MAPS &&
+ !(set->flags & SET_F_MAP))
+ continue;
set_print_declaration(set, &opts);
printf("%s}%s", opts.tab, opts.nl);
}
@@ -1216,6 +1220,8 @@ static int do_command_list(struct netlink_ctx *ctx, struct cmd *cmd)
return do_list_sets(ctx, cmd);
case CMD_OBJ_FLOWTABLE:
return do_list_set(ctx, cmd, table);
+ case CMD_OBJ_MAPS:
+ return do_list_sets(ctx, cmd);
default:
BUG("invalid command object type %u\n", cmd->obj);
}
diff --git a/src/scanner.l b/src/scanner.l
index b022114..88669d0 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -245,6 +245,7 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr})
"set" { return SET; }
"element" { return ELEMENT; }
"map" { return MAP; }
+"maps" { return MAPS; }
"handle" { return HANDLE; }
"ruleset" { return RULESET; }
--
2.8.3
next reply other threads:[~2016-05-31 10:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-31 10:37 Pablo M. Bermudo Garay [this message]
2016-05-31 10:37 ` [PATCH nft 2/2] src: add support for display maps content Pablo M. Bermudo Garay
2016-05-31 10:45 ` Pablo Neira Ayuso
2016-05-31 10:44 ` [PATCH nft 1/2] src: add 'list maps' support Pablo Neira Ayuso
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160531103707.20058-1-pablombg@gmail.com \
--to=pablombg@gmail.com \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.