Add a configurable "significant error" metric
[vpp.git] / gmod / gmod / mod_vpp.c
index 951d352..4a82ca7 100644 (file)
@@ -70,12 +70,12 @@ static g_val_t vpp_metric_handler (int metric_index)
 {
     g_val_t val;
     pid_t *vpp_pidp;
-    f64 *vector_ratep, *vpp_rx_ratep;
+    f64 *vector_ratep, *vpp_rx_ratep, *sig_error_ratep;
 
     switch (metric_index) {
     case 0:
         vector_ratep = svmdb_local_get_vec_variable 
-            (svmdb_client, "vlib_vector_rate", sizeof (*vector_ratep));
+            (svmdb_client, "vpp_vector_rate", sizeof (*vector_ratep));
         if (vector_ratep) {
             val.d = *vector_ratep;
             vec_free (vector_ratep);
@@ -100,7 +100,7 @@ static g_val_t vpp_metric_handler (int metric_index)
 
     case 2:
         vpp_rx_ratep = svmdb_local_get_vec_variable 
-            (svmdb_client, "vnet_input_rate", sizeof (*vector_ratep));
+            (svmdb_client, "vpp_input_rate", sizeof (*vector_ratep));
         if (vpp_rx_ratep) {
             val.d = *vpp_rx_ratep;
             vec_free (vpp_rx_ratep);
@@ -108,6 +108,16 @@ static g_val_t vpp_metric_handler (int metric_index)
             val.d = 0.0;
         break;
 
+    case 3:
+        sig_error_ratep = svmdb_local_get_vec_variable 
+            (svmdb_client, "vpp_sig_error_rate", sizeof (*vector_ratep));
+        if (sig_error_ratep) {
+            val.d = *sig_error_ratep;
+            vec_free (sig_error_ratep);
+        } else
+            val.d = 0.0;
+        break;
+
     default:
         val.d = 0.0; 
     }
@@ -125,6 +135,10 @@ static Ganglia_25metric vpp_metric_info[] =
     {0, "Input_Rate", 100, GANGLIA_VALUE_DOUBLE, "5 sec RX rate", 
      "both", "%.1f", 
      UDP_HEADER_SIZE+8, "VPP Aggregate RX Rate"},
+    {0, "Sig_Error_Rate", 100, GANGLIA_VALUE_DOUBLE, 
+     "5 sec significant error rate", 
+     "both", "%.1f", 
+     UDP_HEADER_SIZE+8, "VPP Significant Error Rate"},
     {0, NULL}
 };