Needed by QUIC to distinguish Q/Ssessions
Change-Id: Idcc9e46f86f54a7d06ce6d870edec1766e95c82d
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
cmp->context = session->session_index;
cmp->wrk_index = wrk->vpp_wrk_index;
cmp->is_ip4 = session->transport.is_ip4;
cmp->context = session->session_index;
cmp->wrk_index = wrk->vpp_wrk_index;
cmp->is_ip4 = session->transport.is_ip4;
+ cmp->transport_opts = session->transport_opts;
clib_memcpy_fast (cmp->ip, &session->transport.rmt_ip, sizeof (cmp->ip));
cmp->port = session->transport.rmt_port;
cmp->proto = session->session_type;
clib_memcpy_fast (cmp->ip, &session->transport.rmt_ip, sizeof (cmp->ip));
cmp->port = session->transport.rmt_port;
cmp->proto = session->session_type;
u8 is_vep_session;
u8 has_rx_evt;
u32 attr;
u8 is_vep_session;
u8 has_rx_evt;
u32 attr;
vppcom_epoll_t vep;
int libc_epfd;
svm_msg_q_t *our_evt_q;
vppcom_epoll_t vep;
int libc_epfd;
svm_msg_q_t *our_evt_q;
a->app_index = app->app_index;
APP_DBG ("New app name: %v api index: %u index %u", app->name,
a->app_index = app->app_index;
APP_DBG ("New app name: %v api index: %u index %u", app->name,
- app->api_client_index, app->app_index);
+ a->api_client_index, app->app_index);
* The app event queue allocated in first segment is cleared with
* the segment manager. No need to explicitly free it.
*/
* The app event queue allocated in first segment is cleared with
* the segment manager. No need to explicitly free it.
*/
- APP_DBG ("Delete app name %v api index: %d index: %d", app->name,
- app->api_client_index, app->app_index);
+ APP_DBG ("Delete app name %v index: %d", app->name, app->app_index);
if (application_is_proxy (app))
application_remove_proxy (app);
if (application_is_proxy (app))
application_remove_proxy (app);
}
APP_DBG ("Detaching for app %v index %u api client index %u", app->name,
}
APP_DBG ("Detaching for app %v index %u api client index %u", app->name,
- app->app_index, app->api_client_index);
+ app->app_index, api_client_index);
/* *INDENT-OFF* */
pool_foreach (wrk_map, app->worker_maps, ({
/* *INDENT-OFF* */
pool_foreach (wrk_map, app->worker_maps, ({
app_wrk->wrk_map_index = ~0;
app_wrk->connects_seg_manager = APP_INVALID_SEGMENT_MANAGER_INDEX;
app_wrk->first_segment_manager = APP_INVALID_SEGMENT_MANAGER_INDEX;
app_wrk->wrk_map_index = ~0;
app_wrk->connects_seg_manager = APP_INVALID_SEGMENT_MANAGER_INDEX;
app_wrk->first_segment_manager = APP_INVALID_SEGMENT_MANAGER_INDEX;
- APP_DBG ("New app %v worker %u", app_get_name (app), app_wrk->wrk_index);
+ APP_DBG ("New app %v worker %u", app->name, app_wrk->wrk_index);
@param hostname-len - length of hostname
@param hostname - destination's hostname. If present, used by protocols
like tls.
@param hostname-len - length of hostname
@param hostname - destination's hostname. If present, used by protocols
like tls.
+ @param transport_opts - transport option (e.g. session id for quic).
*/
autoreply define connect_sock {
u32 client_index;
*/
autoreply define connect_sock {
u32 client_index;
u8 proto;
u8 hostname_len;
u8 hostname[hostname_len];
u8 proto;
u8 hostname_len;
u8 hostname[hostname_len];
};
/** \brief ask app to add a new cut-through registration
};
/** \brief ask app to add a new cut-through registration
a->sep.transport_proto = mp->proto;
a->sep.peer.fib_index = mp->vrf;
a->sep.peer.sw_if_index = ENDPOINT_INVALID_INDEX;
a->sep.transport_proto = mp->proto;
a->sep.peer.fib_index = mp->vrf;
a->sep.peer.sw_if_index = ENDPOINT_INVALID_INDEX;
+ a->sep_ext.transport_opts = mp->transport_opts;
if (mp->hostname_len)
{
vec_validate (a->sep_ext.hostname, mp->hostname_len - 1);
if (mp->hostname_len)
{
vec_validate (a->sep_ext.hostname, mp->hostname_len - 1);
a->app_index = app->app_index;
a->wrk_map_index = mp->wrk_index;
if ((rv = vnet_connect (a)))
a->app_index = app->app_index;
a->wrk_map_index = mp->wrk_index;
if ((rv = vnet_connect (a)))
- clib_warning ("connect returned: %u", rv);
+ clib_warning ("connect returned: %U", format_vnet_api_errno, rv);
vec_free (a->sep_ext.hostname);
}
else
vec_free (a->sep_ext.hostname);
}
else
case TRANSPORT_PROTO_SCTP:
s = format (s, "SCTP");
break;
case TRANSPORT_PROTO_SCTP:
s = format (s, "SCTP");
break;
+ case TRANSPORT_PROTO_NONE:
+ s = format (s, "NONE");
+ break;
+ case TRANSPORT_PROTO_TLS:
+ s = format (s, "TLS");
+ break;
case TRANSPORT_PROTO_UDPC:
s = format (s, "UDPC");
break;
case TRANSPORT_PROTO_QUIC:
s = format (s, "QUIC");
break;
case TRANSPORT_PROTO_UDPC:
s = format (s, "UDPC");
break;
case TRANSPORT_PROTO_QUIC:
s = format (s, "QUIC");
break;
+ default:
+ s = format (s, "UNKNOWN");
+ break;
case TRANSPORT_PROTO_SCTP:
s = format (s, "S");
break;
case TRANSPORT_PROTO_SCTP:
s = format (s, "S");
break;
+ case TRANSPORT_PROTO_NONE:
+ s = format (s, "N");
+ break;
+ case TRANSPORT_PROTO_TLS:
+ s = format (s, "J");
+ break;
case TRANSPORT_PROTO_UDPC:
s = format (s, "U");
break;
case TRANSPORT_PROTO_QUIC:
s = format (s, "Q");
break;
case TRANSPORT_PROTO_UDPC:
s = format (s, "U");
break;
case TRANSPORT_PROTO_QUIC:
s = format (s, "Q");
break;
+ default:
+ s = format (s, "?");
+ break;