From d9aefbc0b865a8038883334ca8f913dc307390ea Mon Sep 17 00:00:00 2001 From: Serhey Popovych Date: Tue, 2 Jan 2018 23:27:58 +0200 Subject: [PATCH] link_iptnl: Print tunnel mode Tunnel mode does not appear in parameters print for iptnl supported tunnels like ipip and sit, while printed for ip6tnl. Print tunnel mode as "proto" field name for JSON and without any name when printing to cli to follow ip6tnl behaviour. For non JSON output we have: $ ip -d link show dev sit1 Before: ------- 17: sit1@NONE: mtu 1480 qdisc noop state DOWN ... link/sit X.X.X.X brd 0.0.0.0 promiscuity 0 sit remote any local X.X.X.X ... ~~~ After: ------ 17: sit1@NONE: mtu 1480 qdisc noop state DOWN ... link/sit X.X.X.X brd 0.0.0.0 promiscuity 0 sit any remote any local X.X.X.X ... ^^^ Signed-off-by: Serhey Popovych --- ip/link_iptnl.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ip/link_iptnl.c b/ip/link_iptnl.c index d4d935bb..b6ef95df 100644 --- a/ip/link_iptnl.c +++ b/ip/link_iptnl.c @@ -372,6 +372,23 @@ static void iptunnel_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[ if (tb[IFLA_IPTUN_COLLECT_METADATA]) print_bool(PRINT_ANY, "external", "external ", true); + if (tb[IFLA_IPTUN_PROTO]) { + switch (rta_getattr_u8(tb[IFLA_IPTUN_PROTO])) { + case IPPROTO_IPIP: + print_string(PRINT_ANY, "proto", "%s ", "ipip"); + break; + case IPPROTO_IPV6: + print_string(PRINT_ANY, "proto", "%s ", "ip6ip"); + break; + case IPPROTO_MPLS: + print_string(PRINT_ANY, "proto", "%s ", "mplsip"); + break; + case 0: + print_string(PRINT_ANY, "proto", "%s ", "any"); + break; + } + } + if (tb[IFLA_IPTUN_REMOTE]) { unsigned int addr = rta_getattr_u32(tb[IFLA_IPTUN_REMOTE]);