summaryrefslogtreecommitdiffstats
path: root/src/vnet/udp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/udp')
-rw-r--r--src/vnet/udp/udp.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/vnet/udp/udp.c b/src/vnet/udp/udp.c
index 8fa1147b030..b069e720c7c 100644
--- a/src/vnet/udp/udp.c
+++ b/src/vnet/udp/udp.c
@@ -81,13 +81,14 @@ udp_session_bind (u32 session_index, transport_endpoint_t * lcl)
{
udp_main_t *um = vnet_get_udp_main ();
vlib_main_t *vm = vlib_get_main ();
+ transport_endpoint_cfg_t *lcl_ext;
udp_connection_t *listener;
+ udp_dst_port_info_t *pi;
u32 node_index;
void *iface_ip;
- udp_dst_port_info_t *pi;
- pi =
- udp_get_dst_port_info (um, clib_net_to_host_u16 (lcl->port), lcl->is_ip4);
+ pi = udp_get_dst_port_info (um, clib_net_to_host_u16 (lcl->port),
+ lcl->is_ip4);
if (pi)
return -1;
@@ -110,6 +111,11 @@ udp_session_bind (u32 session_index, transport_endpoint_t * lcl)
listener->c_s_index = session_index;
listener->c_fib_index = lcl->fib_index;
listener->flags |= UDP_CONN_F_OWNS_PORT;
+ lcl_ext = (transport_endpoint_cfg_t *) lcl;
+ if (lcl_ext->transport_flags & TRANSPORT_CFG_F_CONNECTED)
+ listener->flags |= UDP_CONN_F_CONNECTED;
+ else
+ listener->c_flags |= TRANSPORT_CONNECTION_F_CLESS;
clib_spinlock_init (&listener->rx_lock);
node_index = lcl->is_ip4 ? udp4_input_node.index : udp6_input_node.index;
@@ -327,6 +333,10 @@ udp_open_connection (transport_endpoint_cfg_t * rmt)
uc->c_proto = TRANSPORT_PROTO_UDP;
uc->c_fib_index = rmt->fib_index;
uc->flags |= UDP_CONN_F_OWNS_PORT;
+ if (rmt->transport_flags & TRANSPORT_CFG_F_CONNECTED)
+ uc->flags |= UDP_CONN_F_CONNECTED;
+ else
+ uc->c_flags |= TRANSPORT_CONNECTION_F_CLESS;
return uc->c_c_index;
}