On Fri, 10 Jul 2020 02:50:55 +0200
Julien Fortin <[email protected]> wrote:

> From: Julien Fortin <[email protected]>
> 
> 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 <[email protected]>
> ---
>  bridge/fdb.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/bridge/fdb.c b/bridge/fdb.c
> index d2247e80..198c51d1 100644
> --- a/bridge/fdb.c
> +++ b/bridge/fdb.c
> @@ -62,7 +62,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;
>  }
>  

Printing in non JSON case was also wrong.
i.e.
              ...  state state=0x80
should be:
              ... state 0x80

Let's do that.


The state=xxx value only shows up if the FDB entry has a value bridge command
doesn't understand. The bridge command needs to be able to display the new flag 
values.

Please fixup the two patches and resubmit to iproute2

Reply via email to