From bce17b0bb5a28eb87b96c2aa48bb5c6a28313e11 Mon Sep 17 00:00:00 2001 From: Ilya Maximets Date: Wed, 18 Oct 2023 22:46:10 +0200 Subject: [PATCH] tc: Improve logging of mismatched actions. Currently we log the 980-ish byte long tc_action structure as a single long hex string. That is very hard to read and hard to spot the difference between two. And most of the fields are zero. Use the sparse hex dump instead as we do for keys already. Ex.: Action 1 mismatch: - Expected Action: 00000000 f0 3c 00 00 01 00 00 00-00 00 00 00 00 00 00 00 000003d0 00 00 00 00 ff ff ff ff- - Received Action: 00000000 f0 3c 00 00 01 01 00 00-00 00 00 00 00 00 00 00 000003d0 00 00 00 00 ff ff ff ff- Without the change, each action would be a 1900+ characters long string of mostly zeroes. Acked-by: Simon Horman Acked-by: Eelco Chaudron Signed-off-by: Ilya Maximets --- lib/tc.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/lib/tc.c b/lib/tc.c index bbadb6972af..c4ae6d355a5 100644 --- a/lib/tc.c +++ b/lib/tc.c @@ -3189,15 +3189,13 @@ log_tc_flower_match(const char *msg, ds_put_cstr(&s, "\nExpected Actions:\n"); for (i = 0, action = a->actions; i < a->action_count; i++, action++) { - ds_put_cstr(&s, " - "); - ds_put_hex(&s, action, sizeof *action); - ds_put_cstr(&s, "\n"); + ds_put_format(&s, " - %d -\n", i); + ds_put_sparse_hex_dump(&s, action, sizeof *action, 0, false); } - ds_put_cstr(&s, "Received Actions:\n"); + ds_put_cstr(&s, "\nReceived Actions:\n"); for (i = 0, action = b->actions; i < b->action_count; i++, action++) { - ds_put_cstr(&s, " - "); - ds_put_hex(&s, action, sizeof *action); - ds_put_cstr(&s, "\n"); + ds_put_format(&s, " - %d -\n", i); + ds_put_sparse_hex_dump(&s, action, sizeof *action, 0, false); } } else { /* Only dump the delta in actions. */ @@ -3206,12 +3204,13 @@ log_tc_flower_match(const char *msg, for (int i = 0; i < a->action_count; i++, action_a++, action_b++) { if (memcmp(action_a, action_b, sizeof *action_a)) { - ds_put_format(&s, - "\nAction %d mismatch:\n - Expected Action: ", - i); - ds_put_hex(&s, action_a, sizeof *action_a); - ds_put_cstr(&s, "\n - Received Action: "); - ds_put_hex(&s, action_b, sizeof *action_b); + ds_put_format(&s, "\nAction %d mismatch:\n" + " - Expected Action:\n", i); + ds_put_sparse_hex_dump(&s, action_a, sizeof *action_a, + 0, false); + ds_put_cstr(&s, " - Received Action:\n"); + ds_put_sparse_hex_dump(&s, action_b, sizeof *action_b, + 0, false); } } }