From 5cfe45211ac7977ab9bf07b817fe9a5d00226eb3 Mon Sep 17 00:00:00 2001 From: Benoît Ganne Date: Wed, 3 Mar 2021 17:37:25 +0100 Subject: misc: add filter for specific error for pcap trace MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Type: feature Change-Id: I325257454df1cc22833fa6a1dedd4739d4d5a558 Signed-off-by: Benoît Ganne --- src/vlib/error.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/vlib/error.c') diff --git a/src/vlib/error.c b/src/vlib/error.c index 99664c618a9..1a84e7e6801 100644 --- a/src/vlib/error.c +++ b/src/vlib/error.c @@ -210,6 +210,37 @@ vlib_register_errors (vlib_main_t * vm, } } +uword +unformat_vlib_error (unformat_input_t *input, va_list *args) +{ + vlib_main_t *vm = va_arg (*args, vlib_main_t *); + const vlib_error_main_t *em = &vm->error_main; + vlib_error_t *error_index = va_arg (*args, vlib_error_t *); + const vlib_node_t *node; + char *error_name; + u32 node_index; + vlib_error_t i; + + if (!unformat (input, "%U.%s", unformat_vlib_node, vm, &node_index, + &error_name)) + return 0; + + node = vlib_get_node (vm, node_index); + for (i = 0; i < node->n_errors; i++) + { + vlib_error_t ei = node->error_heap_index + i; + if (strcmp (em->counters_heap[ei].name, error_name) == 0) + { + *error_index = ei; + vec_free (error_name); + return 1; + } + } + + vec_free (error_name); + return 0; +} + static char * sev2str (enum vl_counter_severity_e s) { -- cgit 1.2.3-korg