[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8c523ff76968b72df235c76a27fa9c3d96cf3b2b.1652104101.git.petrm@nvidia.com>
Date: Mon, 9 May 2022 15:59:55 +0200
From: Petr Machata <petrm@...dia.com>
To: <netdev@...r.kernel.org>
CC: David Ahern <dsahern@...il.com>, Ido Schimmel <idosch@...dia.com>,
"Petr Machata" <petrm@...dia.com>
Subject: [PATCH iproute2-next 02/10] 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@...dia.com>
Reviewed-by: Ido Schimmel <idosch@...dia.com>
---
ip/ip_common.h | 3 +++
ip/iplink.c | 36 +++++++++++++++++++++---------------
2 files changed, 24 insertions(+), 15 deletions(-)
diff --git a/ip/ip_common.h b/ip/ip_common.h
index 9eeeb387..63618f0f 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 b87d9bcd..c3ff8a5a 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;
--
2.31.1
Powered by blists - more mailing lists