session: more show cli output 68/22968/8
authorFlorin Coras <fcoras@cisco.com>
Thu, 24 Oct 2019 02:28:08 +0000 (19:28 -0700)
committerDave Barach <openvpp@barachs.net>
Tue, 19 Nov 2019 15:06:13 +0000 (15:06 +0000)
Type: feature

Change-Id: I7f64fb1a13d90fa1679ca2ca35206092682f0c8f
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/vnet/session/session_cli.c
src/vnet/session/session_types.h

index b03353e..9264f47 100644 (file)
@@ -43,6 +43,52 @@ format_session_fifos (u8 * s, va_list * args)
   return s;
 }
 
+const char *session_state_str[] = {
+#define _(sym, str) str,
+  foreach_session_state
+#undef _
+};
+
+u8 *
+format_session_state (u8 * s, va_list * args)
+{
+  session_t *ss = va_arg (*args, session_t *);
+
+  if (ss->session_state < SESSION_N_STATES)
+    s = format (s, "%s", session_state_str[ss->session_state]);
+  else
+    s = format (s, "UNKNOWN STATE (%d)", ss->session_state);
+
+  return s;
+}
+
+const char *session_flags_str[] = {
+#define _(sym, str) str,
+  foreach_session_flag
+#undef _
+};
+
+u8 *
+format_session_flags (u8 * s, va_list * args)
+{
+  session_t *ss = va_arg (*args, session_t *);
+  int i, last = -1;
+
+  for (i = 0; i < SESSION_N_FLAGS; i++)
+    if (ss->flags & (1 << i))
+      last = i;
+
+  for (i = 0; i < last; i++)
+    {
+      if (ss->flags & (1 << i))
+       s = format (s, "%s, ", session_flags_str[i]);
+    }
+  if (last >= 0)
+    s = format (s, "%s", session_flags_str[last]);
+
+  return s;
+}
+
 /**
  * Format stream session as per the following format
  *
@@ -85,7 +131,11 @@ format_session (u8 * s, va_list * args)
       if (verbose == 1)
        s = format (s, "%v", str);
       if (verbose > 1)
-       s = format (s, "%U", format_session_fifos, ss, verbose);
+       {
+         s = format (s, "%U", format_session_fifos, ss, verbose);
+         s = format (s, " session: state: %U flags: %U\n",
+                     format_session_state, ss, format_session_flags, ss);
+       }
     }
   else if (ss->session_state == SESSION_STATE_LISTENING)
     {
index 4b187a6..6d7f84f 100644 (file)
@@ -147,12 +147,25 @@ typedef enum
     SESSION_N_STATES,
 } session_state_t;
 
+#define foreach_session_flag                           \
+  _(RX_EVT, "rx-event")                                        \
+  _(PROXY, "proxy")                                    \
+  _(CUSTOM_TX, "custom-tx")                            \
+  _(IS_MIGRATING, "migrating")                         \
+
+typedef enum session_flags_bits_
+{
+#define _(sym, str) SESSION_F_BIT_ ## sym,
+  foreach_session_flag
+#undef _
+  SESSION_N_FLAGS
+} session_flag_bits_t;
+
 typedef enum session_flags_
 {
-  SESSION_F_RX_EVT = 1,
-  SESSION_F_PROXY = (1 << 1),
-  SESSION_F_CUSTOM_TX = (1 << 2),
-  SESSION_F_IS_MIGRATING = (1 << 3),
+#define _(sym, str) SESSION_F_ ## sym = 1 << SESSION_F_BIT_ ## sym,
+  foreach_session_flag
+#undef _
 } session_flags_t;
 
 typedef struct session_