typedef enum
{
-#define udp_error(n,s) UDP_ERROR_##n,
+#define udp_error(f, n, s, d) UDP_ERROR_##f,
#include <vnet/udp/udp_error.def>
#undef udp_error
UDP_N_ERROR,
* limitations under the License.
*/
-udp_error (NONE, "No error")
-udp_error (NO_LISTENER, "No listener for dst port")
-udp_error (LENGTH_ERROR, "Packets with length errors")
-udp_error (PUNT, "No listener punt")
-udp_error (ENQUEUED, "Packets enqueued")
-udp_error (FIFO_FULL, "Fifo full")
-udp_error (NOT_READY, "Connection not ready")
-udp_error (ACCEPT, "Accepted session")
-udp_error (CREATE_SESSION, "Failed to create session")
-udp_error (MQ_FULL, "Application msg queue full")
+udp_error (NONE, none, INFO, "No error")
+udp_error (NO_LISTENER, no_listener, ERROR, "No listener for dst port")
+udp_error (LENGTH_ERROR, length_error, ERROR, "Packets with length errors")
+udp_error (PUNT, punt, ERROR, "No listener punt")
+udp_error (ENQUEUED, enqueued, INFO, "Packets enqueued")
+udp_error (FIFO_FULL, fifo_full, ERROR, "Fifo full")
+udp_error (NOT_READY, not_ready, ERROR, "Connection not ready")
+udp_error (ACCEPT, accept, INFO, "Accepted session")
+udp_error (CREATE_SESSION, create_session, ERROR, "Failed to create session")
+udp_error (MQ_FULL, mq_full, ERROR, "Application msg queue full")
#include <vnet/udp/udp_packet.h>
#include <vnet/session/session.h>
-static char *udp_error_strings[] = {
-#define udp_error(n,s) s,
+static vlib_error_desc_t udp_error_counters[] = {
+#define udp_error(f, n, s, d) { #n, d, VL_COUNTER_SEVERITY_##s },
#include "udp_error.def"
#undef udp_error
};
.vector_size = sizeof (u32),
.format_trace = format_udp_input_trace,
.type = VLIB_NODE_TYPE_INTERNAL,
- .n_errors = ARRAY_LEN (udp_error_strings),
- .error_strings = udp_error_strings,
+ .n_errors = UDP_N_ERROR,
+ .error_counters = udp_error_counters,
.n_next_nodes = UDP_INPUT_N_NEXT,
.next_nodes = {
#define _(s, n) [UDP_INPUT_NEXT_##s] = n,
.vector_size = sizeof (u32),
.format_trace = format_udp_input_trace,
.type = VLIB_NODE_TYPE_INTERNAL,
- .n_errors = ARRAY_LEN (udp_error_strings),
- .error_strings = udp_error_strings,
+ .n_errors = UDP_N_ERROR,
+ .error_counters = udp_error_counters,
.n_next_nodes = UDP_INPUT_N_NEXT,
.next_nodes = {
#define _(s, n) [UDP_INPUT_NEXT_##s] = n,
u8 bound;
} udp_local_rx_trace_t;
+static vlib_error_desc_t udp_error_counters[] = {
+#define udp_error(f, n, s, d) { #n, d, VL_COUNTER_SEVERITY_##s },
+#include "udp_error.def"
+#undef udp_error
+};
+
#define UDP_NO_NODE_SET ((u16) ~0)
#ifndef CLIB_MARCH_VARIANT
return from_frame->n_vectors;
}
-static char *udp_error_strings[] = {
-#define udp_error(n,s) s,
-#include "udp_error.def"
-#undef udp_error
-};
-
VLIB_NODE_FN (udp4_local_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * from_frame)
.vector_size = sizeof (u32),
.n_errors = UDP_N_ERROR,
- .error_strings = udp_error_strings,
+ .error_counters = udp_error_counters,
.n_next_nodes = UDP_LOCAL_N_NEXT,
.next_nodes = {
.vector_size = sizeof (u32),
.n_errors = UDP_N_ERROR,
- .error_strings = udp_error_strings,
+ .error_counters = udp_error_counters,
.n_next_nodes = UDP_LOCAL_N_NEXT,
.next_nodes = {
self.pg_start()
err = self.statistics.get_counter(
- '/err/ip4-udp-lookup/No listener for dst port')[0]
+ '/err/ip4-udp-lookup/no_listener')[0]
if enabled:
self.assertEqual(err, self.ip4_err)
self.pg_start()
err = self.statistics.get_counter(
- '/err/ip6-udp-lookup/No listener for dst port')[0]
+ '/err/ip6-udp-lookup/no_listener')[0]
if enabled:
self.assertEqual(err, self.ip6_err)
""" Drop Packet Capture Filter Test """
self.cli(
"pcap trace drop max 1000 "
- "error {ip4-udp-lookup}.{No listener for dst port} "
+ "error {ip4-udp-lookup}.{no_listener} "
"file vpp_test_trace_filter_test_pcap_drop.pcap")
# the packet we are trying to match
p = list()