mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-29 16:31:18 +01:00
gnrc_sock_udp: provide port for #9376 API fix
This commit is contained in:
parent
a20639074a
commit
f8524cb4c0
@ -87,7 +87,6 @@ int sock_udp_create(sock_udp_t *sock, const sock_udp_ep_t *local,
|
||||
const sock_udp_ep_t *remote, uint16_t flags)
|
||||
{
|
||||
assert(sock);
|
||||
assert(local == NULL || local->port != 0);
|
||||
assert(remote == NULL || remote->port != 0);
|
||||
if ((local != NULL) && (remote != NULL) &&
|
||||
(local->netif != SOCK_ADDR_ANY_NETIF) &&
|
||||
@ -97,8 +96,19 @@ int sock_udp_create(sock_udp_t *sock, const sock_udp_ep_t *local,
|
||||
}
|
||||
memset(&sock->local, 0, sizeof(sock_udp_ep_t));
|
||||
if (local != NULL) {
|
||||
uint16_t port = local->port;
|
||||
|
||||
if (gnrc_af_not_supported(local->family)) {
|
||||
return -EAFNOSUPPORT;
|
||||
}
|
||||
if (port == 0U) {
|
||||
port = _get_dyn_port(sock);
|
||||
if (port == GNRC_SOCK_DYN_PORTRANGE_ERR) {
|
||||
return -EADDRINUSE;
|
||||
}
|
||||
}
|
||||
#ifdef MODULE_GNRC_SOCK_CHECK_REUSE
|
||||
if (!(flags & SOCK_FLAGS_REUSE_EP)) {
|
||||
else if (!(flags & SOCK_FLAGS_REUSE_EP)) {
|
||||
for (sock_udp_t *ptr = _udp_socks; ptr != NULL;
|
||||
ptr = (sock_udp_t *)ptr->reg.next) {
|
||||
if (memcmp(&ptr->local, local, sizeof(sock_udp_ep_t)) == 0) {
|
||||
@ -110,10 +120,8 @@ int sock_udp_create(sock_udp_t *sock, const sock_udp_ep_t *local,
|
||||
sock->reg.next = (gnrc_sock_reg_t *)_udp_socks;
|
||||
_udp_socks = sock;
|
||||
#endif
|
||||
if (gnrc_af_not_supported(local->family)) {
|
||||
return -EAFNOSUPPORT;
|
||||
}
|
||||
memcpy(&sock->local, local, sizeof(sock_udp_ep_t));
|
||||
sock->local.port = port;
|
||||
}
|
||||
memset(&sock->remote, 0, sizeof(sock_udp_ep_t));
|
||||
if (remote != NULL) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user