urpf: Allow locally generated packets on TX
[vpp.git] / src / vpp / app / vpp_get_stats.c
index c1a5acb..d13e4d9 100644 (file)
@@ -19,7 +19,6 @@
 
 #include <vpp-api/client/stat_client.h>
 #include <vlib/vlib.h>
-#include <vpp/stats/stats.h>
 
 static int
 stat_poll_loop (u8 ** patterns)
@@ -81,13 +80,18 @@ stat_poll_loop (u8 ** patterns)
              break;
 
            case STAT_DIR_TYPE_ERROR_INDEX:
-             fformat (stdout, "%llu %s\n", res[i].error_value, res[i].name);
+             for (j = 0; j < vec_len (res[i].error_vector); j++)
+               fformat (stdout, "%llu %s\n", res[i].error_vector[j],
+                        res[i].name);
              break;
 
            case STAT_DIR_TYPE_SCALAR_INDEX:
              fformat (stdout, "%.2f %s\n", res[i].scalar_value, res[i].name);
              break;
 
+           case STAT_DIR_TYPE_EMPTY:
+             break;
+
            default:
              printf ("Unknown value\n");
              ;
@@ -193,7 +197,9 @@ reconnect:
          switch (res[i].type)
            {
            case STAT_DIR_TYPE_COUNTER_VECTOR_SIMPLE:
-             for (k = 0; k < vec_len (res[i].simple_counter_vec) - 1; k++)
+             if (res[i].simple_counter_vec == 0)
+               continue;
+             for (k = 0; k < vec_len (res[i].simple_counter_vec); k++)
                for (j = 0; j < vec_len (res[i].simple_counter_vec[k]); j++)
                  fformat (stdout, "[%d @ %d]: %llu packets %s\n",
                           j, k, res[i].simple_counter_vec[k][j],
@@ -201,6 +207,8 @@ reconnect:
              break;
 
            case STAT_DIR_TYPE_COUNTER_VECTOR_COMBINED:
+             if (res[i].combined_counter_vec == 0)
+               continue;
              for (k = 0; k < vec_len (res[i].combined_counter_vec); k++)
                for (j = 0; j < vec_len (res[i].combined_counter_vec[k]); j++)
                  fformat (stdout, "[%d @ %d]: %llu packets, %llu bytes %s\n",
@@ -210,13 +218,27 @@ reconnect:
              break;
 
            case STAT_DIR_TYPE_ERROR_INDEX:
-             fformat (stdout, "%llu %s\n", res[i].error_value, res[i].name);
+             for (j = 0; j < vec_len (res[i].error_vector); j++)
+               fformat (stdout, "[@%d] %llu %s\n", j, res[i].error_vector[j],
+                        res[i].name);
              break;
 
            case STAT_DIR_TYPE_SCALAR_INDEX:
              fformat (stdout, "%.2f %s\n", res[i].scalar_value, res[i].name);
              break;
 
+           case STAT_DIR_TYPE_NAME_VECTOR:
+             if (res[i].name_vector == 0)
+               continue;
+             for (k = 0; k < vec_len (res[i].name_vector); k++)
+               if (res[i].name_vector[k])
+                 fformat (stdout, "[%d]: %s %s\n", k, res[i].name_vector[k],
+                          res[i].name);
+             break;
+
+           case STAT_DIR_TYPE_EMPTY:
+             break;
+
            default:
              ;
            }