Subject: Re: [PATCH iproute2-next v5] ip-link: add support for nolocalbypass in vxlan

From: Ido Schimmel <[email-masked]>
Date: Mon, 22 May 2023 09:15:34 +0300

On Sun, May 21, 2023 at 12:47:41PM -0700, Stephen Hemminger wrote:
> On Sun, 21 May 2023 22:23:25 +0300
> Ido Schimmel <[email-masked]> wrote:
> 
> > +       if (tb[IFLA_VXLAN_LOCALBYPASS])
> > +               print_bool(PRINT_ANY, "localbypass", "localbypass ",
> > +                          rta_getattr_u8(tb[IFLA_VXLAN_LOCALBYPASS]))
> 
> That will not work for non json case.  It will print localbypass whether it is set or not.
> The third argument is a format string used in the print routine.

Yea, replied too late...

Anyway, my main problem is with the JSON output. Looking at other
boolean VXLAN options, we have at least 3 different formats:

1. Only print when "true" for both JSON and non-JSON output. Used for
"external", "vnifilter", "proxy", "rsc", "l2miss", "l3miss",
"remcsum_tx", "remcsum_rx".

2. Print when both "true" and "false" for both JSON and non-JSON output.
Used for "udp_csum", "udp_zero_csum6_tx", "udp_zero_csum6_rx".

3. Print JSON when both "true" and "false" and non-JSON only when
"false". Used for "learning".

I don't think we should be adding another format. We need to decide:

1. What is the canonical format going forward?

2. Do we change the format of existing options?

My preference is:

1. Format 2. Can be implemented in a common helper used for all VXLAN
options.

2. Yes. It makes all the boolean options consistent and avoids future
discussions such as this where a random option is used for a new option.