summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2019-01-02 17:10:36 +0100
committerFlorian Westphal <fw@strlen.de>2019-01-02 23:22:44 +0100
commitdafac7d528de0890b82f943fc818ccb7a82fca7d (patch)
treeabd00dd15ac418f0afaa28a12873c095e98a8fb7
parent1e224c1399236cb5f93b53b4cebe7944237ad204 (diff)
rule: fix object listing when no table is given
'nft list quotas' would not print anything at all anymore. Fixes: 88456a7ef01172 ("rule: list only the table containing object") Signed-off-by: Florian Westphal <fw@strlen.de>
-rw-r--r--src/rule.c13
-rwxr-xr-xtests/shell/testcases/listing/0014objects_07
2 files changed, 15 insertions, 5 deletions
diff --git a/src/rule.c b/src/rule.c
index a815850d..e15a20b3 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -1946,13 +1946,16 @@ static int do_list_obj(struct netlink_ctx *ctx, struct cmd *cmd, uint32_t type)
continue;
if (cmd->handle.table.name != NULL &&
- !strcmp(cmd->handle.table.name, table->handle.table.name)) {
- nft_print(&ctx->nft->output, "table %s %s {\n",
- family2str(table->handle.family),
- cmd->handle.table.name);
- } else
+ strcmp(cmd->handle.table.name, table->handle.table.name))
continue;
+ if (list_empty(&table->objs))
+ continue;
+
+ nft_print(&ctx->nft->output, "table %s %s {\n",
+ family2str(table->handle.family),
+ table->handle.table.name);
+
list_for_each_entry(obj, &table->objs, list) {
if (obj->type != type ||
(cmd->handle.obj.name != NULL &&
diff --git a/tests/shell/testcases/listing/0014objects_0 b/tests/shell/testcases/listing/0014objects_0
index dcfe2e6f..20f68406 100755
--- a/tests/shell/testcases/listing/0014objects_0
+++ b/tests/shell/testcases/listing/0014objects_0
@@ -15,6 +15,13 @@ $NFT add quota test https-quota 25 mbytes
$NFT add ct helper test cthelp { type \"sip\" protocol tcp \; }
$NFT add table test-ip
+GET="$($NFT list quotas)"
+if [ "$EXPECTED" != "$GET" ] ; then
+ DIFF="$(which diff)"
+ [ -x $DIFF ] && $DIFF -u <(echo "$EXPECTED") <(echo "$GET")
+ exit 1
+fi
+
GET="$($NFT list quota test https-quota)"
if [ "$EXPECTED" != "$GET" ] ; then
DIFF="$(which diff)"