iproute2/ip
Andrea Claudi 89ce8012d7 ip-route: fix json formatting for metrics
Setting metrics for routes currently lead to non-parsable
json output. For example:

$ ip link add type dummy
$ ip route add 192.168.2.0 dev dummy0 metric 100 mtu 1000 rto_min 3
$ ip -j route | jq
parse error: ':' not as part of an object at line 1, column 319

Fixing this opening a json object in the metrics array and using
print_string() instead of fprintf().

This is the output for the above commands applying this patch:

$ ip -j route | jq
[
  {
    "dst": "192.168.2.0",
    "dev": "dummy0",
    "scope": "link",
    "metric": 100,
    "flags": [],
    "metrics": [
      {
        "mtu": 1000,
        "rto_min": 3
      }
    ]
  }
]

Fixes: 663c3cb231 ("iproute: implement JSON and color output")
Fixes: 968272e791 ("iproute: refactor metrics print")
Signed-off-by: Andrea Claudi <aclaudi@redhat.com>
Reported-by: Frank Hofmann <fhofmann@cloudflare.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
2019-07-09 17:30:06 -07:00
..
.gitignore Another .gitignore file. 2006-08-08 12:11:23 -07:00
Makefile ip: support for xfrm interfaces 2019-04-05 15:05:00 -07:00
ifcfg ifcfg/rtpr: convert to POSIX shell 2018-01-10 08:26:09 -08:00
ila_common.h SPDX license identifiers 2017-11-24 12:21:35 -08:00
ip.c netns: make netns_{save,restore} static 2019-06-20 14:30:41 -07:00
ip6tunnel.c ip6tunnel: fix 'ip -6 {show|change} dev <name>' cmds 2019-06-10 10:43:09 -07:00
ip_common.h ip: bond: add xstats support 2019-03-15 13:58:16 -07:00
ipaddress.c ip address: do not set mngtmpaddr option for IPv4 addresses 2019-06-28 15:18:28 -07:00
ipaddrlabel.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
ipfou.c ip fou: Support binding FOU ports 2019-04-22 11:42:54 -07:00
ipila.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
ipl2tp.c use print_{,h}hu instead of print_uint when format specifier is %{,h}hu 2019-02-10 19:00:59 -08:00
iplink.c iplink: don't try to get ll addr len when creating an iface 2019-05-30 11:03:20 -07:00
iplink_bond.c ip: bond: add xstats support 2019-03-15 13:58:16 -07:00
iplink_bond_slave.c ip: bond: add xstats support 2019-03-15 13:58:16 -07:00
iplink_bridge.c iplink: bridge: add support for vlan_stats_per_port 2019-04-21 06:47:39 -07:00
iplink_bridge_slave.c ip: bridge: add mcast to unicast config flag 2019-03-22 09:44:49 -07:00
iplink_can.c ip: iplink_can.c: fix json formatting 2018-12-07 09:22:29 -08:00
iplink_dummy.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_geneve.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
iplink_hsr.c ip: iplink_hsr.c: add json output support 2017-08-17 18:02:40 -07:00
iplink_ifb.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_ipoib.c ip: iplink_ipoib.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_ipvlan.c iplink: add ipvtap support 2018-09-20 17:53:56 -07:00
iplink_macvlan.c ip: link_macvlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_netdevsim.c ip: link: add support for netdevsim device type 2018-01-02 20:46:19 -08:00
iplink_nlmon.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_rmnet.c ip: add rmnet initial support 2018-06-15 11:15:14 -07:00
iplink_team.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_vcan.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_vlan.c iplink_vlan: add support for VLAN bridge binding flag 2019-04-26 11:12:58 -07:00
iplink_vrf.c iplink_vrf: Save device index from response for return code 2018-06-01 15:45:09 -04:00
iplink_vxcan.c iplink: Perform most of request buffer setups and checks in iplink_parse() 2018-03-11 17:59:03 -07:00
iplink_vxlan.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
iplink_xdp.c iplink: add support for reporting multiple XDP programs 2018-07-15 13:10:03 -07:00
iplink_xstats.c ip: xstats: add json output support 2019-03-15 13:55:57 -07:00
ipmacsec.c Add support for configuring MACsec gcm-aes-256 cipher type. 2019-06-18 09:55:51 -07:00
ipmaddr.c lib: introduce print_nl 2018-09-11 08:29:33 -07:00
ipmonitor.c ipmonitor: make local variable static 2018-11-19 11:42:44 -08:00
ipmroute.c ipmroute: Prevent overlapping storage of `filter` global 2019-06-18 09:43:29 -07:00
ipneigh.c ipneigh: Print neighbour offload indication 2019-04-21 06:23:23 -07:00
ipnetconf.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
ipnetns.c netns: make netns_{save,restore} static 2019-06-20 14:30:41 -07:00
ipntable.c fix print_0xhex on 32 bit 2018-12-10 14:20:32 -08:00
ipprefix.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
iproute.c ip-route: fix json formatting for metrics 2019-07-09 17:30:06 -07:00
iproute_lwtunnel.c iproute: Set ip/ip6 lwtunnel flags 2019-01-25 09:17:27 +13:00
iprule.c iprule: always print realms keyword for rule 2019-04-24 15:06:15 -07:00
ipseg6.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
iptoken.c ip/iptoken: fix dump error when ipv6 disabled 2019-06-26 14:23:12 -07:00
iptunnel.c utils: Introduce and use nodev() helper routine 2018-03-11 17:58:36 -07:00
iptuntap.c fix print_0xhex on 32 bit 2018-12-10 14:20:32 -08:00
ipvrf.c ip vrf: use hook to change VRF in the child 2019-06-20 14:30:41 -07:00
ipxfrm.c ip xfrm: support setting/printing XFRMA_IF_ID attribute in states/policies 2019-04-11 15:26:43 -07:00
link_gre.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
link_gre6.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
link_ip6tnl.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
link_iptnl.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
link_veth.c iplink: Perform most of request buffer setups and checks in iplink_parse() 2018-03-11 17:59:03 -07:00
link_vti.c fix print_0xhex on 32 bit 2018-12-10 14:20:32 -08:00
link_vti6.c fix print_0xhex on 32 bit 2018-12-10 14:20:32 -08:00
link_xfrm.c ip: support for xfrm interfaces 2019-04-05 15:05:00 -07:00
routef mark shell scripts +x 2018-01-10 08:23:49 -08:00
routel mark shell scripts +x 2018-01-10 08:23:49 -08:00
rtm_map.c drop unneeded include of syslog.h 2017-11-12 16:22:36 -08:00
rtmon.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
rtpr ifcfg/rtpr: convert to POSIX shell 2018-01-10 08:26:09 -08:00
static-syms.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
tcp_metrics.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
tunnel.c Include bsd/string.h only in include/utils.h 2018-11-05 08:38:32 -08:00
tunnel.h iptunnel/ip6tunnel: Use netlink to walk through tunnels list 2018-02-07 16:15:42 -08:00
xfrm.h xfrm: add option to hide keys in state output 2019-01-21 08:31:20 -08:00
xfrm_monitor.c xfrm: add option to hide keys in state output 2019-01-21 08:31:20 -08:00
xfrm_policy.c ip-xfrm: Respect family in deleteall and list commands 2019-05-06 13:32:44 -07:00
xfrm_state.c ip-xfrm: Respect family in deleteall and list commands 2019-05-06 13:32:44 -07:00