[nft PATCH 4/7] json: Dump flowtable hook spec only if present

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If there is no priority.expr set, assume hook.num is bogus, too.

While this is fixing JSON output, it's hard to tell what commit this is
actually fixing: Before commit 627c451b23513 ("src: allow variables in
the chain priority specification"), there was no way to detect
flowtables missing hook specs (e.g. when printing flowtable delete
monitor event).

Signed-off-by: Phil Sutter <phil@xxxxxx>
---
 src/json.c                                 | 22 ++++++++++++++--------
 tests/monitor/testcases/flowtable-simple.t |  2 +-
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/json.c b/src/json.c
index a46aed279167b..5bd5daf3f7fa6 100644
--- a/src/json.c
+++ b/src/json.c
@@ -493,18 +493,24 @@ static json_t *flowtable_print_json(const struct flowtable *ftable)
 	json_t *root, *devs = NULL;
 	int i, priority = 0;
 
+	root = nft_json_pack("{s:s, s:s, s:s, s:I}",
+			"family", family2str(ftable->handle.family),
+			"name", ftable->handle.flowtable.name,
+			"table", ftable->handle.table.name,
+			"handle", ftable->handle.handle.id);
+
 	if (ftable->priority.expr) {
+		json_t *tmp;
+
 		mpz_export_data(&priority, ftable->priority.expr->value,
 				BYTEORDER_HOST_ENDIAN, sizeof(int));
-	}
 
-	root = nft_json_pack("{s:s, s:s, s:s, s:I, s:s, s:i}",
-			"family", family2str(ftable->handle.family),
-			"name", ftable->handle.flowtable.name,
-			"table", ftable->handle.table.name,
-			"handle", ftable->handle.handle.id,
-			"hook", hooknum2str(NFPROTO_NETDEV, ftable->hook.num),
-			"prio", priority);
+		tmp = nft_json_pack("{s:s, s:i}",
+				    "hook", hooknum2str(NFPROTO_NETDEV,
+							ftable->hook.num),
+				    "prio", priority);
+		json_object_update_new(root, tmp);
+	}
 
 	for (i = 0; i < ftable->dev_array_len; i++) {
 		const char *dev = ftable->dev_array[i];
diff --git a/tests/monitor/testcases/flowtable-simple.t b/tests/monitor/testcases/flowtable-simple.t
index df8eccbd91e0a..b373cca2e0d61 100644
--- a/tests/monitor/testcases/flowtable-simple.t
+++ b/tests/monitor/testcases/flowtable-simple.t
@@ -7,4 +7,4 @@ J {"add": {"flowtable": {"family": "ip", "name": "ft", "table": "t", "handle": 0
 
 I delete flowtable ip t ft
 O -
-J {"delete": {"flowtable": {"family": "ip", "name": "ft", "table": "t", "handle": 0, "hook": "ingress", "prio": 0, "dev": "lo"}}}
+J {"delete": {"flowtable": {"family": "ip", "name": "ft", "table": "t", "handle": 0}}}
-- 
2.49.0





[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux