]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
bridge: fdb show: fix fdb entry state output for json context
authorJulien Fortin <julien@cumulusnetworks.com>
Wed, 29 Jul 2020 13:04:25 +0000 (15:04 +0200)
committerStephen Hemminger <stephen@networkplumber.org>
Thu, 30 Jul 2020 01:08:46 +0000 (18:08 -0700)
bridge json fdb show is printing an incorrect / non-machine readable
value, when using -j (json output) we are expecting machine readable
data that shouldn't require special handling/parsing.

$ bridge -j fdb show | \
python -c \
'import sys,json;print(json.dumps(json.loads(sys.stdin.read()),indent=4))'
[
    {
"master": "br0",
"mac": "56:23:28:4f:4f:e5",
"flags": [],
"ifname": "vx0",
"state": "state=0x80"  <<<<<<<<< with the patch: "state": "0x80"
    }
]

Fixes: c7c1a1ef51aea7c ("bridge: colorize output and use JSON print library")
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
bridge/fdb.c

index 118fd52381280a20e403f02679fdcba0b9b3cc0c..06a2254b7de3443d340963d3a238de73ae14723b 100644 (file)
@@ -64,7 +64,10 @@ static const char *state_n2a(unsigned int s)
        if (s & NUD_REACHABLE)
                return "";
 
-       sprintf(buf, "state=%#x", s);
+       if (is_json_context())
+               sprintf(buf, "%#x", s);
+       else
+               sprintf(buf, "state=%#x", s);
        return buf;
 }