Support packets in flight
[samplevnf.git] / VNFs / DPPD-PROX / stats_parser.c
index 37e1781..c942807 100644 (file)
@@ -31,6 +31,7 @@
 #include "stats_global.h"
 #include "stats_prio_task.h"
 #include "stats_irq.h"
+#include "prox_compat.h"
 
 struct stats_path_str {
        const char *str;
@@ -149,6 +150,23 @@ static uint64_t sp_task_drop_handled(int argc, const char *argv[])
        return stats_get_task_stats_sample(c, t, 1)->drop_handled;
 }
 
+static uint64_t sp_task_rx_non_dp(int argc, const char *argv[])
+{
+       struct task_stats_sample *last;
+       uint32_t c, t;
+       if (args_to_core_task(argv[0], argv[1], &c, &t))
+               return -1;
+       return stats_get_task_stats_sample(c, t, 1)->rx_non_dp;
+}
+
+static uint64_t sp_task_tx_non_dp(int argc, const char *argv[])
+{
+       struct task_stats_sample *last;
+       uint32_t c, t;
+       if (args_to_core_task(argv[0], argv[1], &c, &t))
+               return -1;
+       return stats_get_task_stats_sample(c, t, 1)->tx_non_dp;
+}
 static uint64_t sp_task_rx_bytes(int argc, const char *argv[])
 {
        return -1;
@@ -790,6 +808,8 @@ struct stats_path_str stats_paths[] = {
        {"task.core(#).task(#).rx_prio(#)", sp_task_rx_prio},
        {"task.core(#).task(#).max_irq", sp_task_max_irq},
        {"task.core(#).task(#).irq(#)", sp_task_irq},
+       {"task.core(#).task(#).rx_non_dp", sp_task_rx_non_dp},
+       {"task.core(#).task(#).tx_non_dp", sp_task_tx_non_dp},
 
        {"port(#).no_mbufs", sp_port_no_mbufs},
        {"port(#).ierrors", sp_port_ierrors},
@@ -891,7 +911,7 @@ uint64_t stats_parser_get(const char *stats_path)
 
        char stats_path_cpy[128];
 
-       strncpy(stats_path_cpy, stats_path, sizeof(stats_path_cpy));
+       prox_strncpy(stats_path_cpy, stats_path, sizeof(stats_path_cpy));
        stats_path_len = strlen(stats_path);
 
        size_t max_argc = 16;