sctp_connection_t *
sctp_connection_new (u8 thread_index)
{
- sctp_main_t *tm = vnet_get_sctp_main ();
+ sctp_main_t *sctp_main = vnet_get_sctp_main ();
sctp_connection_t *sctp_conn;
- pool_get (tm->connections[thread_index], sctp_conn);
+ pool_get (sctp_main->connections[thread_index], sctp_conn);
memset (sctp_conn, 0, sizeof (*sctp_conn));
sctp_conn->sub_conn[MAIN_SCTP_SUB_CONN_IDX].parent = sctp_conn;
sctp_conn->sub_conn[MAIN_SCTP_SUB_CONN_IDX].c_c_index =
- sctp_conn - tm->connections[thread_index];
+ sctp_conn - sctp_main->connections[thread_index];
sctp_conn->sub_conn[MAIN_SCTP_SUB_CONN_IDX].c_thread_index = thread_index;
sctp_conn->local_tag = 0;
sctp_conn->next_avail_sub_conn = 1;
{
ASSERT (thread_index == 0);
- sctp_connection_t *sctp_conn;
- sctp_conn = sctp_connection_get (conn_index, thread_index);
+ sctp_connection_t *sctp_conn =
+ sctp_connection_get (conn_index, thread_index);
if (sctp_conn != NULL)
sctp_connection_close (sctp_conn);
}
void
sctp_session_cleanup (u32 conn_index, u32 thread_index)
{
- sctp_connection_t *sctp_conn;
- sctp_conn = sctp_connection_get (conn_index, thread_index);
+ sctp_connection_t *sctp_conn =
+ sctp_connection_get (conn_index, thread_index);
if (sctp_conn != NULL)
{
sctp_timer_set (sctp_conn, idx,
SCTP_TIMER_T1_COOKIE, sctp_conn->sub_conn[idx].RTO);
- stream_session_accept_notify (&sctp_conn->sub_conn[idx].connection);
-
return SCTP_ERROR_NONE;
}
sctp_timer_set (sctp_conn, idx, SCTP_TIMER_T4_HEARTBEAT,
sctp_conn->sub_conn[idx].RTO);
+ stream_session_accept_notify (&sctp_conn->sub_conn[idx].connection);
+
return SCTP_ERROR_NONE;
}
sctp_timer_set (sctp_conn, idx, SCTP_TIMER_T4_HEARTBEAT,
sctp_conn->sub_conn[idx].RTO);
+ stream_session_accept_notify (&sctp_conn->sub_conn[idx].connection);
+
return SCTP_ERROR_NONE;
}
error0 = tm->dispatch_table[sctp_conn->state][chunk_type].error;
SCTP_DBG_STATE_MACHINE
- ("SESSION_INDEX = %u, CURRENT_CONNECTION_STATE = %s,"
+ ("S_INDEX = %u, C_INDEX = %u, TRANS_CONN = %p, SCTP_CONN = %p, CURRENT_CONNECTION_STATE = %s,"
"CHUNK_TYPE_RECEIVED = %s " "NEXT_PHASE = %s",
sctp_conn->sub_conn[MAIN_SCTP_SUB_CONN_IDX].
- connection.s_index, sctp_state_to_string (sctp_conn->state),
+ connection.s_index,
+ sctp_conn->sub_conn[MAIN_SCTP_SUB_CONN_IDX].
+ connection.c_index, trans_conn, sctp_conn,
+ sctp_state_to_string (sctp_conn->state),
sctp_chunk_to_string (chunk_type), phase_to_string (next0));
if (chunk_type == DATA)
b->current_length = 0;
b->total_length_not_including_first_buffer = 0;
vnet_buffer (b)->sctp.flags = 0;
- vnet_buffer (b)->sctp.conn_idx = MAX_SCTP_CONNECTIONS;
+ vnet_buffer (b)->sctp.subconn_idx = MAX_SCTP_CONNECTIONS;
/* Leave enough space for headers */
return vlib_buffer_make_headroom (b, MAX_HDRS_LEN);
b->flags |= VNET_BUFFER_F_LOCALLY_ORIGINATED;
b->total_length_not_including_first_buffer = 0;
vnet_buffer (b)->sctp.flags = 0;
- vnet_buffer (b)->sctp.conn_idx = MAX_SCTP_CONNECTIONS;
+ vnet_buffer (b)->sctp.subconn_idx = MAX_SCTP_CONNECTIONS;
VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b);
/* Leave enough space for headers */
return vlib_buffer_make_headroom (b, MAX_HDRS_LEN);
sctp_conn->local_tag = init_chunk->initiate_tag;
vnet_buffer (b)->sctp.connection_index = sub_conn->c_c_index;
- vnet_buffer (b)->sctp.conn_idx = idx;
+ vnet_buffer (b)->sctp.subconn_idx = idx;
SCTP_DBG_STATE_MACHINE ("CONN_INDEX = %u, CURR_CONN_STATE = %u (%s), "
"CHUNK_TYPE = %s, "
vnet_buffer (b)->sctp.connection_index =
sctp_conn->sub_conn[idx].connection.c_index;
- vnet_buffer (b)->sctp.conn_idx = idx;
+ vnet_buffer (b)->sctp.subconn_idx = idx;
}
void
vnet_buffer (b)->sctp.connection_index =
sctp_conn->sub_conn[idx].connection.c_index;
- vnet_buffer (b)->sctp.conn_idx = idx;
+ vnet_buffer (b)->sctp.subconn_idx = idx;
}
/**
vnet_buffer (b)->sctp.connection_index =
sctp_conn->sub_conn[idx].connection.c_index;
- vnet_buffer (b)->sctp.conn_idx = idx;
+ vnet_buffer (b)->sctp.subconn_idx = idx;
}
/**
vnet_buffer (b)->sctp.connection_index =
sctp_conn->sub_conn[idx].connection.c_index;
- vnet_buffer (b)->sctp.conn_idx = idx;
+ vnet_buffer (b)->sctp.subconn_idx = idx;
}
/*
vnet_buffer (b)->sctp.connection_index =
sctp_conn->sub_conn[idx].connection.c_index;
- vnet_buffer (b)->sctp.conn_idx = idx;
+ vnet_buffer (b)->sctp.subconn_idx = idx;
}
/*
vnet_buffer (b)->sctp.connection_index =
sctp_conn->sub_conn[idx].connection.c_index;
- vnet_buffer (b)->sctp.conn_idx = idx;
+ vnet_buffer (b)->sctp.subconn_idx = idx;
}
/**
vnet_buffer (b)->sctp.connection_index =
sctp_conn->sub_conn[idx].connection.c_index;
- vnet_buffer (b)->sctp.conn_idx = idx;
+ vnet_buffer (b)->sctp.subconn_idx = idx;
}
/**
vnet_buffer (b)->sctp.connection_index =
sctp_conn->sub_conn[idx].connection.c_index;
- vnet_buffer (b)->sctp.conn_idx = idx;
+ vnet_buffer (b)->sctp.subconn_idx = idx;
}
void
vnet_buffer (b)->sctp.connection_index =
sctp_conn->sub_conn[idx].connection.c_index;
- vnet_buffer (b)->sctp.conn_idx = idx;
+ vnet_buffer (b)->sctp.subconn_idx = idx;
}
void
vlib_buffer_push_uninit (b, bytes_to_add);
u8 idx = sctp_data_subconn_select (sctp_conn);
-
+ SCTP_DBG_OUTPUT
+ ("SCTP_CONN = %p, IDX = %u, S_INDEX = %u, C_INDEX = %u, LCL_PORT = %u, RMT_PORT = %u",
+ sctp_conn, idx, sctp_conn->sub_conn[idx].connection.s_index,
+ sctp_conn->sub_conn[idx].connection.c_index,
+ sctp_conn->sub_conn[idx].connection.lcl_port,
+ sctp_conn->sub_conn[idx].connection.rmt_port);
data_chunk->sctp_hdr.checksum = 0;
data_chunk->sctp_hdr.src_port =
sctp_conn->sub_conn[idx].connection.lcl_port;
vnet_buffer (b)->sctp.connection_index =
sctp_conn->sub_conn[idx].connection.c_index;
- vnet_buffer (b)->sctp.conn_idx = idx;
+ vnet_buffer (b)->sctp.subconn_idx = idx;
}
u32
sctp_connection_t *sctp_conn =
sctp_get_connection_from_transport (trans_conn);
+ SCTP_DBG_OUTPUT ("TRANS_CONN = %p, SCTP_CONN = %p, "
+ "S_INDEX = %u, C_INDEX = %u,"
+ "LCL_PORT = %u, RMT_PORT = %u",
+ trans_conn,
+ sctp_conn,
+ trans_conn->s_index,
+ trans_conn->c_index,
+ trans_conn->lcl_port, trans_conn->rmt_port);
+
sctp_push_hdr_i (sctp_conn, b, SCTP_STATE_ESTABLISHED);
sctp_trajectory_add_start (b0, 3);
goto done;
}
- u8 idx = vnet_buffer (b0)->sctp.conn_idx;
+ u8 idx = vnet_buffer (b0)->sctp.subconn_idx;
th0 = vlib_buffer_get_current (b0);