netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Pablo Neira Ayuso <pablo@netfilter.org>
To: netfilter-devel@vger.kernel.org
Subject: [PATCH nft] parser_bison: keep map flag around when flags are specified
Date: Wed, 27 Jul 2016 13:48:54 +0200	[thread overview]
Message-ID: <1469620134-7854-1-git-send-email-pablo@netfilter.org> (raw)

If you add a map with timeouts, eg.

  # nft add table x
  # nft add map x y { type ipv4_addr : ipv4_addr\; flags timeout\; }

The listing shows a set instead of a map:

  # nft list ruleset
  table ip x {
          set y {
                  type ipv4_addr
                  flags timeout
          }
  }

This patch fixes the parser to keep the map flag around when timeout
flag (or any other flags) are specified.

This patch also comes with a regression test.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
 src/parser_bison.y                          |  2 +-
 tests/shell/testcases/maps/map_with_flags_0 | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)
 create mode 100755 tests/shell/testcases/maps/map_with_flags_0

diff --git a/src/parser_bison.y b/src/parser_bison.y
index e259fdc..a4f021a 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -1071,7 +1071,7 @@ map_block		:	/* empty */	{ $$ = $<set>-1; }
 			}
 			|	map_block	FLAGS		set_flag_list	stmt_seperator
 			{
-				$1->flags = $3;
+				$1->flags |= $3;
 				$$ = $1;
 			}
 			|	map_block	ELEMENTS	'='		set_expr
diff --git a/tests/shell/testcases/maps/map_with_flags_0 b/tests/shell/testcases/maps/map_with_flags_0
new file mode 100755
index 0000000..8774eb5
--- /dev/null
+++ b/tests/shell/testcases/maps/map_with_flags_0
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+set -e
+
+$NFT add table x
+$NFT add map x y { type ipv4_addr : ipv4_addr\; flags timeout\; }
+
+EXPECTED="table ip x {
+	map y {
+		type ipv4_addr : ipv4_addr
+		flags timeout
+	}
+}"
+
+GET="$($NFT list ruleset)"
+
+if [ "$EXPECTED" != "$GET" ] ; then
+	DIFF="$(which diff)"
+	[ -x $DIFF ] && $DIFF -u <(echo "$EXPECTED") <(echo "$GET")
+	exit 1
+fi
-- 
2.1.4


                 reply	other threads:[~2016-07-27 11:49 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=1469620134-7854-1-git-send-email-pablo@netfilter.org \
    --to=pablo@netfilter.org \
    --cc=netfilter-devel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).