interface: shmemioerror while getting name_filter arg 40/23140/10
authorAleksander Djuric <aleksander.djuric@gmail.com>
Thu, 31 Oct 2019 11:35:21 +0000 (14:35 +0300)
committerPaul Vinciguerra <pvinci@vinciconsulting.com>
Thu, 7 Nov 2019 14:39:02 +0000 (14:39 +0000)
Type: fix

Signed-off-by: Aleksander Djuric <aleksander.djuric@gmail.com>
Change-Id: I5e0eb7024d208040d79e9d6db863f41e2ecf4ee6
Signed-off-by: Ole Troan <ot@cisco.com>
src/vnet/interface.api
src/vnet/interface_api.c
src/vpp/api/custom_dump.c
test/test_interface_crud.py

index 1db5ef3..efc5bb4 100644 (file)
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-option version = "3.2.0";
+option version = "3.2.1";
 
 import "vnet/interface_types.api";
 import "vnet/ethernet/ethernet_types.api";
index 5e9561f..3b0c515 100644 (file)
@@ -358,9 +358,8 @@ vl_api_sw_interface_dump_t_handler (vl_api_sw_interface_dump_t * mp)
 
   if (mp->name_filter_valid)
     {
-      filter =
-       format (0, ".*%s", vl_api_string_len (&mp->name_filter),
-               vl_api_from_api_string (&mp->name_filter), 0);
+      filter = vl_api_from_api_to_vec (&mp->name_filter);
+      vec_add1 (filter, 0);    /* Ensure it's a C string for strcasecmp() */
     }
 
   char *strcasestr (char *, char *);   /* lnx hdr file botch */
index e96f4ee..83761bf 100644 (file)
@@ -1902,7 +1902,11 @@ static void *vl_api_sw_interface_dump_t_print
   s = format (0, "SCRIPT: sw_interface_dump ");
 
   if (mp->name_filter_valid)
-    s = format (s, "name_filter %s ", mp->name_filter);
+    {
+      u8 *v = vl_api_from_api_to_vec (&mp->name_filter);
+      s = format (s, "name_filter %v ", v);
+      vec_free (v);
+    }
   else
     s = format (s, "all ");
 
index afeafa5..f701e27 100644 (file)
@@ -90,12 +90,17 @@ class TestLoopbackInterfaceCRUD(VppTestCase):
             i.admin_up()
 
         # read (check sw if dump, ip4 fib, ip6 fib)
-        if_dump = self.vapi.sw_interface_dump()
+        if_dump = self.vapi.sw_interface_dump(name_filter_valid=True,
+                                              name_filter='loop')
         fib4_dump = self.vapi.ip_route_dump(0)
         for i in loopbacks:
             self.assertTrue(i.is_interface_config_in_dump(if_dump))
             self.assertTrue(i.is_ip4_entry_in_fib_dump(fib4_dump))
 
+        if_dump = self.vapi.sw_interface_dump(name_filter_valid=True,
+                                              name_filter='loopXYZ')
+        self.assertEqual(len(if_dump), 0)
+
         # check ping
         stream = self.create_icmp_stream(self.pg0, loopbacks)
         self.pg0.add_stream(stream)