aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Hemminger <stephen@networkplumber.org>2023-04-14 12:42:48 -0700
committerStephen Hemminger <stephen@networkplumber.org>2023-04-14 12:42:48 -0700
commit0f32ef97babcbe77140a69218917937e6a50fb6c (patch)
treea2275d08a6883b8fb61ccdfff5da85513d3c01e4
parentf5db8310e9391b8768f9452f8e6ed34065f1af5e (diff)
downloadiproute2-0f32ef97babcbe77140a69218917937e6a50fb6c.tar.gz
iproute_lwtunnel: fix JSON output
The same tag "dst" was being used for both the route destination and the encap destination. This made it hard for JSON parsers. Change to put the per-encap information under a nested JSON object (similar to ip link type info). Original output [ { "dst": "192.168.11.0/24", "encap": "ip6", "id": 0, "src": "::", "dst": "fd00::c0a8:2dd", "hoplimit": 0, "tc": 0, "protocol": "5", "scope": "link", "flags": [ ] } ] Revised output [ { "dst": "192.168.11.0/24", "encap": { "encap_type": "ip6", "id": 0, "src": "::", "dst": "fd00::c0a8:2dd", "hoplimit": 0, "tc": 0 }, "protocol": "5", "scope": "link", "flags": [ ] } ] Reported-by: Lars Ekman <uablrek@gmail.com> Fixes: 663c3cb23103 ("iproute: implement JSON and color output") Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r--ip/iproute_lwtunnel.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c
index 8b7f3742b..9fcbdeac3 100644
--- a/ip/iproute_lwtunnel.c
+++ b/ip/iproute_lwtunnel.c
@@ -840,8 +840,9 @@ void lwt_print_encap(FILE *fp, struct rtattr *encap_type,
return;
et = rta_getattr_u16(encap_type);
-
- print_string(PRINT_ANY, "encap", " encap %s ", format_encap_type(et));
+ open_json_object("encap");
+ print_string(PRINT_ANY, "encap_type", " encap %s ",
+ format_encap_type(et));
switch (et) {
case LWTUNNEL_ENCAP_MPLS:
@@ -875,6 +876,7 @@ void lwt_print_encap(FILE *fp, struct rtattr *encap_type,
print_encap_xfrm(fp, encap);
break;
}
+ close_json_object();
}
static struct ipv6_sr_hdr *parse_srh(char *segbuf, int hmac, bool encap)