Hi Hangbin, On Thu, Sep 27, 2018 at 03:28:36PM +0800, Hangbin Liu wrote: > We should only show ttl inherit when IFLA_VXLAN_TTL_INHERIT supplied. > Otherwise show the ttl number, or auto when it is 0. > > Signed-off-by: Hangbin Liu <liuhang...@gmail.com> > --- > ip/iplink_vxlan.c | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/ip/iplink_vxlan.c b/ip/iplink_vxlan.c > index 831f39a..7fc0e2b 100644 > --- a/ip/iplink_vxlan.c > +++ b/ip/iplink_vxlan.c > @@ -145,7 +145,7 @@ static int vxlan_parse_opt(struct link_util *lu, int > argc, char **argv, > NEXT_ARG(); > check_duparg(&attrs, IFLA_VXLAN_TTL, "ttl", *argv); > if (strcmp(*argv, "inherit") == 0) { > - addattr_l(n, 1024, IFLA_VXLAN_TTL_INHERIT, > NULL, 0); > + addattr(n, 1024, IFLA_VXLAN_TTL_INHERIT);
So for VXLAN, the attribute is just added but with a zero value. Looking at respective kernel code, this seems fine. Now I wonder why for Geneve, you set the value to 1 and when displaying explicitly check whether the attribute is there *and* non-zero. OK, looks like Geneve driver always exports IFLA_GENEVE_TTL_INHERIT. Oddly, I can't find where VXLAN driver in kernel does export the IFLA_VXLAN_TTL_INHERIT attribute. Am I missing something? Do you know why handling of the attributes in both drivers differ? Cheers, Phil