+ {
+ if (rv != SESSION_E_PORTINUSE)
+ return rv;
+
+ if (udp_connection_port_used_extern (lcl_port, rmt->is_ip4))
+ return SESSION_E_PORTINUSE;
+
+ /* If port in use, check if 5-tuple is also in use */
+ if (session_lookup_connection (rmt->fib_index, &lcl_addr, &rmt->ip,
+ lcl_port, rmt->port, TRANSPORT_PROTO_UDP,
+ rmt->is_ip4))
+ return SESSION_E_PORTINUSE;
+
+ /* 5-tuple is available so increase lcl endpoint refcount and proceed
+ * with connection allocation */
+ transport_share_local_endpoint (TRANSPORT_PROTO_UDP, &lcl_addr,
+ lcl_port);
+ goto conn_alloc;
+ }