From: Stephen Hemminger Date: Tue, 5 Sep 2017 16:33:29 +0000 (-0700) Subject: Merge branch 'master' into net-next X-Git-Tag: v4.14.0~39^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a17a01145ff693444620c33c7609d7c28d1294e7;p=thirdparty%2Fiproute2.git Merge branch 'master' into net-next --- a17a01145ff693444620c33c7609d7c28d1294e7 diff --cc ip/ipaddress.c index 201225f74,dbdd839cf..979714502 --- a/ip/ipaddress.c +++ b/ip/ipaddress.c @@@ -1142,23 -835,14 +1142,23 @@@ int print_linkinfo(const struct sockadd print_link_flags(fp, ifi->ifi_flags, m_flag); if (tb[IFLA_MTU]) - fprintf(fp, "mtu %u ", rta_getattr_u32(tb[IFLA_MTU])); + print_int(PRINT_ANY, + "mtu", "mtu %u ", + rta_getattr_u32(tb[IFLA_MTU])); if (tb[IFLA_XDP]) - xdp_dump(fp, tb[IFLA_XDP]); + xdp_dump(fp, tb[IFLA_XDP], do_link, false); if (tb[IFLA_QDISC]) - fprintf(fp, "qdisc %s ", rta_getattr_str(tb[IFLA_QDISC])); + print_string(PRINT_ANY, + "qdisc", + "qdisc %s ", + rta_getattr_str(tb[IFLA_QDISC])); if (tb[IFLA_MASTER]) { SPRINT_BUF(b1); - fprintf(fp, "master %s ", ll_idx_n2a(rta_getattr_u32(tb[IFLA_MASTER]), b1)); + + print_string(PRINT_ANY, + "master", + "master %s ", + ll_idx_n2a(rta_getattr_u32(tb[IFLA_MASTER]), b1)); } if (tb[IFLA_OPERSTATE]) @@@ -1306,17 -951,16 +1306,19 @@@ } } - if ((do_link || show_details) && tb[IFLA_IFALIAS]) { - fprintf(fp, "%s alias %s", _SL_, - rta_getattr_str(tb[IFLA_IFALIAS])); + print_string(PRINT_FP, NULL, "%s ", _SL_); + print_string(PRINT_ANY, + "ifalias", + "alias %s", + rta_getattr_str(tb[IFLA_IFALIAS])); } + if ((do_link || show_details) && tb[IFLA_XDP]) + xdp_dump(fp, tb[IFLA_XDP], true, true); + if (do_link && show_stats) { - fprintf(fp, "%s", _SL_); + print_string(PRINT_FP, NULL, "%s", _SL_); __print_link_stats(fp, tb); } diff --cc ip/iplink_xdp.c index 3a61076e0,5aa66fe7b..71f779825 --- a/ip/iplink_xdp.c +++ b/ip/iplink_xdp.c @@@ -93,24 -93,30 +94,34 @@@ void xdp_dump(FILE *fp, struct rtattr * return; mode = rta_getattr_u8(tb[IFLA_XDP_ATTACHED]); - if (mode == XDP_ATTACHED_NONE) - return; - else if (details && link) - fprintf(fp, "%s prog/xdp", _SL_); - 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]) - prog_id = rta_getattr_u32(tb[IFLA_XDP_PROG_ID]); - if (!details) { - if (prog_id && !link) - fprintf(fp, "/id:%u", prog_id); - fprintf(fp, " "); - return; - } - - if (prog_id) { - fprintf(fp, " "); - bpf_dump_prog_info(fp, prog_id); + if (is_json_context()) { + print_uint(PRINT_JSON, "attached", NULL, mode); + } else { + if (mode == XDP_ATTACHED_NONE) + return; ++ else if (details && link) ++ fprintf(fp, "%s prog/xdp", _SL_); + 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]) - print_uint(PRINT_ANY, "prog_id", "/id:%u", - rta_getattr_u32(tb[IFLA_XDP_PROG_ID])); ++ if (tb[IFLA_XDP_PROG_ID]) ++ prog_id = rta_getattr_u32(tb[IFLA_XDP_PROG_ID]); ++ if (!details) { ++ if (prog_id && !link) ++ fprintf(fp, "/id:%u", prog_id); ++ fprintf(fp, " "); ++ return; ++ } + - print_string(PRINT_FP, NULL, "%c", " "); ++ if (prog_id) { ++ fprintf(fp, " "); ++ bpf_dump_prog_info(fp, prog_id); ++ } + } }