summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMohammed Hawari <mohammed@hawari.fr>2023-12-08 11:16:54 +0100
committerDamjan Marion <dmarion@0xa5.net>2023-12-14 16:29:53 +0000
commitbc67e9fd206ef3d6234960a61a7f9ab56a938ef2 (patch)
treee98ab163c36985f200dd2ac30b570e32c60e81c2 /src
parenta474bc8a3b4307869e97e6d76a8b06cfcebea49a (diff)
bpf_trace_filter: allow use whithout classifier
Change-Id: I7ac5693ca547fe7249e7b6297bade70a6052b169 Type: improvement Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/bpf_trace_filter/bpf_trace_filter.c4
-rw-r--r--src/vlib/trace.c7
-rw-r--r--src/vnet/classify/trace_classify.h3
3 files changed, 5 insertions, 9 deletions
diff --git a/src/plugins/bpf_trace_filter/bpf_trace_filter.c b/src/plugins/bpf_trace_filter/bpf_trace_filter.c
index ff08d2cdb80..01d5b1e96a7 100644
--- a/src/plugins/bpf_trace_filter/bpf_trace_filter.c
+++ b/src/plugins/bpf_trace_filter/bpf_trace_filter.c
@@ -64,9 +64,9 @@ bpf_is_packed_traced (vlib_buffer_t *b, u32 classify_table_index, int func)
struct pcap_pkthdr phdr = { 0 };
int res;
int res1;
- res1 = vnet_is_packet_traced (b, classify_table_index, 0);
- if (res1 != 1)
+ if (classify_table_index != ~0 &&
+ (res1 = vnet_is_packet_traced (b, classify_table_index, 0)) != 1)
return res1;
if (!bfm->prog_set)
diff --git a/src/vlib/trace.c b/src/vlib/trace.c
index 96da4975bc2..15355572cb9 100644
--- a/src/vlib/trace.c
+++ b/src/vlib/trace.c
@@ -463,13 +463,6 @@ cli_add_trace_buffer (vlib_main_t * vm,
goto done;
}
- u32 filter_table = classify_get_trace_chain ();
- if (filter && filter_table == ~0)
- {
- error = clib_error_create ("No packet trace filter configured...");
- goto done;
- }
-
trace_update_capture_options (add, node_index, filter, verbose);
done:
diff --git a/src/vnet/classify/trace_classify.h b/src/vnet/classify/trace_classify.h
index fea4ddee7e7..03421210d03 100644
--- a/src/vnet/classify/trace_classify.h
+++ b/src/vnet/classify/trace_classify.h
@@ -45,6 +45,9 @@ vnet_is_packet_traced_inline (vlib_buffer_t * b,
if (func != 0)
return -1;
+ if (classify_table_index == ~0)
+ return -1;
+
/* This will happen... */
if (pool_is_free_index (vcm->tables, classify_table_index))
return -1;