if (verbose)
{
if (verbose == 1)
- s = format (s, "%-15s\n", "-");
+ s = format (s, "%-15s", "-");
else
s = format (s, "\n");
}
u8 *
format_udp_half_open_session (u8 * s, va_list * args)
{
+ u32 __clib_unused tci = va_arg (*args, u32);
+ u32 __clib_unused thread_index = va_arg (*args, u32);
clib_warning ("BUG");
return 0;
}
format_udp_listener_session (u8 * s, va_list * args)
{
u32 tci = va_arg (*args, u32);
+ u32 __clib_unused thread_index = va_arg (*args, u32);
+ u32 verbose = va_arg (*args, u32);
udp_connection_t *uc = udp_listener_get (tci);
- return format (s, "%U", format_udp_connection, uc);
+ return format (s, "%U", format_udp_connection, uc, verbose);
}
u16
/* We don't poll main thread if we have workers */
thread_index = vlib_num_workers ()? 1 : 0;
uc = udp_connection_get (conn_index, thread_index);
+ if (!uc)
+ return 0;
return &uc->connection;
}
/* *INDENT-OFF* */
-const static transport_proto_vft_t udp_proto = {
+static const transport_proto_vft_t udp_proto = {
.start_listen = udp_session_bind,
.connect = udp_open_connection,
.stop_listen = udp_session_unbind,
.format_connection = format_udp_session,
.format_half_open = format_udp_half_open_session,
.format_listener = format_udp_listener_session,
- .tx_type = TRANSPORT_TX_DGRAM,
- .service_type = TRANSPORT_SERVICE_CL,
+ .transport_options = {
+ .tx_type = TRANSPORT_TX_DGRAM,
+ .service_type = TRANSPORT_SERVICE_CL,
+ },
};
/* *INDENT-ON* */
u32 thread_index = vlib_num_workers ()? 1 : vlib_get_main ()->thread_index;
u32 uc_index;
uc_index = udp_open_connection (rmt);
+ if (uc_index == (u32) ~ 0)
+ return -1;
uc = udp_connection_get (uc_index, thread_index);
uc->is_connected = 1;
return uc_index;
udpc_connection_listen (u32 session_index, transport_endpoint_t * lcl)
{
udp_connection_t *listener;
- u32 li;
- li = udp_session_bind (session_index, lcl);
- listener = udp_listener_get (li);
+ u32 li_index;
+ li_index = udp_session_bind (session_index, lcl);
+ if (li_index == (u32) ~ 0)
+ return -1;
+ listener = udp_listener_get (li_index);
listener->is_connected = 1;
- return li;
+ return li_index;
}
/* *INDENT-OFF* */
-const static transport_proto_vft_t udpc_proto = {
+static const transport_proto_vft_t udpc_proto = {
.start_listen = udpc_connection_listen,
.stop_listen = udp_session_unbind,
.connect = udpc_connection_open,
.format_connection = format_udp_session,
.format_half_open = format_udp_half_open_session,
.format_listener = format_udp_listener_session,
- .tx_type = TRANSPORT_TX_DGRAM,
- .service_type = TRANSPORT_SERVICE_CL,
+ .transport_options = {
+ .tx_type = TRANSPORT_TX_DGRAM,
+ .service_type = TRANSPORT_SERVICE_VC,
+ .half_open_has_fifos = 1
+ },
};
/* *INDENT-ON* */