]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
devlink: Fix binary values print
authorAya Levin <ayal@mellanox.com>
Wed, 10 Jul 2019 11:03:20 +0000 (14:03 +0300)
committerStephen Hemminger <stephen@networkplumber.org>
Mon, 15 Jul 2019 20:50:55 +0000 (13:50 -0700)
Fix function pr_out_binary_value() to start printing the binary buffer
from offset 0 instead of offset 1. Remove redundant new line at the
beginning of the output

Example:
With patch:
 mlx5e_txqsq:
   05 00 00 00 05 00 00 00 01 00 00 00 00 00 00 00
   00 00 00 00 00 00 00 00 8e 6e 3a 13 07 00 00 00
   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   c0
Without patch
  mlx5e_txqsq:

  00 00 00 05 00 00 00 01 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 8e 6e 3a 13 07 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0

Fixes: 844a61764c6f ("devlink: Add helper functions for name and value separately")
Signed-off-by: Aya Levin <ayal@mellanox.com>
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
devlink/devlink.c

index 637cb5fc40de3ab8fe379e9f1db2db8c90fa75aa..6b28138d589553530d2a0eed5a15ce31dfc628e6 100644 (file)
@@ -1779,29 +1779,31 @@ static void pr_out_uint64_value(struct dl *dl, uint64_t value)
                pr_out(" %"PRIu64, value);
 }
 
+static bool is_binary_eol(int i)
+{
+       return !(i%16);
+}
+
 static void pr_out_binary_value(struct dl *dl, uint8_t *data, uint32_t len)
 {
-       int i = 1;
+       int i = 0;
 
        if (dl->json_output)
                jsonw_start_array(dl->jw);
-       else
-               pr_out("\n");
 
        while (i < len) {
-               if (dl->json_output) {
+               if (dl->json_output)
                        jsonw_printf(dl->jw, "%d", data[i]);
-               } else {
-                       pr_out(" %02x", data[i]);
-                       if (!(i % 16))
-                               pr_out("\n");
-               }
+               else
+                       pr_out("%02x ", data[i]);
                i++;
+               if (!dl->json_output && is_binary_eol(i))
+                       __pr_out_newline();
        }
        if (dl->json_output)
                jsonw_end_array(dl->jw);
-       else if ((i - 1) % 16)
-               pr_out("\n");
+       else if (!is_binary_eol(i))
+               __pr_out_newline();
 }
 
 static void pr_out_str_value(struct dl *dl, const char *value)