#include <vnet/session/session.h>
#include <math.h>
-static char *tcp_error_strings[] = {
-#define tcp_error(n,s) s,
+static vlib_error_desc_t tcp_input_error_counters[] = {
+#define tcp_error(f, n, s, d) { #n, d, VL_COUNTER_SEVERITY_##s },
#include <vnet/tcp/tcp_error.def>
#undef tcp_error
};
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_ESTABLISHED_N_NEXT,
.next_nodes =
{
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_ESTABLISHED_N_NEXT,
.next_nodes =
{
/* Valid SYN or SYN-ACK. Move connection from half-open pool to
* current thread pool. */
- new_tc = tcp_connection_alloc_w_base (thread_index, tc);
+ new_tc = tcp_connection_alloc_w_base (thread_index, &tc);
new_tc->rcv_nxt = vnet_buffer (b[0])->tcp.seq_end;
new_tc->irs = seq;
new_tc->timers[TCP_TIMER_RETRANSMIT_SYN] = TCP_TIMER_HANDLE_INVALID;
- new_tc->sw_if_index = vnet_buffer (b[0])->sw_if_index[VLIB_RX];
if (tcp_opts_tstamp (&new_tc->rcv_opts))
{
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_SYN_SENT_N_NEXT,
.next_nodes =
{
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_SYN_SENT_N_NEXT,
.next_nodes =
{
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_RCV_PROCESS_N_NEXT,
.next_nodes =
{
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_RCV_PROCESS_N_NEXT,
.next_nodes =
{
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_LISTEN_N_NEXT,
.next_nodes =
{
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_LISTEN_N_NEXT,
.next_nodes =
{
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_INPUT_N_NEXT,
.next_nodes =
{
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_INPUT_N_NEXT,
.next_nodes =
{
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_INPUT_N_NEXT,
.next_nodes =
{
/* Takes a vector of packets. */
.vector_size = sizeof (u32),
.n_errors = TCP_N_ERROR,
- .error_strings = tcp_error_strings,
+ .error_counters = tcp_input_error_counters,
.n_next_nodes = TCP_INPUT_N_NEXT,
.next_nodes =
{