diff options
author | Petr Machata <petrm@nvidia.com> | 2022-05-09 15:59:55 +0200 |
---|---|---|
committer | David Ahern <dsahern@kernel.org> | 2022-05-12 11:08:06 -0600 |
commit | dff392fd86ee6085737560c88875b35628888e91 (patch) | |
tree | 5e7bfefc257e80a152f1efeec0ee5c7fc225fc48 | |
parent | 72623b73c4eaceb0267f110e55c7bc1c342267b1 (diff) | |
download | iproute2-dff392fd86ee6085737560c88875b35628888e91.tar.gz |
iplink: Publish a function to format MPLS stats
Extract from print_mpls_stats() a new function, print_mpls_link_stats(),
make it non-static and publish in the header file.
Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David Ahern <dsahern@kernel.org>
-rw-r--r-- | ip/ip_common.h | 3 | ||||
-rw-r--r-- | ip/iplink.c | 36 |
2 files changed, 24 insertions, 15 deletions
diff --git a/ip/ip_common.h b/ip/ip_common.h index 9eeeb3877..63618f0fb 100644 --- a/ip/ip_common.h +++ b/ip/ip_common.h @@ -3,6 +3,7 @@ #define _IP_COMMON_H_ #include <stdbool.h> +#include <linux/mpls.h> #include "json_print.h" @@ -202,4 +203,6 @@ void print_rta_gateway(FILE *fp, unsigned char family, void size_columns(unsigned int cols[], unsigned int n, ...); void print_stats64(FILE *fp, struct rtnl_link_stats64 *s, const struct rtattr *carrier_changes, const char *what); +void print_mpls_link_stats(FILE *fp, const struct mpls_link_stats *stats, + const char *indent); #endif /* _IP_COMMON_H_ */ diff --git a/ip/iplink.c b/ip/iplink.c index b87d9bcd3..c3ff8a5a2 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -1517,10 +1517,9 @@ static int do_set(int argc, char **argv) } #endif /* IPLINK_IOCTL_COMPAT */ -static void print_mpls_stats(FILE *fp, struct rtattr *attr) +void print_mpls_link_stats(FILE *fp, const struct mpls_link_stats *stats, + const char *indent) { - struct rtattr *mrtb[MPLS_STATS_MAX+1]; - struct mpls_link_stats *stats; unsigned int cols[] = { strlen("*X: bytes"), strlen("packets"), @@ -1529,14 +1528,6 @@ static void print_mpls_stats(FILE *fp, struct rtattr *attr) strlen("noroute"), }; - parse_rtattr(mrtb, MPLS_STATS_MAX, RTA_DATA(attr), - RTA_PAYLOAD(attr)); - if (!mrtb[MPLS_STATS_LINK]) - return; - - stats = RTA_DATA(mrtb[MPLS_STATS_LINK]); - fprintf(fp, " mpls:\n"); - size_columns(cols, ARRAY_SIZE(cols), stats->rx_bytes, stats->rx_packets, stats->rx_errors, stats->rx_dropped, stats->rx_noroute); @@ -1544,11 +1535,11 @@ static void print_mpls_stats(FILE *fp, struct rtattr *attr) stats->tx_bytes, stats->tx_packets, stats->tx_errors, stats->tx_dropped, 0); - fprintf(fp, " RX: %*s %*s %*s %*s %*s%s", + fprintf(fp, "%sRX: %*s %*s %*s %*s %*s%s", indent, cols[0] - 4, "bytes", cols[1], "packets", cols[2], "errors", cols[3], "dropped", cols[4], "noroute", _SL_); - fprintf(fp, " "); + fprintf(fp, "%s", indent); print_num(fp, cols[0], stats->rx_bytes); print_num(fp, cols[1], stats->rx_packets); print_num(fp, cols[2], stats->rx_errors); @@ -1556,10 +1547,10 @@ static void print_mpls_stats(FILE *fp, struct rtattr *attr) print_num(fp, cols[4], stats->rx_noroute); fprintf(fp, "\n"); - fprintf(fp, " TX: %*s %*s %*s %*s%s", + fprintf(fp, "%sTX: %*s %*s %*s %*s%s", indent, cols[0] - 4, "bytes", cols[1], "packets", cols[2], "errors", cols[3], "dropped", _SL_); - fprintf(fp, " "); + fprintf(fp, "%s", indent); print_num(fp, cols[0], stats->tx_bytes); print_num(fp, cols[1], stats->tx_packets); print_num(fp, cols[2], stats->tx_errors); @@ -1567,6 +1558,21 @@ static void print_mpls_stats(FILE *fp, struct rtattr *attr) fprintf(fp, "\n"); } +static void print_mpls_stats(FILE *fp, struct rtattr *attr) +{ + struct rtattr *mrtb[MPLS_STATS_MAX+1]; + struct mpls_link_stats *stats; + + parse_rtattr(mrtb, MPLS_STATS_MAX, RTA_DATA(attr), + RTA_PAYLOAD(attr)); + if (!mrtb[MPLS_STATS_LINK]) + return; + + stats = RTA_DATA(mrtb[MPLS_STATS_LINK]); + fprintf(fp, " mpls:\n"); + print_mpls_link_stats(fp, stats, " "); +} + static void print_af_stats_attr(FILE *fp, int ifindex, struct rtattr *attr) { bool if_printed = false; |