session: segment manager refactor
[vpp.git] / src / vcl / vppcom.c
index e28da69..dd7e90e 100644 (file)
@@ -441,6 +441,10 @@ vppcom_connect_to_vpp (char *app_name)
       vcm->vl_input_queue = am->shmem_hdr->vl_input_queue;
       vcm->my_client_index = am->my_client_index;
       vcm->app_state = STATE_APP_CONN_VPP;
+
+      if (VPPCOM_DEBUG > 0)
+       clib_warning ("VCL<%d>: app (%s) is connected to VPP!",
+                     getpid (), app_name);
     }
 
   if (VPPCOM_DEBUG > 0)
@@ -471,9 +475,6 @@ vppcom_connect_to_vpp (char *app_name)
       ed->data = rv;
       /* *INDENT-ON* */
     }
-
-  clib_warning ("VCL<%d>: app (%s) is connected to VPP!",
-               getpid (), app_name);
   return rv;
 }
 
@@ -1632,7 +1633,6 @@ vppcom_session_disconnect (u32 session_index)
     {
       if (is_server)
        {
-         svm_fifo_segment_main_t *sm = &svm_fifo_segment_main;
          svm_fifo_segment_private_t *seg;
 
          VCL_LOCK_AND_GET_SESSION (session_index, &session);
@@ -1648,7 +1648,7 @@ vppcom_session_disconnect (u32 session_index)
                          session->server_tx_fifo,
                          session->server_tx_fifo->refcnt);
 
-         seg = vec_elt_at_index (sm->segments, session->sm_seg_index);
+         seg = svm_fifo_segment_get_segment (session->sm_seg_index);
          svm_fifo_segment_free_fifo (seg, session->server_rx_fifo,
                                      FIFO_SEGMENT_RX_FREELIST);
          svm_fifo_segment_free_fifo (seg, session->server_tx_fifo,
@@ -2304,8 +2304,8 @@ vppcom_app_create (char *app_name)
 
       clib_time_init (&vcm->clib_time);
       vppcom_init_error_string_table ();
-      svm_fifo_segment_init (vcl_cfg->segment_baseva,
-                            20 /* timeout in secs */ );
+      svm_fifo_segment_main_init (vcl_cfg->segment_baseva,
+                                 20 /* timeout in secs */ );
       clib_spinlock_init (&vcm->sessions_lockp);
     }
 
@@ -2722,7 +2722,7 @@ vppcom_session_accept (uint32_t listen_session_index, vppcom_endpt_t * ep,
 {
   session_t *listen_session = 0;
   session_t *client_session = 0;
-  u32 client_session_index = ~0;
+  u32 client_session_index = ~0, n_fifos;
   int rv;
   f64 wait_for;
   char *cut_thru_str;
@@ -2821,9 +2821,6 @@ vppcom_session_accept (uint32_t listen_session_index, vppcom_endpt_t * ep,
        format ((u8 *) a->segment_name, "%d:segment%d%c",
                getpid (), vcm->unique_segment_index++, 0);
       a->segment_size = vcm->cfg.segment_size;
-      a->preallocated_fifo_pairs = vcm->cfg.preallocated_fifo_pairs;
-      a->rx_fifo_size = vcm->cfg.rx_fifo_size;
-      a->tx_fifo_size = vcm->cfg.tx_fifo_size;
 
       rv = svm_fifo_segment_create (a);
       if (PREDICT_FALSE (rv))
@@ -2850,6 +2847,14 @@ vppcom_session_accept (uint32_t listen_session_index, vppcom_endpt_t * ep,
       vec_free (a->new_segment_indices);
 
       seg = svm_fifo_segment_get_segment (client_session->sm_seg_index);
+      if (vcm->cfg.preallocated_fifo_pairs)
+       {
+         n_fifos = vcm->cfg.preallocated_fifo_pairs;
+         svm_fifo_segment_preallocate_fifo_pairs (seg, vcm->cfg.rx_fifo_size,
+                                                  vcm->cfg.tx_fifo_size,
+                                                  &n_fifos);
+       }
+
       client_session->server_rx_fifo =
        svm_fifo_segment_alloc_fifo (seg, vcm->cfg.rx_fifo_size,
                                     FIFO_SEGMENT_RX_FREELIST);
@@ -4360,7 +4365,7 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
              ELOG_TYPE_DECLARE (e) =
                {
                  .format = "VPPCOM_ATTR_GET_FLAGS: flags=%x is_nonblk=%d",
-                 .format_args = "i4",
+                 .format_args = "i4i4",
                };
              struct
              {
@@ -4395,7 +4400,7 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
              ELOG_TYPE_DECLARE (e) =
                {
                  .format = "VPPCOM_ATTR_SET_FLAGS: flags=%x is_nonblk=%d",
-                 .format_args = "i4",
+                 .format_args = "i4i4",
                };
              struct
              {
@@ -4553,6 +4558,23 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
       if (VPPCOM_DEBUG > 2)
        clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_LIBC_EPFD: libc_epfd %d",
                      getpid (), rv);
+      if (VPPCOM_DEBUG > 0)
+       {
+         /* *INDENT-OFF* */
+         ELOG_TYPE_DECLARE (e) =
+           {
+             .format = "VPPCOM_ATTR_GET_LIBC_EPFD: libc_epfd=%d",
+             .format_args = "i4",
+           };
+         CLIB_PACKED (struct {
+           i32 data;
+         }) * ed;
+
+         ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+         ed->data = session->libc_epfd;
+         /* *INDENT-ON* */
+       }
+
       break;
 
     case VPPCOM_ATTR_SET_LIBC_EPFD:
@@ -4639,6 +4661,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
          if (VPPCOM_DEBUG > 2)
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_LISTEN: %d, "
                          "buflen %d", getpid (), *(int *) buffer, *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_LISTEN: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(int *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4654,6 +4694,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_ERROR: %d, "
                          "buflen %d, #VPP-TBD#", getpid (),
                          *(int *) buffer, *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_ERROR: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(int *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4677,6 +4735,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_TX_FIFO_LEN: %u (0x%x), "
                          "buflen %d, #VPP-TBD#", getpid (),
                          *(size_t *) buffer, *(size_t *) buffer, *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_TX_FIFO_LEN: 0x%x buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(size_t *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4692,6 +4768,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
                          "buflen %d, #VPP-TBD#", getpid (),
                          session->sndbuf_size, session->sndbuf_size,
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_SET_TX_FIFO_LEN: 0x%x buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = session->sndbuf_size;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4715,6 +4809,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_RX_FIFO_LEN: %u (0x%x), "
                          "buflen %d, #VPP-TBD#", getpid (),
                          *(size_t *) buffer, *(size_t *) buffer, *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_RX_FIFO_LEN: 0x%x buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(size_t *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4730,6 +4842,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
                          "buflen %d, #VPP-TBD#", getpid (),
                          session->sndbuf_size, session->sndbuf_size,
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_SET_TX_FIFO_LEN: 0x%x buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = session->sndbuf_size;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4747,6 +4877,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_REUSEADDR: %d, "
                          "buflen %d, #VPP-TBD#", getpid (), *(int *) buffer,
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_REUSEADDR: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(int *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4768,6 +4916,25 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
                          VCL_SESS_ATTR_TEST (session->attr,
                                              VCL_SESS_ATTR_REUSEADDR),
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_SET_REUSEADDR: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = VCL_SESS_ATTR_TEST (session->attr,
+                                               VCL_SESS_ATTR_REUSEADDR);
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4785,6 +4952,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_REUSEPORT: %d, "
                          "buflen %d, #VPP-TBD#", getpid (), *(int *) buffer,
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_REUSEPORT: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(int *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4806,6 +4991,25 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
                          VCL_SESS_ATTR_TEST (session->attr,
                                              VCL_SESS_ATTR_REUSEPORT),
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_SET_REUSEPORT: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = VCL_SESS_ATTR_TEST (session->attr,
+                                               VCL_SESS_ATTR_REUSEPORT);
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4823,6 +5027,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_BROADCAST: %d, "
                          "buflen %d, #VPP-TBD#", getpid (), *(int *) buffer,
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_BROADCAST: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(int *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4843,6 +5065,25 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
                          VCL_SESS_ATTR_TEST (session->attr,
                                              VCL_SESS_ATTR_BROADCAST),
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_SET_BROADCAST: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = VCL_SESS_ATTR_TEST (session->attr,
+                                               VCL_SESS_ATTR_BROADCAST);
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4860,6 +5101,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_V6ONLY: %d, "
                          "buflen %d, #VPP-TBD#", getpid (), *(int *) buffer,
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_V6ONLY: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(int *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4879,6 +5138,25 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
                          "buflen %d, #VPP-TBD#", getpid (),
                          VCL_SESS_ATTR_TEST (session->attr,
                                              VCL_SESS_ATTR_V6ONLY), *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_SET_V6ONLY: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = VCL_SESS_ATTR_TEST (session->attr,
+                                               VCL_SESS_ATTR_V6ONLY);
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4896,6 +5174,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_KEEPALIVE: %d, "
                          "buflen %d, #VPP-TBD#", getpid (), *(int *) buffer,
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_KEEPALIVE: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(int *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4916,6 +5212,25 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
                          VCL_SESS_ATTR_TEST (session->attr,
                                              VCL_SESS_ATTR_KEEPALIVE),
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_SET_KEEPALIVE: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = VCL_SESS_ATTR_TEST (session->attr,
+                                               VCL_SESS_ATTR_KEEPALIVE);
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4933,6 +5248,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_TCP_NODELAY: %d, "
                          "buflen %d, #VPP-TBD#", getpid (), *(int *) buffer,
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_TCP_NODELAY: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(int *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4953,6 +5286,25 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
                          VCL_SESS_ATTR_TEST (session->attr,
                                              VCL_SESS_ATTR_TCP_NODELAY),
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_SET_TCP_NODELAY: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = VCL_SESS_ATTR_TEST (session->attr,
+                                               VCL_SESS_ATTR_TCP_NODELAY);
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4970,6 +5322,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_TCP_KEEPIDLE: %d, "
                          "buflen %d, #VPP-TBD#", getpid (), *(int *) buffer,
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_TCP_KEEPIDLE: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(int *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -4990,6 +5360,25 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
                          VCL_SESS_ATTR_TEST (session->attr,
                                              VCL_SESS_ATTR_TCP_KEEPIDLE),
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_SET_TCP_KEEPIDLE: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = VCL_SESS_ATTR_TEST (session->attr,
+                                               VCL_SESS_ATTR_TCP_KEEPIDLE);
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -5007,6 +5396,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_TCP_KEEPINTVL: %d, "
                          "buflen %d, #VPP-TBD#", getpid (), *(int *) buffer,
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_TCP_KEEPIDLE: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(int *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -5027,6 +5434,25 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
                          VCL_SESS_ATTR_TEST (session->attr,
                                              VCL_SESS_ATTR_TCP_KEEPINTVL),
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_SET_TCP_KEEPINTVL: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = VCL_SESS_ATTR_TEST (session->attr,
+                                               VCL_SESS_ATTR_TCP_KEEPINTVL);
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -5043,6 +5469,24 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
            clib_warning ("VCL<%d>: VPPCOM_ATTR_GET_TCP_USER_MSS: %d, "
                          "buflen %d, #VPP-TBD#", getpid (), *(int *) buffer,
                          *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_GET_TCP_USER_MSS: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = *(int *) buffer;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -5055,9 +5499,27 @@ vppcom_session_attr (uint32_t session_index, uint32_t op,
          session->user_mss = *(u32 *) buffer;
 
          if (VPPCOM_DEBUG > 2)
-           clib_warning ("VCL<%d>: VPPCOM_ATTR_SET_TCP_KEEPINTVL: %u, "
+           clib_warning ("VCL<%d>: VPPCOM_ATTR_SET_TCP_USER_MSS: %u, "
                          "buflen %d, #VPP-TBD#", getpid (),
                          session->user_mss, *buflen);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "VPPCOM_ATTR_SET_TCP_USER_MSS: %d buflen=%d",
+                 .format_args = "i4i4",
+               };
+
+             struct {
+               u32 data[2];
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, session->elog_track);
+             ed->data[0] = session->user_mss;
+             ed->data[1] = *buflen;
+             /* *INDENT-ON* */
+           }
        }
       else
        rv = VPPCOM_EINVAL;
@@ -5091,6 +5553,23 @@ vppcom_session_recvfrom (uint32_t session_index, void *buffer,
            clib_warning ("VCL<%d>: invalid session, "
                          "sid (%u) has been closed!",
                          getpid (), session_index);
+         if (VPPCOM_DEBUG > 0)
+           {
+             /* *INDENT-OFF* */
+             ELOG_TYPE_DECLARE (e) =
+               {
+                 .format = "invalid session: %d closed",
+                 .format_args = "i4",
+               };
+
+             struct {
+               u32 data;
+             } * ed;
+
+             ed = ELOG_TRACK_DATA (&vcm->elog_main, e, vcm->elog_track);
+             ed->data = session_index;
+             /* *INDENT-ON* */
+           }
          rv = VPPCOM_EBADFD;
          clib_spinlock_unlock (&vcm->sessions_lockp);
          goto done;