]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
iplink: Publish a function to format MPLS stats
authorPetr Machata <petrm@nvidia.com>
Mon, 9 May 2022 13:59:55 +0000 (15:59 +0200)
committerDavid Ahern <dsahern@kernel.org>
Thu, 12 May 2022 17:08:06 +0000 (11:08 -0600)
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>
ip/ip_common.h
ip/iplink.c

index 9eeeb38772b429986a6b4f3e13189454fee97014..63618f0fbcf026667e2e01d2958040c631234ce9 100644 (file)
@@ -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_ */
index b87d9bcd387ea82073587d9a7deccb2339f34dec..c3ff8a5a224655e4801dc8fd943a14ba49e53e2b 100644 (file)
@@ -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;