summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2019-12-24 16:59:38 -0500
committerDave Barach <dave@barachs.net>2020-02-12 14:10:30 -0500
commitd3f6dc69bea7ffacbf5455a1f923c0a1af2ead23 (patch)
tree422e76376b9f9b318dcfd06c3ea605c795df0c7a /src
parent7c5a3536ce4c2fd4157c466367c495cefecaa52e (diff)
classify: "classify filter ..." debug CLI cleanup
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> (cherry picked from commit 29c6132108be68feb11c8d9bfaaf674cba86ee33)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/vnet/classify/vnet_classify.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/vnet/classify/vnet_classify.c b/src/vnet/classify/vnet_classify.c
index 3d338d15d07..fff279e798c 100755
--- a/src/vnet/classify/vnet_classify.c
+++ b/src/vnet/classify/vnet_classify.c
@@ -1694,6 +1694,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;
@@ -1706,13 +1707,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,
@@ -1725,9 +1729,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");
@@ -1737,7 +1738,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)