session: API cleanup 97/24697/9
authorJakub Grajciar <jgrajcia@cisco.com>
Fri, 31 Jan 2020 08:35:29 +0000 (09:35 +0100)
committerFlorin Coras <florin.coras@gmail.com>
Thu, 5 Mar 2020 15:26:51 +0000 (15:26 +0000)
Use consistent API types.

Type: fix

Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
Change-Id: Ib752a3425c076eb53bc5255a48039cbb74b1fcce
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
14 files changed:
src/plugins/hs_apps/sapi/vpp_echo_bapi.c
src/plugins/quic/test/test_quic.py
src/vat/api_format.c
src/vcl/test/test_vcl.py
src/vcl/vcl_bapi.c
src/vcl/vcl_private.c
src/vnet/session/session.api
src/vnet/session/session_api.c
src/vpp/api/custom_dump.c
test/test_session.py
test/test_tcp.py
test/test_tls.py
test/test_udp.py
test/vpp_papi_provider.py

index cff331a..784d741 100644 (file)
@@ -44,9 +44,7 @@ echo_send_attach (echo_main_t * em)
   bmp->options[APP_OPTIONS_EVT_QUEUE_SIZE] = em->evt_q_size;
   if (em->appns_id)
     {
-      bmp->namespace_id_len = vec_len (em->appns_id);
-      clib_memcpy_fast (bmp->namespace_id, em->appns_id,
-                       bmp->namespace_id_len);
+      vl_api_vec_to_api_string (em->appns_id, &bmp->namespace_id);
       bmp->options[APP_OPTIONS_FLAGS] |= em->appns_flags;
       bmp->options[APP_OPTIONS_NAMESPACE_SECRET] = em->appns_secret;
     }
@@ -276,9 +274,11 @@ static void
 vl_api_app_attach_reply_t_handler (vl_api_app_attach_reply_t * mp)
 {
   echo_main_t *em = &echo_main;
-  int *fds = 0, i;
+  int *fds = 0, i, rv;
   u32 n_fds = 0;
   u64 segment_handle;
+  char *segment_name = 0;
+
   segment_handle = clib_net_to_host_u64 (mp->segment_handle);
   ECHO_LOG (2, "Attached returned app %u", htons (mp->app_index));
 
@@ -289,13 +289,6 @@ vl_api_app_attach_reply_t_handler (vl_api_app_attach_reply_t * mp)
       return;
     }
 
-  if (mp->segment_name_length == 0)
-    {
-      ECHO_FAIL (ECHO_FAIL_VL_API_MISSING_SEGMENT_NAME,
-                "segment_name_length zero");
-      return;
-    }
-
   if (!mp->app_mq)
     {
       ECHO_FAIL (ECHO_FAIL_VL_API_NULL_APP_MQ, "NULL app_mq");
@@ -323,14 +316,21 @@ vl_api_app_attach_reply_t_handler (vl_api_app_attach_reply_t * mp)
          }
 
       if (mp->fd_flags & SESSION_FD_F_MEMFD_SEGMENT)
-       if (echo_ssvm_segment_attach ((char *) mp->segment_name,
-                                     SSVM_SEGMENT_MEMFD, fds[n_fds++]))
-         {
-           ECHO_FAIL (ECHO_FAIL_VL_API_SVM_FIFO_SEG_ATTACH,
-                      "svm_fifo_segment_attach ('%s') "
-                      "failed on SSVM_SEGMENT_MEMFD", mp->segment_name);
-           goto failed;
-         }
+       {
+         segment_name = vl_api_from_api_to_new_c_string (&mp->segment_name);
+         rv = echo_ssvm_segment_attach (segment_name,
+                                        SSVM_SEGMENT_MEMFD, fds[n_fds++]);
+         if (rv != 0)
+           {
+             ECHO_FAIL (ECHO_FAIL_VL_API_SVM_FIFO_SEG_ATTACH,
+                        "svm_fifo_segment_attach ('%s') "
+                        "failed on SSVM_SEGMENT_MEMFD", segment_name);
+             vec_free (segment_name);
+             goto failed;
+           }
+         vec_free (segment_name);
+       }
+
       if (mp->fd_flags & SESSION_FD_F_MQ_EVENTFD)
        svm_msg_q_set_consumer_eventfd (em->app_mq, fds[n_fds++]);
 
@@ -338,14 +338,17 @@ vl_api_app_attach_reply_t_handler (vl_api_app_attach_reply_t * mp)
     }
   else
     {
-      if (echo_ssvm_segment_attach
-         ((char *) mp->segment_name, SSVM_SEGMENT_SHM, -1))
+      segment_name = vl_api_from_api_to_new_c_string (&mp->segment_name);
+      rv = echo_ssvm_segment_attach (segment_name, SSVM_SEGMENT_SHM, -1);
+      if (rv != 0)
        {
          ECHO_FAIL (ECHO_FAIL_VL_API_SVM_FIFO_SEG_ATTACH,
                     "svm_fifo_segment_attach ('%s') "
-                    "failed on SSVM_SEGMENT_SHM", mp->segment_name);
-         return;
+                    "failed on SSVM_SEGMENT_SHM", segment_name);
+         vec_free (segment_name);
+         goto failed;
        }
+      vec_free (segment_name);
     }
   echo_segment_handle_add_del (em, segment_handle, 1 /* add */ );
   ECHO_LOG (2, "Mapped segment 0x%lx", segment_handle);
index 8109018..21987c2 100644 (file)
@@ -77,9 +77,9 @@ class QUICTestCase(VppTestCase):
             table_id += 1
 
         # Configure namespaces
-        self.vapi.app_namespace_add_del(namespace_id=b"server",
+        self.vapi.app_namespace_add_del(namespace_id="server",
                                         sw_if_index=self.loop0.sw_if_index)
-        self.vapi.app_namespace_add_del(namespace_id=b"client",
+        self.vapi.app_namespace_add_del(namespace_id="client",
                                         sw_if_index=self.loop1.sw_if_index)
 
         # Add inter-table routes
index ea24aef..a98e2ed 100644 (file)
@@ -19699,8 +19699,7 @@ api_app_namespace_add_del (vat_main_t * vam)
     }
   M (APP_NAMESPACE_ADD_DEL, mp);
 
-  clib_memcpy (mp->namespace_id, ns_id, vec_len (ns_id));
-  mp->namespace_id_len = vec_len (ns_id);
+  vl_api_vec_to_api_string (ns_id, &mp->namespace_id);
   mp->secret = clib_host_to_net_u64 (secret);
   mp->sw_if_index = clib_host_to_net_u32 (sw_if_index);
   mp->ip4_fib_id = clib_host_to_net_u32 (ip4_fib_id);
@@ -19774,15 +19773,20 @@ static void
 vl_api_session_rules_details_t_handler (vl_api_session_rules_details_t * mp)
 {
   vat_main_t *vam = &vat_main;
+  fib_prefix_t lcl, rmt;
 
-  if (mp->is_ip4)
+  ip_prefix_decode (&mp->lcl, &lcl);
+  ip_prefix_decode (&mp->rmt, &rmt);
+
+  if (lcl.fp_proto == FIB_PROTOCOL_IP4)
     {
       print (vam->ofp,
             "appns %u tp %u scope %d %U/%d %d %U/%d %d action: %d tag: %s",
             clib_net_to_host_u32 (mp->appns_index), mp->transport_proto,
-            mp->scope, format_ip4_address, &mp->lcl_ip, mp->lcl_plen,
+            mp->scope, format_ip4_address, &lcl.fp_addr.ip4, lcl.fp_len,
             clib_net_to_host_u16 (mp->lcl_port), format_ip4_address,
-            &mp->rmt_ip, mp->rmt_plen, clib_net_to_host_u16 (mp->rmt_port),
+            &rmt.fp_addr.ip4, rmt.fp_len,
+            clib_net_to_host_u16 (mp->rmt_port),
             clib_net_to_host_u32 (mp->action_index), mp->tag);
     }
   else
@@ -19790,9 +19794,10 @@ vl_api_session_rules_details_t_handler (vl_api_session_rules_details_t * mp)
       print (vam->ofp,
             "appns %u tp %u scope %d %U/%d %d %U/%d %d action: %d tag: %s",
             clib_net_to_host_u32 (mp->appns_index), mp->transport_proto,
-            mp->scope, format_ip6_address, &mp->lcl_ip, mp->lcl_plen,
+            mp->scope, format_ip6_address, &lcl.fp_addr.ip6, lcl.fp_len,
             clib_net_to_host_u16 (mp->lcl_port), format_ip6_address,
-            &mp->rmt_ip, mp->rmt_plen, clib_net_to_host_u16 (mp->rmt_port),
+            &rmt.fp_addr.ip6, rmt.fp_len,
+            clib_net_to_host_u16 (mp->rmt_port),
             clib_net_to_host_u32 (mp->action_index), mp->tag);
     }
 }
@@ -19806,6 +19811,11 @@ vl_api_session_rules_details_t_handler_json (vl_api_session_rules_details_t *
   struct in6_addr ip6;
   struct in_addr ip4;
 
+  fib_prefix_t lcl, rmt;
+
+  ip_prefix_decode (&mp->lcl, &lcl);
+  ip_prefix_decode (&mp->rmt, &rmt);
+
   if (VAT_JSON_ARRAY != vam->json_tree.type)
     {
       ASSERT (VAT_JSON_NONE == vam->json_tree.type);
@@ -19814,7 +19824,6 @@ vl_api_session_rules_details_t_handler_json (vl_api_session_rules_details_t *
   node = vat_json_array_add (&vam->json_tree);
   vat_json_init_object (node);
 
-  vat_json_object_add_uint (node, "is_ip4", mp->is_ip4 ? 1 : 0);
   vat_json_object_add_uint (node, "appns_index",
                            clib_net_to_host_u32 (mp->appns_index));
   vat_json_object_add_uint (node, "transport_proto", mp->transport_proto);
@@ -19825,21 +19834,21 @@ vl_api_session_rules_details_t_handler_json (vl_api_session_rules_details_t *
                            clib_net_to_host_u16 (mp->lcl_port));
   vat_json_object_add_uint (node, "rmt_port",
                            clib_net_to_host_u16 (mp->rmt_port));
-  vat_json_object_add_uint (node, "lcl_plen", mp->lcl_plen);
-  vat_json_object_add_uint (node, "rmt_plen", mp->rmt_plen);
+  vat_json_object_add_uint (node, "lcl_plen", lcl.fp_len);
+  vat_json_object_add_uint (node, "rmt_plen", rmt.fp_len);
   vat_json_object_add_string_copy (node, "tag", mp->tag);
-  if (mp->is_ip4)
+  if (lcl.fp_proto == FIB_PROTOCOL_IP4)
     {
-      clib_memcpy (&ip4, mp->lcl_ip, sizeof (ip4));
+      clib_memcpy (&ip4, &lcl.fp_addr.ip4, sizeof (ip4));
       vat_json_object_add_ip4 (node, "lcl_ip", ip4);
-      clib_memcpy (&ip4, mp->rmt_ip, sizeof (ip4));
+      clib_memcpy (&ip4, &rmt.fp_addr.ip4, sizeof (ip4));
       vat_json_object_add_ip4 (node, "rmt_ip", ip4);
     }
   else
     {
-      clib_memcpy (&ip6, mp->lcl_ip, sizeof (ip6));
+      clib_memcpy (&ip6, &lcl.fp_addr.ip6, sizeof (ip6));
       vat_json_object_add_ip6 (node, "lcl_ip", ip6);
-      clib_memcpy (&ip6, mp->rmt_ip, sizeof (ip6));
+      clib_memcpy (&ip6, &rmt.fp_addr.ip6, sizeof (ip6));
       vat_json_object_add_ip6 (node, "rmt_ip", ip6);
     }
 }
@@ -19856,6 +19865,7 @@ api_session_rule_add_del (vat_main_t * vam)
   u8 is_ip4 = 1, conn_set = 0;
   u8 is_add = 1, *tag = 0;
   int ret;
+  fib_prefix_t lcl, rmt;
 
   while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
     {
@@ -19910,26 +19920,34 @@ api_session_rule_add_del (vat_main_t * vam)
 
   M (SESSION_RULE_ADD_DEL, mp);
 
-  mp->is_ip4 = is_ip4;
-  mp->transport_proto = proto;
-  mp->lcl_port = clib_host_to_net_u16 ((u16) lcl_port);
-  mp->rmt_port = clib_host_to_net_u16 ((u16) rmt_port);
-  mp->lcl_plen = lcl_plen;
-  mp->rmt_plen = rmt_plen;
-  mp->action_index = clib_host_to_net_u32 (action);
-  mp->appns_index = clib_host_to_net_u32 (appns_index);
-  mp->scope = scope;
-  mp->is_add = is_add;
+  clib_memset (&lcl, 0, sizeof (lcl));
+  clib_memset (&rmt, 0, sizeof (rmt));
   if (is_ip4)
     {
-      clib_memcpy (mp->lcl_ip, &lcl_ip4, sizeof (lcl_ip4));
-      clib_memcpy (mp->rmt_ip, &rmt_ip4, sizeof (rmt_ip4));
+      ip_set (&lcl.fp_addr, &lcl_ip4, 1);
+      ip_set (&rmt.fp_addr, &rmt_ip4, 1);
+      lcl.fp_len = lcl_plen;
+      rmt.fp_len = rmt_plen;
     }
   else
     {
-      clib_memcpy (mp->lcl_ip, &lcl_ip6, sizeof (lcl_ip6));
-      clib_memcpy (mp->rmt_ip, &rmt_ip6, sizeof (rmt_ip6));
+      ip_set (&lcl.fp_addr, &lcl_ip6, 0);
+      ip_set (&rmt.fp_addr, &rmt_ip6, 0);
+      lcl.fp_len = lcl_plen;
+      rmt.fp_len = rmt_plen;
     }
+
+
+  ip_prefix_encode (&lcl, &mp->lcl);
+  ip_prefix_encode (&rmt, &mp->rmt);
+  mp->lcl_port = clib_host_to_net_u16 ((u16) lcl_port);
+  mp->rmt_port = clib_host_to_net_u16 ((u16) rmt_port);
+  mp->transport_proto =
+    proto ? TRANSPORT_PROTO_API_UDP : TRANSPORT_PROTO_API_TCP;
+  mp->action_index = clib_host_to_net_u32 (action);
+  mp->appns_index = clib_host_to_net_u32 (appns_index);
+  mp->scope = scope;
+  mp->is_add = is_add;
   if (tag)
     {
       clib_memcpy (mp->tag, tag, vec_len (tag));
index d7a44ed..d9346ba 100644 (file)
@@ -120,9 +120,9 @@ class VCLTestCase(VppTestCase):
             table_id += 1
 
         # Configure namespaces
-        self.vapi.app_namespace_add_del(namespace_id=b"1", secret=1234,
+        self.vapi.app_namespace_add_del(namespace_id="1", secret=1234,
                                         sw_if_index=self.loop0.sw_if_index)
-        self.vapi.app_namespace_add_del(namespace_id=b"2", secret=5678,
+        self.vapi.app_namespace_add_del(namespace_id="2", secret=5678,
                                         sw_if_index=self.loop1.sw_if_index)
 
         # Add inter-table routes
@@ -161,9 +161,9 @@ class VCLTestCase(VppTestCase):
             table_id += 1
 
         # Configure namespaces
-        self.vapi.app_namespace_add_del(namespace_id=b"1", secret=1234,
+        self.vapi.app_namespace_add_del(namespace_id="1", secret=1234,
                                         sw_if_index=self.loop0.sw_if_index)
-        self.vapi.app_namespace_add_del(namespace_id=b"2", secret=5678,
+        self.vapi.app_namespace_add_del(namespace_id="2", secret=5678,
                                         sw_if_index=self.loop1.sw_if_index)
 
         # Add inter-table routes
index efa5cc1..af2eb03 100644 (file)
@@ -73,8 +73,9 @@ vl_api_app_attach_reply_t_handler (vl_api_app_attach_reply_t * mp)
   vcl_worker_t *wrk = vcl_worker_get (0);
   svm_msg_q_t *ctrl_mq;
   u64 segment_handle;
-  int *fds = 0, i;
+  int *fds = 0, i, rv;
   u32 n_fds = 0;
+  char *segment_name = 0;
 
   if (mp->retval)
     {
@@ -108,9 +109,16 @@ vl_api_app_attach_reply_t_handler (vl_api_app_attach_reply_t * mp)
          goto failed;
 
       if (mp->fd_flags & SESSION_FD_F_MEMFD_SEGMENT)
-       if (vcl_segment_attach (segment_handle, (char *) mp->segment_name,
-                               SSVM_SEGMENT_MEMFD, fds[n_fds++]))
-         goto failed;
+       {
+         segment_name = vl_api_from_api_to_new_c_string (&mp->segment_name);
+         rv =
+           vcl_segment_attach (segment_handle, segment_name,
+                               SSVM_SEGMENT_MEMFD, fds[n_fds++]);
+         vec_free (segment_name);
+         if (rv != 0)
+           goto failed;
+       }
+
 
       if (mp->fd_flags & SESSION_FD_F_MQ_EVENTFD)
        {
@@ -123,8 +131,12 @@ vl_api_app_attach_reply_t_handler (vl_api_app_attach_reply_t * mp)
     }
   else
     {
-      if (vcl_segment_attach (segment_handle, (char *) mp->segment_name,
-                             SSVM_SEGMENT_SHM, -1))
+      segment_name = vl_api_from_api_to_new_c_string (&mp->segment_name);
+      rv =
+       vcl_segment_attach (segment_handle, segment_name, SSVM_SEGMENT_SHM,
+                           -1);
+      vec_free (segment_name);
+      if (rv != 0)
        goto failed;
     }
 
@@ -143,10 +155,11 @@ static void
 vl_api_app_worker_add_del_reply_t_handler (vl_api_app_worker_add_del_reply_t *
                                           mp)
 {
-  int n_fds = 0, *fds = 0, i;
+  int n_fds = 0, *fds = 0, i, rv;
   u64 segment_handle;
   vcl_worker_t *wrk;
   u32 wrk_index;
+  char *segment_name = 0;
 
   if (mp->retval)
     {
@@ -189,9 +202,15 @@ vl_api_app_worker_add_del_reply_t_handler (vl_api_app_worker_add_del_reply_t *
          goto failed;
 
       if (mp->fd_flags & SESSION_FD_F_MEMFD_SEGMENT)
-       if (vcl_segment_attach (segment_handle, (char *) mp->segment_name,
-                               SSVM_SEGMENT_MEMFD, fds[n_fds++]))
-         goto failed;
+       {
+         segment_name = vl_api_from_api_to_new_c_string (&mp->segment_name);
+         rv =
+           vcl_segment_attach (segment_handle, segment_name,
+                               SSVM_SEGMENT_MEMFD, fds[n_fds++]);
+         vec_free (segment_name);
+         if (rv != 0)
+           goto failed;
+       }
 
       if (mp->fd_flags & SESSION_FD_F_MQ_EVENTFD)
        {
@@ -204,8 +223,12 @@ vl_api_app_worker_add_del_reply_t_handler (vl_api_app_worker_add_del_reply_t *
     }
   else
     {
-      if (vcl_segment_attach (segment_handle, (char *) mp->segment_name,
-                             SSVM_SEGMENT_SHM, -1))
+      segment_name = vl_api_from_api_to_new_c_string (&mp->segment_name);
+      rv =
+       vcl_segment_attach (segment_handle, segment_name, SSVM_SEGMENT_SHM,
+                           -1);
+      vec_free (segment_name);
+      if (rv != 0)
        goto failed;
     }
   vcm->app_state = STATE_APP_READY;
@@ -313,8 +336,7 @@ vppcom_app_send_attach (void)
   bmp->options[APP_OPTIONS_TLS_ENGINE] = tls_engine;
   if (nsid_len)
     {
-      bmp->namespace_id_len = nsid_len;
-      clib_memcpy_fast (bmp->namespace_id, vcm->cfg.namespace_id, nsid_len);
+      vl_api_vec_to_api_string (vcm->cfg.namespace_id, &bmp->namespace_id);
       bmp->options[APP_OPTIONS_NAMESPACE_SECRET] = vcm->cfg.namespace_secret;
     }
   vl_msg_api_send_shmem (wrk->vl_input_queue, (u8 *) & bmp);
index f041a86..3cb76c6 100644 (file)
@@ -383,7 +383,7 @@ vcl_segment_attach (u64 segment_handle, char *name, ssvm_segment_type_t type,
   int rv;
 
   memset (a, 0, sizeof (*a));
-  a->segment_name = (char *) name;
+  a->segment_name = name;
   a->segment_type = type;
 
   if (type == SSVM_SEGMENT_MEMFD)
index 8cfac3d..4ff6367 100644 (file)
  * limitations under the License.
  */
 
-option version = "1.7.0";
+option version = "2.0.0";
+
+import "vnet/interface_types.api";
+import "vnet/ip/ip_types.api";
+
+
+enum transport_proto : u8
+{
+        TRANSPORT_PROTO_API_TCP,
+        TRANSPORT_PROTO_API_UDP,
+        TRANSPORT_PROTO_API_SCTP,
+        TRANSPORT_PROTO_API_NONE,
+        TRANSPORT_PROTO_API_TLS,
+        TRANSPORT_PROTO_API_UDPC,
+        TRANSPORT_PROTO_API_QUIC,
+};
 
 /** \brief client->vpp, attach application to session layer
        ### WILL BE DEPRECATED POST 20.01 ###
@@ -22,16 +37,14 @@ option version = "1.7.0";
     @param initial_segment_size - size of the initial shm segment to be
                                                          allocated
     @param options - segment size, fifo sizes, etc.
-    @param namespace_id_len - length of the namespace id c-string
-    @param namespace_id - 0 terminted c-string
+    @param namespace_id - string
 */
  define application_attach {
     u32 client_index;
     u32 context;
     u32 initial_segment_size;
     u64 options[17];
-    u8 namespace_id_len;
-    u8 namespace_id [64];
+    string namespace_id[];
  };
 
  /** \brief Application attach reply
@@ -44,10 +57,9 @@ option version = "1.7.0";
     @param fd_flags - set of flags that indicate which fds are to be expected
                                  over the socket (set only if socket transport available)
     @param segment_size - size of first shm segment
-    @param segment_name_length - length of segment name
-    @param segment_name - name of segment client needs to attach to
     @param app_index - index of the newly created app
     @param segment_handle - handle for segment
+    @param segment_name - name of segment client needs to attach to
 */
 define application_attach_reply {
     u32 context;
@@ -56,25 +68,22 @@ define application_attach_reply {
     u8 n_fds;
     u8 fd_flags;
     u32 segment_size;
-    u8 segment_name_length;
-    u8 segment_name[128];
     u32 app_index;
     u64 segment_handle;
+    string segment_name[];
 };
 
 /** \brief Application attach to session layer
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
     @param options - segment size, fifo sizes, etc.
-    @param namespace_id_len - length of the namespace id c-string
-    @param namespace_id - 0 terminted c-string
+    @param namespace_id - string
 */
  define app_attach {
     u32 client_index;
     u32 context;
     u64 options[17];
-    u8 namespace_id_len;
-    u8 namespace_id[64];
+    string namespace_id[];
  };
 
  /** \brief Application attach reply
@@ -89,9 +98,8 @@ define application_attach_reply {
     @param fd_flags - set of flags that indicate which fds are to be expected
                                  over the socket (set only if socket transport available)
     @param segment_size - size of first shm segment
-    @param segment_name_length - length of segment name
-    @param segment_name - name of segment client needs to attach to
     @param segment_handle - handle for segment
+    @param segment_name - name of segment client needs to attach to
 */
 define app_attach_reply {
     u32 context;
@@ -103,9 +111,8 @@ define app_attach_reply {
     u8 n_fds;
     u8 fd_flags;
     u32 segment_size;
-    u8 segment_name_length;
-    u8 segment_name[128];
     u64 segment_handle;
+    string segment_name[];
 };
 
 /** \brief Add certificate and key
@@ -202,7 +209,7 @@ autoreply define map_another_segment {
     u32 context;
     u8 fd_flags;
     u32 segment_size;
-    u8 segment_name[128];
+    string segment_name[128];
     u64 segment_handle;
 };
 
@@ -301,7 +308,6 @@ define disconnect_session_reply {
     @param context - sender context, to match reply w/ request
     @param wrk_index - index of worker requesting the bind
     @param vrf - bind namespace
-    @param is_ip4 - flag that is 1 if ip address family is IPv4
     @param ip - ip address
     @param port - port
     @param proto - protocol 0 - TCP 1 - UDP
@@ -312,10 +318,9 @@ autoreply define bind_sock {
   u32 context;
   u32 wrk_index;
   u32 vrf;
-  u8 is_ip4;
-  u8 ip[16];
+  vl_api_address_t ip;
   u16 port;
-  u8 proto;
+  vl_api_transport_proto_t proto;
   u64 options[16];
 };
 
@@ -342,7 +347,6 @@ autoreply define unbind_sock {
                                   used to perform redirects
     @param options - socket options, fifo sizes, etc. when doing redirects
     @param vrf - connection namespace
-    @param is_ip4 - flag that is 1 if ip address family is IPv4
     @param ip - ip address
     @param port - port
     @param proto - protocol 0 - TCP 1 - UDP
@@ -358,13 +362,11 @@ autoreply define connect_sock {
   u64 client_queue_address;
   u64 options[16];
   u32 vrf;
-  u8 is_ip4;
-  u8 ip[16];
+  vl_api_address_t ip;
   u16 port;
-  u8 proto;
+  vl_api_transport_proto_t proto;
   u64 parent_handle;
-  u8 hostname_len;
-  u8 hostname[hostname_len];
+  string hostname[];
 };
 
 /** \brief ask app to add a new cut-through registration
@@ -404,7 +406,7 @@ define app_worker_add_del
   u32 context;
   u32 app_index;
   u32 wrk_index;
-  u8 is_add;
+  bool is_add [default=true];
 };
 
 /** \brief Reply for app worker add/del
@@ -415,9 +417,9 @@ define app_worker_add_del
     @param n_fds - number of fds exchanged
     @param fd_flags - set of flags that indicate which fds are to be expected
                                  over the socket (set only if socket transport available)
-    @param segment_name_length - length of segment name
-    @param segment_name - name of segment client needs to attach to
     @param segment_handle - handle for segment
+    @param is_add - add if non zero, else delete
+    @param segment_name - name of segment client needs to attach to
 */
 define app_worker_add_del_reply
 {
@@ -427,10 +429,9 @@ define app_worker_add_del_reply
   u64 app_event_queue_address;
   u8 n_fds;
   u8 fd_flags;
-  u8 segment_name_length;
-  u8 segment_name[128];
   u64 segment_handle;
-  u8 is_add;
+  bool is_add [default=true];
+  string segment_name[];
 };
 
 /** \brief enable/disable session layer
@@ -442,7 +443,7 @@ define app_worker_add_del_reply
 autoreply define session_enable_disable {
   u32 client_index;
   u32 context;
-  u8 is_enable;
+  bool is_enable [default=true];
 };
 
 /** \brief add/del application namespace
@@ -456,18 +457,16 @@ autoreply define session_enable_disable {
                         if sw_if_index set.
     @param ip6_fib_id - id of ip6 fib that "supports" the namespace. Ignored
                         if sw_if_index set.
-    @param namespace_id_len - length of namespace id lower
     @param namespace_id - namespace id
 */
 define app_namespace_add_del {
   u32 client_index;
   u32 context;
   u64 secret;
-  u32 sw_if_index;
+  vl_api_interface_index_t sw_if_index;
   u32 ip4_fib_id;
   u32 ip6_fib_id;
-  u8 namespace_id_len;
-  u8 namespace_id[64];
+  string namespace_id[];
 };
 
 /** \brief Reply for app namespace add/del
@@ -482,11 +481,17 @@ define app_namespace_add_del_reply
   u32 appns_index;
 };
 
+enum session_rule_scope {
+       SESSION_RULE_SCOPE_API_GLOBAL = 0,
+       SESSION_RULE_SCOPE_API_LOCAL = 1,
+       SESSION_RULE_SCOPE_API_BOTH = 2,
+};
+
 /** \brief add/del session rule
     @param client_index - opaque cookie to identify the sender
                           client to vpp direction only
     @param context - sender context, to match reply w/ request
-    @param transport_proto - transport protocol (0 - tcp 1 - udp)
+    @param transport_proto - transport protocol
     @param is_ip4 - flag to indicate if ip addresses are ip4 or 6
     @param lcl_ip - local ip
     @param lcl_plen - local prefix length
@@ -498,25 +503,23 @@ define app_namespace_add_del_reply
                           application with index action_index
     @param is_add - flag to indicate if add or del
     @param appns_index - application namespace where rule is to be applied to
-    @param scope - flag that indicates scope of the rule: global or local.
+    @param scope - enum that indicates scope of the rule: global or local.
                    If 0, default is global, 1 is global 2 is local, 3 is both
+    @param tag - tag
 */
 autoreply define session_rule_add_del {
   u32 client_index;
   u32 context;
-  u8 transport_proto;
-  u8 is_ip4;
-  u8 lcl_ip[16];
-  u8 lcl_plen;
-  u8 rmt_ip[16];
-  u8 rmt_plen;
+  vl_api_transport_proto_t transport_proto;
+  vl_api_prefix_t lcl;
+  vl_api_prefix_t rmt;
   u16 lcl_port;
   u16 rmt_port;
   u32 action_index;
-  u8 is_add;
+  bool is_add [default=true];
   u32 appns_index;
-  u8 scope;
-  u8 tag[64];
+  vl_api_session_rule_scope_t scope;
+  string tag[64];
 };
 
 /** \brief Dump session rules
@@ -531,7 +534,7 @@ define session_rules_dump
 
 /** \brief Session rules details
     @param context - sender context, to match reply w/ request
-    @param transport_proto - transport protocol (0 - tcp 1 - udp)
+    @param transport_proto - transport protocol
     @param is_ip4 - flag to indicate if ip addresses are ip4 or 6
     @param lcl_ip - local ip
     @param lcl_plen - local prefix length
@@ -542,24 +545,22 @@ define session_rules_dump
     @param action_index - the only action defined now is forward to
                           application with index action_index
     @param appns_index - application namespace where rule is to be applied to
-    @param scope - flag that indicates scope of the rule: global or local.
+    @param scope - enum that indicates scope of the rule: global or local.
                    If 0, default is global, 1 is global 2 is local, 3 is both
+    @param tag - tag
   */
 define session_rules_details
 {
   u32 context;
-  u8 transport_proto;
-  u8 is_ip4;
-  u8 lcl_ip[16];
-  u8 lcl_plen;
-  u8 rmt_ip[16];
-  u8 rmt_plen;
+  vl_api_transport_proto_t transport_proto;
+  vl_api_prefix_t lcl;
+  vl_api_prefix_t rmt;
   u16 lcl_port;
   u16 rmt_port;
   u32 action_index;
   u32 appns_index;
-  u8 scope;
-  u8 tag[64];
+  vl_api_session_rule_scope_t scope;
+  string tag[64];
 };
 
 /*
index a95faad..eb5b2c3 100644 (file)
@@ -22,6 +22,8 @@
 #include <vnet/session/session_table.h>
 #include <vnet/session/session.h>
 
+#include <vnet/ip/ip_types_api.h>
+
 #include <vnet/vnet_msg_enum.h>
 
 #define vl_typedefs            /* define message structures */
@@ -63,6 +65,50 @@ _(APP_ADD_CERT_KEY_PAIR, app_add_cert_key_pair)                              \
 _(APP_DEL_CERT_KEY_PAIR, app_del_cert_key_pair)                                \
 _(APP_WORKER_ADD_DEL, app_worker_add_del)                              \
 
+static transport_proto_t
+api_session_transport_proto_decode (const vl_api_transport_proto_t * api_tp)
+{
+  switch (*api_tp)
+    {
+    case TRANSPORT_PROTO_API_TCP:
+      return TRANSPORT_PROTO_TCP;
+    case TRANSPORT_PROTO_API_UDP:
+      return TRANSPORT_PROTO_UDP;
+    case TRANSPORT_PROTO_API_SCTP:
+      return TRANSPORT_PROTO_SCTP;
+    case TRANSPORT_PROTO_API_TLS:
+      return TRANSPORT_PROTO_TLS;
+    case TRANSPORT_PROTO_API_UDPC:
+      return TRANSPORT_PROTO_UDPC;
+    case TRANSPORT_PROTO_API_QUIC:
+      return TRANSPORT_PROTO_QUIC;
+    default:
+      return TRANSPORT_PROTO_NONE;
+    }
+}
+
+static vl_api_transport_proto_t
+api_session_transport_proto_encode (const transport_proto_t tp)
+{
+  switch (tp)
+    {
+    case TRANSPORT_PROTO_TCP:
+      return TRANSPORT_PROTO_API_TCP;
+    case TRANSPORT_PROTO_UDP:
+      return TRANSPORT_PROTO_API_UDP;
+    case TRANSPORT_PROTO_SCTP:
+      return TRANSPORT_PROTO_API_SCTP;
+    case TRANSPORT_PROTO_TLS:
+      return TRANSPORT_PROTO_API_TLS;
+    case TRANSPORT_PROTO_UDPC:
+      return TRANSPORT_PROTO_API_UDPC;
+    case TRANSPORT_PROTO_QUIC:
+      return TRANSPORT_PROTO_API_QUIC;
+    default:
+      return TRANSPORT_PROTO_API_NONE;
+    }
+}
+
 static int
 session_send_fds (vl_api_registration_t * reg, int fds[], int n_fds)
 {
@@ -680,18 +726,8 @@ vl_api_application_attach_t_handler (vl_api_application_attach_t * mp)
   a->api_client_index = mp->client_index;
   a->options = mp->options;
   a->session_cb_vft = &session_mq_cb_vft_old;
-  if (mp->namespace_id_len > 64)
-    {
-      rv = VNET_API_ERROR_INVALID_VALUE;
-      goto done;
-    }
-
-  if (mp->namespace_id_len)
-    {
-      vec_validate (a->namespace_id, mp->namespace_id_len - 1);
-      clib_memcpy_fast (a->namespace_id, mp->namespace_id,
-                       mp->namespace_id_len);
-    }
+  a->namespace_id =
+    (u8 *) vl_api_from_api_to_new_c_string (&mp->namespace_id);
 
   if ((rv = vnet_application_attach (a)))
     {
@@ -730,13 +766,8 @@ done:
       {
        segp = a->segment;
        rmp->app_index = clib_host_to_net_u32 (a->app_index);
-       rmp->segment_name_length = 0;
+        vl_api_vec_to_api_string (segp->name, &rmp->segment_name);
        rmp->segment_size = segp->ssvm_size;
-       if (vec_len (segp->name))
-         {
-           memcpy (rmp->segment_name, segp->name, vec_len (segp->name));
-           rmp->segment_name_length = vec_len (segp->name);
-         }
        rmp->app_event_queue_address = pointer_to_uword (a->app_evt_q);
        rmp->n_fds = n_fds;
        rmp->fd_flags = fd_flags;
@@ -778,18 +809,8 @@ vl_api_app_attach_t_handler (vl_api_app_attach_t * mp)
   a->api_client_index = mp->client_index;
   a->options = mp->options;
   a->session_cb_vft = &session_mq_cb_vft;
-  if (mp->namespace_id_len > 64)
-    {
-      rv = VNET_API_ERROR_INVALID_VALUE;
-      goto done;
-    }
 
-  if (mp->namespace_id_len)
-    {
-      vec_validate (a->namespace_id, mp->namespace_id_len - 1);
-      clib_memcpy_fast (a->namespace_id, mp->namespace_id,
-                       mp->namespace_id_len);
-    }
+  a->namespace_id = vl_api_from_api_to_new_vec (&mp->namespace_id);
 
   if ((rv = vnet_application_attach (a)))
     {
@@ -836,8 +857,7 @@ done:
        rmp->fd_flags = fd_flags;
        if (vec_len (segp->name))
          {
-           memcpy (rmp->segment_name, segp->name, vec_len (segp->name));
-           rmp->segment_name_length = vec_len (segp->name);
+           vl_api_vec_to_api_string (segp->name, &rmp->segment_name);
          }
        rmp->segment_size = segp->ssvm_size;
        rmp->segment_handle = clib_host_to_net_u64 (a->segment_handle);
@@ -1063,7 +1083,6 @@ vl_api_bind_sock_t_handler (vl_api_bind_sock_t * mp)
   vl_api_bind_sock_reply_t *rmp;
   application_t *app = 0;
   app_worker_t *app_wrk;
-  ip46_address_t *ip46;
   int rv = 0;
 
   if (session_main_is_enabled () == 0)
@@ -1079,14 +1098,13 @@ vl_api_bind_sock_t_handler (vl_api_bind_sock_t * mp)
       goto done;
     }
 
-  ip46 = (ip46_address_t *) mp->ip;
   clib_memset (a, 0, sizeof (*a));
-  a->sep.is_ip4 = mp->is_ip4;
-  a->sep.ip = *ip46;
+  ip_address_decode (&mp->ip, &a->sep.ip);
+  a->sep.is_ip4 = ip46_address_is_ip4 (&a->sep.ip);
   a->sep.port = mp->port;
   a->sep.fib_index = mp->vrf;
   a->sep.sw_if_index = ENDPOINT_INVALID_INDEX;
-  a->sep.transport_proto = mp->proto;
+  a->sep.transport_proto = api_session_transport_proto_decode (&mp->proto);
   a->app_index = app->app_index;
   a->wrk_map_index = mp->wrk_index;
 
@@ -1167,24 +1185,20 @@ vl_api_connect_sock_t_handler (vl_api_connect_sock_t * mp)
   if (app)
     {
       svm_queue_t *client_q;
-      ip46_address_t *ip46 = (ip46_address_t *) mp->ip;
 
       clib_memset (a, 0, sizeof (*a));
       client_q = vl_api_client_index_to_input_queue (mp->client_index);
       mp->client_queue_address = pointer_to_uword (client_q);
-      a->sep.is_ip4 = mp->is_ip4;
-      a->sep.ip = *ip46;
+      ip_address_decode (&mp->ip, &a->sep.ip);
+      a->sep.is_ip4 = ip46_address_is_ip4 (&a->sep.ip);
       a->sep.port = mp->port;
-      a->sep.transport_proto = mp->proto;
+      a->sep.transport_proto =
+       api_session_transport_proto_decode (&mp->proto);
       a->sep.peer.fib_index = mp->vrf;
       a->sep.peer.sw_if_index = ENDPOINT_INVALID_INDEX;
       a->sep_ext.parent_handle = mp->parent_handle;
-      if (mp->hostname_len)
-       {
-         vec_validate (a->sep_ext.hostname, mp->hostname_len - 1);
-         clib_memcpy_fast (a->sep_ext.hostname, mp->hostname,
-                           mp->hostname_len);
-       }
+      a->sep_ext.hostname =
+       (u8 *) vl_api_from_api_to_new_c_string (&mp->hostname);
       a->api_context = mp->context;
       a->app_index = app->app_index;
       a->wrk_map_index = mp->wrk_index;
@@ -1278,9 +1292,7 @@ done:
       {
        if (vec_len (args.segment->name))
          {
-           memcpy (rmp->segment_name, args.segment->name,
-                   vec_len (args.segment->name));
-           rmp->segment_name_length = vec_len (args.segment->name);
+           vl_api_vec_to_api_string (args.segment->name, &rmp->segment_name);
          }
        rmp->app_event_queue_address = pointer_to_uword (args.evt_q);
        rmp->n_fds = n_fds;
@@ -1306,14 +1318,8 @@ vl_api_app_namespace_add_del_t_handler (vl_api_app_namespace_add_del_t * mp)
       goto done;
     }
 
-  if (mp->namespace_id_len > ARRAY_LEN (mp->namespace_id))
-    {
-      rv = VNET_API_ERROR_INVALID_VALUE;
-      goto done;
-    }
+  ns_id = vl_api_from_api_to_new_vec (&mp->namespace_id);
 
-  vec_validate (ns_id, mp->namespace_id_len - 1);
-  clib_memcpy_fast (ns_id, mp->namespace_id, mp->namespace_id_len);
   vnet_app_namespace_add_del_args_t args = {
     .ns_id = ns_id,
     .secret = clib_net_to_host_u64 (mp->secret),
@@ -1349,16 +1355,13 @@ vl_api_session_rule_add_del_t_handler (vl_api_session_rule_add_del_t * mp)
   vl_api_session_rule_add_del_reply_t *rmp;
   session_rule_add_del_args_t args;
   session_rule_table_add_del_args_t *table_args = &args.table_args;
-  u8 fib_proto;
   int rv = 0;
 
   clib_memset (&args, 0, sizeof (args));
-  fib_proto = mp->is_ip4 ? FIB_PROTOCOL_IP4 : FIB_PROTOCOL_IP6;
 
-  table_args->lcl.fp_len = mp->lcl_plen;
-  table_args->lcl.fp_proto = fib_proto;
-  table_args->rmt.fp_len = mp->rmt_plen;
-  table_args->rmt.fp_proto = fib_proto;
+  ip_prefix_decode (&mp->lcl, &table_args->lcl);
+  ip_prefix_decode (&mp->rmt, &table_args->rmt);
+
   table_args->lcl_port = mp->lcl_port;
   table_args->rmt_port = mp->rmt_port;
   table_args->action_index = clib_net_to_host_u32 (mp->action_index);
@@ -1367,12 +1370,10 @@ vl_api_session_rule_add_del_t_handler (vl_api_session_rule_add_del_t * mp)
   table_args->tag = format (0, "%s", mp->tag);
   args.appns_index = clib_net_to_host_u32 (mp->appns_index);
   args.scope = mp->scope;
-  args.transport_proto = mp->transport_proto;
+  args.transport_proto =
+    api_session_transport_proto_decode (&mp->transport_proto) ==
+    TRANSPORT_PROTO_UDP ? 1 : 0;
 
-  clib_memset (&table_args->lcl.fp_addr, 0, sizeof (table_args->lcl.fp_addr));
-  clib_memset (&table_args->rmt.fp_addr, 0, sizeof (table_args->rmt.fp_addr));
-  ip_set (&table_args->lcl.fp_addr, mp->lcl_ip, mp->is_ip4);
-  ip_set (&table_args->rmt.fp_addr, mp->rmt_ip, mp->is_ip4);
   rv = vnet_session_rule_add_del (&args);
   if (rv)
     clib_warning ("rule add del returned: %d", rv);
@@ -1390,23 +1391,28 @@ send_session_rule_details4 (mma_rule_16_t * rule, u8 is_local,
     (session_mask_or_match_4_t *) & rule->match;
   session_mask_or_match_4_t *mask =
     (session_mask_or_match_4_t *) & rule->mask;
+  fib_prefix_t lcl, rmt;
 
   rmp = vl_msg_api_alloc (sizeof (*rmp));
   clib_memset (rmp, 0, sizeof (*rmp));
   rmp->_vl_msg_id = ntohs (VL_API_SESSION_RULES_DETAILS);
   rmp->context = context;
 
-  rmp->is_ip4 = 1;
-  clib_memcpy_fast (rmp->lcl_ip, &match->lcl_ip, sizeof (match->lcl_ip));
-  clib_memcpy_fast (rmp->rmt_ip, &match->rmt_ip, sizeof (match->rmt_ip));
-  rmp->lcl_plen = ip4_mask_to_preflen (&mask->lcl_ip);
-  rmp->rmt_plen = ip4_mask_to_preflen (&mask->rmt_ip);
+  clib_memset (&lcl, 0, sizeof (lcl));
+  clib_memset (&rmt, 0, sizeof (rmt));
+  ip_set (&lcl.fp_addr, &match->lcl_ip, 1);
+  ip_set (&rmt.fp_addr, &match->rmt_ip, 1);
+  lcl.fp_len = ip4_mask_to_preflen (&mask->lcl_ip);
+  rmt.fp_len = ip4_mask_to_preflen (&mask->rmt_ip);
+
+  ip_prefix_encode (&lcl, &rmp->lcl);
+  ip_prefix_encode (&rmt, &rmp->rmt);
   rmp->lcl_port = match->lcl_port;
   rmp->rmt_port = match->rmt_port;
   rmp->action_index = clib_host_to_net_u32 (rule->action_index);
   rmp->scope =
-    is_local ? SESSION_RULE_SCOPE_LOCAL : SESSION_RULE_SCOPE_GLOBAL;
-  rmp->transport_proto = transport_proto;
+    is_local ? SESSION_RULE_SCOPE_API_LOCAL : SESSION_RULE_SCOPE_API_GLOBAL;
+  rmp->transport_proto = api_session_transport_proto_encode (transport_proto);
   rmp->appns_index = clib_host_to_net_u32 (appns_index);
   if (tag)
     {
@@ -1427,23 +1433,28 @@ send_session_rule_details6 (mma_rule_40_t * rule, u8 is_local,
     (session_mask_or_match_6_t *) & rule->match;
   session_mask_or_match_6_t *mask =
     (session_mask_or_match_6_t *) & rule->mask;
+  fib_prefix_t lcl, rmt;
 
   rmp = vl_msg_api_alloc (sizeof (*rmp));
   clib_memset (rmp, 0, sizeof (*rmp));
   rmp->_vl_msg_id = ntohs (VL_API_SESSION_RULES_DETAILS);
   rmp->context = context;
 
-  rmp->is_ip4 = 0;
-  clib_memcpy_fast (rmp->lcl_ip, &match->lcl_ip, sizeof (match->lcl_ip));
-  clib_memcpy_fast (rmp->rmt_ip, &match->rmt_ip, sizeof (match->rmt_ip));
-  rmp->lcl_plen = ip6_mask_to_preflen (&mask->lcl_ip);
-  rmp->rmt_plen = ip6_mask_to_preflen (&mask->rmt_ip);
+  clib_memset (&lcl, 0, sizeof (lcl));
+  clib_memset (&rmt, 0, sizeof (rmt));
+  ip_set (&lcl.fp_addr, &match->lcl_ip, 0);
+  ip_set (&rmt.fp_addr, &match->rmt_ip, 0);
+  lcl.fp_len = ip6_mask_to_preflen (&mask->lcl_ip);
+  rmt.fp_len = ip6_mask_to_preflen (&mask->rmt_ip);
+
+  ip_prefix_encode (&lcl, &rmp->lcl);
+  ip_prefix_encode (&rmt, &rmp->rmt);
   rmp->lcl_port = match->lcl_port;
   rmp->rmt_port = match->rmt_port;
   rmp->action_index = clib_host_to_net_u32 (rule->action_index);
   rmp->scope =
-    is_local ? SESSION_RULE_SCOPE_LOCAL : SESSION_RULE_SCOPE_GLOBAL;
-  rmp->transport_proto = transport_proto;
+    is_local ? SESSION_RULE_SCOPE_API_LOCAL : SESSION_RULE_SCOPE_API_GLOBAL;
+  rmp->transport_proto = api_session_transport_proto_encode (transport_proto);
   rmp->appns_index = clib_host_to_net_u32 (appns_index);
   if (tag)
     {
index 854af20..a4e04eb 100644 (file)
@@ -3382,13 +3382,13 @@ static void *vl_api_app_namespace_add_del_t_print
   (vl_api_app_namespace_add_del_t * mp, void *handle)
 {
   u8 *s;
-  u8 len = clib_min (mp->namespace_id_len,
-                    ARRAY_LEN (mp->namespace_id) - 1);
-  mp->namespace_id[len] = 0;
+
   s = format (0, "SCRIPT: app_namespace_add_del ");
   s = format (s, "ns-id %s secret %lu sw_if_index %d ipv4_fib_id %d "
-             "ipv6_fib_id %d", (char *) mp->namespace_id, mp->secret,
-             (mp->sw_if_index), (mp->ip4_fib_id), (mp->ip6_fib_id));
+             "ipv6_fib_id %d",
+             vl_api_from_api_to_new_c_string (&mp->namespace_id),
+             mp->secret, (mp->sw_if_index), (mp->ip4_fib_id),
+             (mp->ip6_fib_id));
   FINISH;
 }
 
@@ -3437,21 +3437,25 @@ static void *vl_api_session_rule_add_del_t_print
   (vl_api_session_rule_add_del_t * mp, void *handle)
 {
   u8 *s;
+  fib_prefix_t lcl, rmt;
   char *proto = mp->transport_proto == 0 ? "tcp" : "udp";
   s = format (0, "SCRIPT: session_rule_add_del ");
   mp->tag[sizeof (mp->tag) - 1] = 0;
-  if (mp->is_ip4)
+  ip_prefix_decode (&mp->lcl, &lcl);
+  ip_prefix_decode (&mp->rmt, &rmt);
+
+  if (lcl.fp_proto == FIB_PROTOCOL_IP4)
     s = format (s, "appns %d scope %d %s %U/%d %d %U/%d %d action %u tag %s",
                mp->appns_index, mp->scope, proto, format_ip4_address,
-               (ip4_address_t *) mp->lcl_ip, mp->lcl_plen,
-               format_ip4_address, (ip4_address_t *) mp->rmt_ip,
-               mp->rmt_plen, mp->action_index, mp->tag);
+               &lcl.fp_addr.ip4, lcl.fp_len,
+               format_ip4_address, &rmt.fp_addr.ip4,
+               rmt.fp_len, mp->action_index, mp->tag);
   else
     s = format (s, "appns %d scope %d %s %U/%d %d %U/%d %d action %u tag %s",
                mp->appns_index, mp->scope, proto, format_ip6_address,
-               (ip6_address_t *) mp->lcl_ip, mp->lcl_plen,
-               format_ip6_address, (ip6_address_t *) mp->rmt_ip,
-               mp->rmt_plen, mp->action_index, mp->tag);
+               &lcl.fp_addr.ip6, lcl.fp_len,
+               format_ip6_address, &rmt.fp_addr.ip6,
+               rmt.fp_len, mp->action_index, mp->tag);
   FINISH;
 }
 
index 60e5eb4..94218d0 100644 (file)
@@ -37,9 +37,9 @@ class TestSession(VppTestCase):
             table_id += 1
 
         # Configure namespaces
-        self.vapi.app_namespace_add_del(namespace_id=b"0",
+        self.vapi.app_namespace_add_del(namespace_id="0",
                                         sw_if_index=self.loop0.sw_if_index)
-        self.vapi.app_namespace_add_del(namespace_id=b"1",
+        self.vapi.app_namespace_add_del(namespace_id="1",
                                         sw_if_index=self.loop1.sw_if_index)
 
     def tearDown(self):
index 8decac5..40579e2 100644 (file)
@@ -36,9 +36,9 @@ class TestTCP(VppTestCase):
             table_id += 1
 
         # Configure namespaces
-        self.vapi.app_namespace_add_del(namespace_id=b"0",
+        self.vapi.app_namespace_add_del(namespace_id="0",
                                         sw_if_index=self.loop0.sw_if_index)
-        self.vapi.app_namespace_add_del(namespace_id=b"1",
+        self.vapi.app_namespace_add_del(namespace_id="1",
                                         sw_if_index=self.loop1.sw_if_index)
 
     def tearDown(self):
index 86ee3cc..008664d 100644 (file)
@@ -82,9 +82,9 @@ class TestTLS(VppTestCase):
             table_id += 1
 
         # Configure namespaces
-        self.vapi.app_namespace_add_del(namespace_id=b"0",
+        self.vapi.app_namespace_add_del(namespace_id="0",
                                         sw_if_index=self.loop0.sw_if_index)
-        self.vapi.app_namespace_add_del(namespace_id=b"1",
+        self.vapi.app_namespace_add_del(namespace_id="1",
                                         sw_if_index=self.loop1.sw_if_index)
 
     def tearDown(self):
index af64f8a..5336675 100644 (file)
@@ -277,9 +277,9 @@ class TestUDP(VppTestCase):
             table_id += 1
 
         # Configure namespaces
-        self.vapi.app_namespace_add_del(namespace_id="0".encode('ascii'),
+        self.vapi.app_namespace_add_del(namespace_id="0",
                                         sw_if_index=self.loop0.sw_if_index)
-        self.vapi.app_namespace_add_del(namespace_id="1".encode('ascii'),
+        self.vapi.app_namespace_add_del(namespace_id="1",
                                         sw_if_index=self.loop1.sw_if_index)
 
     def tearDown(self):
index f9c72fa..bf3f17d 100644 (file)
@@ -1564,8 +1564,7 @@ class VppPapiProvider(object):
              'sw_if_index': sw_if_index,
              'ip4_fib_id': ip4_fib_id,
              'ip6_fib_id': ip6_fib_id,
-             'namespace_id': namespace_id,
-             'namespace_id_len': len(namespace_id)})
+             'namespace_id': namespace_id})
 
     def punt_socket_register(self, reg, pathname,
                              header_version=1):