diff options
Diffstat (limited to 'nuttx/net/bind.c')
-rw-r--r-- | nuttx/net/bind.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/nuttx/net/bind.c b/nuttx/net/bind.c index 332214d33..97ff479b4 100644 --- a/nuttx/net/bind.c +++ b/nuttx/net/bind.c @@ -61,7 +61,7 @@ * * Parameters: * sockfd Socket descriptor from socket - * my_addr Socket local address + * addr Socket local address * addrlen Length of my_addr * * Returned Value: @@ -91,6 +91,7 @@ int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) FAR const struct sockaddr_in *inaddr = (const struct sockaddr_in *)addr; #endif int err; + int ret; /* Verify that the sockfd corresponds to valid, allocated socket */ @@ -113,24 +114,32 @@ int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) } /* Perform the binding depending on the protocol type */ + switch (psock->s_type) { case SOCK_STREAM: -#warning Put TCP/IP binding logic here + ret = uip_tcpbind(psock->s_conn, inaddr); break; #ifdef CONFIG_NET_UDP case SOCK_DGRAM: -#warning Put UDP binding logic here + ret = uip_udpbind(psock->s_conn, inaddr); break; #endif default: - err = EBADF; + err = -EBADF; goto errout; } - err = ENOSYS; - /*return OK;*/ + /* Was the bind successful */ + + if (ret < 0) + { + err = -ret; + goto errout; + } + + return OK; errout: *get_errno_ptr() = err; |