sctp: move to plugins, disabled by default
[vpp.git] / src / vnet / interface_format.c
index 2cc10f9..1a3ef02 100644 (file)
@@ -219,66 +219,46 @@ format_vnet_sw_interface_cntrs (u8 * s, vnet_interface_main_t * im,
                                vnet_sw_interface_t * si)
 {
   u32 indent, n_printed;
-  int i, j, n_counters;
-  static vnet_main_t **my_vnet_mains;
-
-  vec_reset_length (my_vnet_mains);
+  int j, n_counters;
+  u8 *n = 0;
 
   indent = format_get_indent (s);
   n_printed = 0;
 
-  {
-    vlib_combined_counter_main_t *cm;
-    vlib_counter_t v, vtotal;
-    u8 *n = 0;
-
-    for (i = 0; i < vec_len (vnet_mains); i++)
-      {
-       if (vnet_mains[i])
-         vec_add1 (my_vnet_mains, vnet_mains[i]);
-      }
+  n_counters = vec_len (im->combined_sw_if_counters);
 
-    if (vec_len (my_vnet_mains) == 0)
-      vec_add1 (my_vnet_mains, &vnet_main);
+  /* rx, tx counters... */
+  for (j = 0; j < n_counters; j++)
+    {
+      vlib_combined_counter_main_t *cm;
+      vlib_counter_t v, vtotal;
+      vtotal.packets = 0;
+      vtotal.bytes = 0;
 
-    /* Each vnet_main_t has its own copy of the interface counters */
-    n_counters = vec_len (im->combined_sw_if_counters);
+      cm = im->combined_sw_if_counters + j;
+      vlib_get_combined_counter (cm, si->sw_if_index, &v);
+      vtotal.packets += v.packets;
+      vtotal.bytes += v.bytes;
 
-    /* rx, tx counters... */
-    for (j = 0; j < n_counters; j++)
-      {
-       vtotal.packets = 0;
-       vtotal.bytes = 0;
-
-       for (i = 0; i < vec_len (my_vnet_mains); i++)
-         {
-           im = &my_vnet_mains[i]->interface_main;
-           cm = im->combined_sw_if_counters + j;
-           vlib_get_combined_counter (cm, si->sw_if_index, &v);
-           vtotal.packets += v.packets;
-           vtotal.bytes += v.bytes;
-         }
+      /* Only display non-zero counters. */
+      if (vtotal.packets == 0)
+       continue;
 
-       /* Only display non-zero counters. */
-       if (vtotal.packets == 0)
-         continue;
-
-       if (n_printed > 0)
-         s = format (s, "\n%U", format_white_space, indent);
-       n_printed += 2;
-
-       if (n)
-         _vec_len (n) = 0;
-       n = format (n, "%s packets", cm->name);
-       s = format (s, "%-16v%16Ld", n, vtotal.packets);
+      if (n_printed > 0)
+       s = format (s, "\n%U", format_white_space, indent);
+      n_printed += 2;
 
+      if (n)
        _vec_len (n) = 0;
-       n = format (n, "%s bytes", cm->name);
-       s = format (s, "\n%U%-16v%16Ld",
-                   format_white_space, indent, n, vtotal.bytes);
-      }
-    vec_free (n);
-  }
+      n = format (n, "%s packets", cm->name);
+      s = format (s, "%-16v%16Ld", n, vtotal.packets);
+
+      _vec_len (n) = 0;
+      n = format (n, "%s bytes", cm->name);
+      s = format (s, "\n%U%-16v%16Ld",
+                 format_white_space, indent, n, vtotal.bytes);
+    }
+  vec_free (n);
 
   {
     vlib_simple_counter_main_t *cm;
@@ -290,14 +270,10 @@ format_vnet_sw_interface_cntrs (u8 * s, vnet_interface_main_t * im,
       {
        vtotal = 0;
 
-       for (i = 0; i < vec_len (my_vnet_mains); i++)
-         {
-           im = &my_vnet_mains[i]->interface_main;
-           cm = im->sw_if_counters + j;
+       cm = im->sw_if_counters + j;
 
-           v = vlib_get_simple_counter (cm, si->sw_if_index);
-           vtotal += v;
-         }
+       v = vlib_get_simple_counter (cm, si->sw_if_index);
+       vtotal += v;
 
        /* Only display non-zero counters. */
        if (vtotal == 0)
@@ -385,6 +361,8 @@ format_vnet_buffer_opaque (u8 * s, va_list * args)
 {
   vlib_buffer_t *b = va_arg (*args, vlib_buffer_t *);
   vnet_buffer_opaque_t *o = (vnet_buffer_opaque_t *) b->opaque;
+  vnet_interface_main_t *im = &vnet_get_main ()->interface_main;
+  vnet_buffer_opquae_formatter_t helper_fp;
   int i;
 
   s = format (s, "raw: ");
@@ -486,9 +464,7 @@ format_vnet_buffer_opaque (u8 * s, va_list * args)
   s = format (s, "policer.index: %d", o->policer.index);
   vec_add1 (s, '\n');
 
-  s = format (s,
-             "ipsec.flags: 0x%x, ipsec.sad_index: %d",
-             o->ipsec.flags, o->ipsec.sad_index);
+  s = format (s, "ipsec.sad_index: %d", o->ipsec.sad_index);
   vec_add1 (s, '\n');
 
   s = format (s, "map.mtu: %d", (u32) (o->map.mtu));
@@ -536,25 +512,15 @@ format_vnet_buffer_opaque (u8 * s, va_list * args)
              (u32) (o->tcp.data_len), (u32) (o->tcp.flags));
   vec_add1 (s, '\n');
 
-  s = format (s,
-             "sctp.connection_index: %d, sctp.sid: %d, sctp.ssn: %d, "
-             "sctp.tsn: %d, sctp.hdr_offset: %d",
-             o->sctp.connection_index,
-             (u32) (o->sctp.sid),
-             (u32) (o->sctp.ssn),
-             (u32) (o->sctp.tsn), (u32) (o->sctp.hdr_offset));
+  s = format (s, "snat.flags: 0x%x", o->snat.flags);
   vec_add1 (s, '\n');
 
-  s = format
-    (s, "sctp.data_offset: %d, sctp.data_len: %d, sctp.subconn_idx: %d, "
-     "sctp.flags: 0x%x",
-     (u32) (o->sctp.data_offset),
-     (u32) (o->sctp.data_len),
-     (u32) (o->sctp.subconn_idx), (u32) (o->sctp.flags));
-  vec_add1 (s, '\n');
+  for (i = 0; i < vec_len (im->buffer_opaque_format_helpers); i++)
+    {
+      helper_fp = im->buffer_opaque_format_helpers[i];
+      s = (*helper_fp) (b, s);
+    }
 
-  s = format (s, "snat.flags: 0x%x", o->snat.flags);
-  vec_add1 (s, '\n');
   return s;
 }
 
@@ -563,6 +529,8 @@ format_vnet_buffer_opaque2 (u8 * s, va_list * args)
 {
   vlib_buffer_t *b = va_arg (*args, vlib_buffer_t *);
   vnet_buffer_opaque2_t *o = (vnet_buffer_opaque2_t *) b->opaque2;
+  vnet_interface_main_t *im = &vnet_get_main ()->interface_main;
+  vnet_buffer_opquae_formatter_t helper_fp;
 
   int i;
 
@@ -584,9 +552,31 @@ format_vnet_buffer_opaque2 (u8 * s, va_list * args)
 
   s = format (s, "pg_replay_timestamp: %llu", (u32) (o->pg_replay_timestamp));
   vec_add1 (s, '\n');
+
+  for (i = 0; i < vec_len (im->buffer_opaque2_format_helpers); i++)
+    {
+      helper_fp = im->buffer_opaque2_format_helpers[i];
+      s = (*helper_fp) (b, s);
+    }
+
   return s;
 }
 
+void
+vnet_register_format_buffer_opaque_helper (vnet_buffer_opquae_formatter_t fp)
+{
+  vnet_interface_main_t *im = &vnet_get_main ()->interface_main;
+  vec_add1 (im->buffer_opaque_format_helpers, fp);
+}
+
+void
+vnet_register_format_buffer_opaque2_helper (vnet_buffer_opquae_formatter_t fp)
+{
+  vnet_interface_main_t *im = &vnet_get_main ()->interface_main;
+  vec_add1 (im->buffer_opaque2_format_helpers, fp);
+}
+
+
 uword
 unformat_vnet_hw_interface (unformat_input_t * input, va_list * args)
 {