udp: use transport port refcnt on accept
Use udp transport refcnt instead of local port refcnt when accepting new connections. Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ibc34677b1138682497f98e96b6fddb5b96094ff9
This commit is contained in:
Florin Coras
committed by
Dave Barach
parent
9a97fb8ad7
commit
37127f7bcc
@ -43,6 +43,14 @@ udp_connection_register_port (u16 lcl_port, u8 is_ip4)
|
||||
__ATOMIC_RELAXED);
|
||||
}
|
||||
|
||||
void
|
||||
udp_connection_share_port (u16 lcl_port, u8 is_ip4)
|
||||
{
|
||||
udp_main_t *um = &udp_main;
|
||||
__atomic_add_fetch (&um->transport_ports_refcnt[is_ip4][lcl_port], 1,
|
||||
__ATOMIC_RELAXED);
|
||||
}
|
||||
|
||||
static void
|
||||
udp_connection_unregister_port (u16 lcl_port, u8 is_ip4)
|
||||
{
|
||||
|
@ -205,6 +205,7 @@ udp_connection_from_transport (transport_connection_t * tc)
|
||||
|
||||
void udp_connection_free (udp_connection_t * uc);
|
||||
udp_connection_t *udp_connection_alloc (u32 thread_index);
|
||||
void udp_connection_share_port (u16 lcl_port, u8 is_ip4);
|
||||
|
||||
always_inline udp_connection_t *
|
||||
udp_connection_clone_safe (u32 connection_index, u32 thread_index)
|
||||
|
@ -123,8 +123,8 @@ udp_connection_accept (udp_connection_t * listener, session_dgram_hdr_t * hdr,
|
||||
udp_connection_free (uc);
|
||||
return 0;
|
||||
}
|
||||
transport_share_local_endpoint (TRANSPORT_PROTO_UDP, &uc->c_lcl_ip,
|
||||
uc->c_lcl_port);
|
||||
|
||||
udp_connection_share_port (uc->c_lcl_port, uc->c_is_ip4);
|
||||
return uc;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user