classify: "classify filter ..." debug CLI cleanup 23/24123/3
authorDave Barach <dave@barachs.net>
Tue, 24 Dec 2019 21:59:38 +0000 (16:59 -0500)
committerDave Barach <openvpp@barachs.net>
Wed, 25 Dec 2019 13:01:48 +0000 (13:01 +0000)
The pcap trace filter initial table index lives in
cm->filter_set_by_sw_if_index [0], which corresponds to the "local0"
interface. Debug cli makes sure that folks don't accidentally specify
the "local0" interface. At least it does now...

Fix the "vlib format.c code coverage" test in test/test_vlib.py.

Type: fix
Change-Id: I35320bc2c8f0c6f1f8c12e3529d1938548185151
Signed-off-by: Dave Barach <dave@barachs.net>
src/vnet/classify/vnet_classify.c
test/test_vlib.py

index de11a10..b02a5dc 100755 (executable)
@@ -1697,6 +1697,7 @@ classify_filter_command_fn (vlib_main_t * vm,
   int current_data_offset = 0;
   u32 sw_if_index = ~0;
   int pkt_trace = 0;
+  int pcap = 0;
   int i;
   vnet_classify_table_t *t;
   u8 *mask = 0;
@@ -1709,13 +1710,16 @@ classify_filter_command_fn (vlib_main_t * vm,
     {
       if (unformat (input, "del"))
        is_add = 0;
-      else if (unformat (input, "pcap %=", &sw_if_index, 0))
-       ;
+      else if (unformat (input, "pcap %=", &pcap, 1))
+       sw_if_index = 0;
       else if (unformat (input, "trace"))
        pkt_trace = 1;
       else if (unformat (input, "%U",
                         unformat_vnet_sw_interface, vnm, &sw_if_index))
-       ;
+       {
+         if (sw_if_index == 0)
+           return clib_error_return (0, "Local interface not supported...");
+       }
       else if (unformat (input, "buckets %d", &nbuckets))
        ;
       else if (unformat (input, "mask %U", unformat_classify_mask,
@@ -1728,9 +1732,6 @@ classify_filter_command_fn (vlib_main_t * vm,
        break;
     }
 
-  if (sw_if_index == 0)
-    return clib_error_return (0, "Local interface not supported...");
-
   if (is_add && mask == 0 && table_index == ~0)
     return clib_error_return (0, "Mask required");
 
@@ -1740,7 +1741,7 @@ classify_filter_command_fn (vlib_main_t * vm,
   if (is_add && match == ~0 && table_index == ~0)
     return clib_error_return (0, "match count required");
 
-  if (sw_if_index == ~0 && pkt_trace == 0)
+  if (sw_if_index == ~0 && pkt_trace == 0 && pcap == 0)
     return clib_error_return (0, "Must specify trace, pcap or interface...");
 
   if (pkt_trace && sw_if_index != ~0)
index eedfb2f..33dc602 100644 (file)
@@ -170,8 +170,8 @@ class TestVlib(VppTestCase):
         """ Vlib format.c Code Coverage Test """
 
         cmds = ["loopback create",
-                "classify filter pcap mask l2 proto ipv6 match l2 proto 86dd",
-                "classify filter del",
+                "classify filter pcap mask l2 proto match l2 proto 0x86dd",
+                "classify filter pcap del",
                 "test format-vlib",
                 ]