From: Julien Fortin Date: Thu, 17 Aug 2017 17:36:05 +0000 (-0700) Subject: ip: iplink_xdp.c: add json output support X-Git-Tag: v4.14.0~39^2~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2f26065e254352ec95d92e58ffd478de58fb98d6;p=thirdparty%2Fiproute2.git ip: iplink_xdp.c: add json output support Schema { "attached": { "type": "uint", "attr": "IFLA_XDP_ATTACHED" }, "prog_id": { "type": "uint", "attr": "IFLA_XDP_PROG_ID" } } Signed-off-by: Julien Fortin --- diff --git a/ip/iplink_xdp.c b/ip/iplink_xdp.c index 9ae9ee5d0..3a61076e0 100644 --- a/ip/iplink_xdp.c +++ b/ip/iplink_xdp.c @@ -16,6 +16,7 @@ #include "xdp.h" #include "bpf_util.h" +#include "ip_common.h" extern int force; @@ -92,20 +93,24 @@ void xdp_dump(FILE *fp, struct rtattr *xdp) return; mode = rta_getattr_u8(tb[IFLA_XDP_ATTACHED]); - if (mode == XDP_ATTACHED_NONE) - return; - else if (mode == XDP_ATTACHED_DRV) - fprintf(fp, "xdp"); - else if (mode == XDP_ATTACHED_SKB) - fprintf(fp, "xdpgeneric"); - else if (mode == XDP_ATTACHED_HW) - fprintf(fp, "xdpoffload"); - else - fprintf(fp, "xdp[%u]", mode); + if (is_json_context()) { + print_uint(PRINT_JSON, "attached", NULL, mode); + } else { + if (mode == XDP_ATTACHED_NONE) + return; + else if (mode == XDP_ATTACHED_DRV) + fprintf(fp, "xdp"); + else if (mode == XDP_ATTACHED_SKB) + fprintf(fp, "xdpgeneric"); + else if (mode == XDP_ATTACHED_HW) + fprintf(fp, "xdpoffload"); + else + fprintf(fp, "xdp[%u]", mode); + } if (tb[IFLA_XDP_PROG_ID]) - fprintf(fp, "/id:%u", - rta_getattr_u32(tb[IFLA_XDP_PROG_ID])); + print_uint(PRINT_ANY, "prog_id", "/id:%u", + rta_getattr_u32(tb[IFLA_XDP_PROG_ID])); - fprintf(fp, " "); + print_string(PRINT_FP, NULL, "%c", " "); }