From 6af6f02cce42c00f3ee48a58a5c4f80aae9faf93 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Tue, 22 Nov 2022 20:16:07 -0800 Subject: tc: add json support to size table Fix the JSON output if size addaption table is used. Example: [ { "kind": "fq_codel", "handle": "1:", "dev": "enp2s0", "root": true, "refcnt": 2, "options": { "limit": 10240, "flows": 1024, "quantum": 1514, "target": 4999, "interval": 99999, "memory_limit": 33554432, "ecn": true, "drop_batch": 64 }, "stab": { "overhead": 30, "mpu": 68, "mtu": 2047, "tsize": 512 } } ] Remove fixed prefix arg and no longer needed fp arg. Signed-off-by: Stephen Hemminger --- tc/tc_common.h | 2 +- tc/tc_qdisc.c | 2 +- tc/tc_stab.c | 22 ++++++++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) (limited to 'tc') diff --git a/tc/tc_common.h b/tc/tc_common.h index 58dc9d6a..f1561d80 100644 --- a/tc/tc_common.h +++ b/tc/tc_common.h @@ -16,7 +16,7 @@ int print_action(struct nlmsghdr *n, void *arg); int print_filter(struct nlmsghdr *n, void *arg); int print_qdisc(struct nlmsghdr *n, void *arg); int print_class(struct nlmsghdr *n, void *arg); -void print_size_table(FILE *fp, const char *prefix, struct rtattr *rta); +void print_size_table(struct rtattr *rta); struct tc_estimator; int parse_estimator(int *p_argc, char ***p_argv, struct tc_estimator *est); diff --git a/tc/tc_qdisc.c b/tc/tc_qdisc.c index b79029d9..33a6665e 100644 --- a/tc/tc_qdisc.c +++ b/tc/tc_qdisc.c @@ -329,7 +329,7 @@ int print_qdisc(struct nlmsghdr *n, void *arg) print_nl(); if (show_details && tb[TCA_STAB]) { - print_size_table(fp, " ", tb[TCA_STAB]); + print_size_table(tb[TCA_STAB]); print_nl(); } diff --git a/tc/tc_stab.c b/tc/tc_stab.c index c61ecfd2..06dc1b13 100644 --- a/tc/tc_stab.c +++ b/tc/tc_stab.c @@ -103,7 +103,7 @@ int parse_size_table(int *argcp, char ***argvp, struct tc_sizespec *sp) return 0; } -void print_size_table(FILE *fp, const char *prefix, struct rtattr *rta) +void print_size_table(struct rtattr *rta) { struct rtattr *tb[TCA_STAB_MAX + 1]; @@ -117,17 +117,23 @@ void print_size_table(FILE *fp, const char *prefix, struct rtattr *rta) memcpy(&s, RTA_DATA(tb[TCA_STAB_BASE]), MIN(RTA_PAYLOAD(tb[TCA_STAB_BASE]), sizeof(s))); - fprintf(fp, "%s", prefix); + print_string(PRINT_FP, NULL, " ", NULL); + if (s.linklayer) - fprintf(fp, "linklayer %s ", - sprint_linklayer(s.linklayer, b1)); + print_string(PRINT_ANY, "linklayer", + "linklayer %s ", + sprint_linklayer(s.linklayer, b1)); if (s.overhead) - fprintf(fp, "overhead %d ", s.overhead); + print_int(PRINT_ANY, "overhead", + "overhead %d ", s.overhead); if (s.mpu) - fprintf(fp, "mpu %u ", s.mpu); + print_uint(PRINT_ANY, "mpu", + "mpu %u ", s.mpu); if (s.mtu) - fprintf(fp, "mtu %u ", s.mtu); + print_uint(PRINT_ANY, "mtu", + "mtu %u ", s.mtu); if (s.tsize) - fprintf(fp, "tsize %u ", s.tsize); + print_uint(PRINT_ANY, "tsize", + "tsize %u ", s.tsize); } } -- cgit v1.2.1