diff options
author | Florin Coras <fcoras@cisco.com> | 2020-03-27 15:06:07 +0000 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2020-03-30 20:34:30 +0000 |
commit | 87b7e3df2b6f0335424c338ee7d61d426ef45904 (patch) | |
tree | a9a3a568abd8575bfaae21357eba8d5aa833e97f /src/vnet/udp | |
parent | 102dd1cfa792f3e70679463df141fe21fc67a8ea (diff) |
session udp: flag for connected udp
Type: improvement
This can be used as alternative to udpc
Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Ic3f7efe6728b25d4a8a0b61ddb36de66b4672c4f
Diffstat (limited to 'src/vnet/udp')
-rw-r--r-- | src/vnet/udp/udp.c | 16 |
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; } |