summaryrefslogtreecommitdiff
path: root/nuttx/net/bind.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/net/bind.c')
-rw-r--r--nuttx/net/bind.c21
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;