Print only "external" if collect meta data attribute is given: rest of parameters are irrelevant. This is to follow gre6.
For JSON output use "collect_metadata" for iptnl, ip6tnl and gre to match with vxlan, geneve and gre6 modules. Signed-off-by: Serhey Popovych <serhe.popov...@gmail.com> --- ip/link_gre.c | 27 ++++++++++++--------------- ip/link_ip6tnl.c | 6 ++++-- ip/link_iptnl.c | 6 ++++-- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/ip/link_gre.c b/ip/link_gre.c index 674603b..131a087 100644 --- a/ip/link_gre.c +++ b/ip/link_gre.c @@ -395,7 +395,7 @@ get_failed: return 0; } -static void gre_print_direct_opt(FILE *f, struct rtattr *tb[]) +static void gre_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) { char s2[64]; const char *local = "any"; @@ -405,6 +405,14 @@ static void gre_print_direct_opt(FILE *f, struct rtattr *tb[]) __u8 ttl = 0; __u8 tos = 0; + if (!tb) + return; + + if (tb[IFLA_GRE_COLLECT_METADATA]) { + print_bool(PRINT_ANY, "collect_metadata", "external", true); + return; + } + if (tb[IFLA_GRE_REMOTE]) { unsigned int addr = rta_getattr_u32(tb[IFLA_GRE_REMOTE]); @@ -455,6 +463,9 @@ static void gre_print_direct_opt(FILE *f, struct rtattr *tb[]) print_bool(PRINT_JSON, "pmtudisc", NULL, true); } + if (tb[IFLA_GRE_IGNORE_DF] && rta_getattr_u8(tb[IFLA_GRE_IGNORE_DF])) + print_bool(PRINT_ANY, "ignore_df", "ignore-df ", true); + if (tb[IFLA_GRE_IFLAGS]) iflags = rta_getattr_u16(tb[IFLA_GRE_IFLAGS]); @@ -488,20 +499,6 @@ static void gre_print_direct_opt(FILE *f, struct rtattr *tb[]) "fwmark", "fwmark 0x%x ", fwmark); } } -} - -static void gre_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) -{ - if (!tb) - return; - - if (!tb[IFLA_GRE_COLLECT_METADATA]) - gre_print_direct_opt(f, tb); - else - print_bool(PRINT_ANY, "external", "external ", true); - - if (tb[IFLA_GRE_IGNORE_DF] && rta_getattr_u8(tb[IFLA_GRE_IGNORE_DF])) - print_bool(PRINT_ANY, "ignore_df", "ignore-df ", true); if (tb[IFLA_GRE_ERSPAN_INDEX]) { __u32 erspan_idx = rta_getattr_u32(tb[IFLA_GRE_ERSPAN_INDEX]); diff --git a/ip/link_ip6tnl.c b/ip/link_ip6tnl.c index 8f5c9bd..e4db643 100644 --- a/ip/link_ip6tnl.c +++ b/ip/link_ip6tnl.c @@ -341,8 +341,10 @@ static void ip6tunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb if (!tb) return; - if (tb[IFLA_IPTUN_COLLECT_METADATA]) - print_bool(PRINT_ANY, "external", "external ", true); + if (tb[IFLA_IPTUN_COLLECT_METADATA]) { + print_bool(PRINT_ANY, "collect_metadata", "external", true); + return; + } if (tb[IFLA_IPTUN_FLAGS]) flags = rta_getattr_u32(tb[IFLA_IPTUN_FLAGS]); diff --git a/ip/link_iptnl.c b/ip/link_iptnl.c index ce3855c..93a1eb4 100644 --- a/ip/link_iptnl.c +++ b/ip/link_iptnl.c @@ -370,8 +370,10 @@ static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[ if (!tb) return; - if (tb[IFLA_IPTUN_COLLECT_METADATA]) - print_bool(PRINT_ANY, "external", "external ", true); + if (tb[IFLA_IPTUN_COLLECT_METADATA]) { + print_bool(PRINT_ANY, "collect_metadata", "external", true); + return; + } if (tb[IFLA_IPTUN_PROTO]) { switch (rta_getattr_u8(tb[IFLA_IPTUN_PROTO])) { -- 1.7.10.4