diff --git a/ip/ipaddress.c b/ip/ipaddress.c index 8057011e..f150d919 100644 --- a/ip/ipaddress.c +++ b/ip/ipaddress.c @@ -74,7 +74,7 @@ static void usage(void) fprintf(stderr, "CONFFLAG := [ home | nodad | mngtmpaddr | noprefixroute | autojoin ]\n"); fprintf(stderr, "LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]\n"); fprintf(stderr, "LFT := forever | SECONDS\n"); - fprintf(stderr, "TYPE := { vlan | veth | vcan | dummy | ifb | macvlan | macvtap |\n"); + fprintf(stderr, "TYPE := { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |\n"); fprintf(stderr, " bridge | bond | ipoib | ip6tnl | ipip | sit | vxlan | lowpan |\n"); fprintf(stderr, " gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan | vti |\n"); fprintf(stderr, " nlmon | can | bond_slave | ipvlan | geneve | bridge_slave |\n"); diff --git a/ip/iplink.c b/ip/iplink.c index 8ea5a99a..06b34427 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -118,7 +118,7 @@ void iplink_usage(void) "\n" " ip link help [ TYPE ]\n" "\n" - "TYPE := { vlan | veth | vcan | dummy | ifb | macvlan | macvtap |\n" + "TYPE := { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |\n" " bridge | bond | team | ipoib | ip6tnl | ipip | sit | vxlan |\n" " gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan |\n" " vti | nlmon | team_slave | bond_slave | ipvlan | geneve |\n" diff --git a/ip/link_ip6tnl.c b/ip/link_ip6tnl.c index 43287ab3..af796c30 100644 --- a/ip/link_ip6tnl.c +++ b/ip/link_ip6tnl.c @@ -345,6 +345,9 @@ 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_FLAGS]) flags = rta_getattr_u32(tb[IFLA_IPTUN_FLAGS]); diff --git a/ip/link_iptnl.c b/ip/link_iptnl.c index 4940b8b0..2804b8f4 100644 --- a/ip/link_iptnl.c +++ b/ip/link_iptnl.c @@ -393,6 +393,9 @@ 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_REMOTE]) { unsigned int addr = rta_getattr_u32(tb[IFLA_IPTUN_REMOTE]); diff --git a/tc/m_action.c b/tc/m_action.c index 13f942bf..fc422364 100644 --- a/tc/m_action.c +++ b/tc/m_action.c @@ -378,7 +378,7 @@ tc_print_action(FILE *f, const struct rtattr *arg, unsigned short tot_acts) } } - close_json_object(); + close_json_array(PRINT_JSON, NULL); return 0; } @@ -528,7 +528,7 @@ static int tc_action_gd(int cmd, unsigned int flags, req.n.nlmsg_seq = rth.dump = ++rth.seq; - if (rtnl_talk(&rth, &req.n, &ans) < 0) { + if (rtnl_talk(&rth, &req.n, cmd == RTM_DELACTION ? NULL : &ans) < 0) { fprintf(stderr, "We have an error talking to the kernel\n"); return 1; }