diff options
-rw-r--r-- | nuttx/net/local/Make.defs | 3 | ||||
-rw-r--r-- | nuttx/net/local/local.h | 12 | ||||
-rw-r--r-- | nuttx/net/local/local_accept.c | 4 | ||||
-rw-r--r-- | nuttx/net/local/local_recvfrom.c | 91 | ||||
-rw-r--r-- | nuttx/net/local/local_send.c | 80 | ||||
-rw-r--r-- | nuttx/net/local/local_sendto.c | 84 |
6 files changed, 267 insertions, 7 deletions
diff --git a/nuttx/net/local/Make.defs b/nuttx/net/local/Make.defs index 670cc9550..35dc643cc 100644 --- a/nuttx/net/local/Make.defs +++ b/nuttx/net/local/Make.defs @@ -38,7 +38,8 @@ ifeq ($(CONFIG_NET_LOCAL),y) NET_CSRCS += local_conn.c local_connect.c local_release.c local_bind.c -NET_CSRCS += local_listen.c local_accept.c local_fifo.c +NET_CSRCS += local_listen.c local_accept.c local_fifo.c local_recvfrom.c +NET_CSRCS += local_send.c local_sendto.c # Include UDP build support diff --git a/nuttx/net/local/local.h b/nuttx/net/local/local.h index 66ee6f417..8b7fb994c 100644 --- a/nuttx/net/local/local.h +++ b/nuttx/net/local/local.h @@ -79,10 +79,10 @@ enum local_state_s /* SOCK_STREAM only */ LOCAL_STATE_LISTENING, /* Server listening for connections */ - LOCAL_STATE_CLOSED, /* Server closed, no longer connected */ + LOCAL_STATE_CLOSED, /* Server closed, no longer connecting */ LOCAL_STATE_ACCEPT, /* Client waiting for a connection */ - LOCAL_STATE_CONNECTED, /* Client (or server) connected */ - LOCAL_STATE_DISCONNECTED /* Client disconnected */ + LOCAL_STATE_CONNECTED, /* Peer connected */ + LOCAL_STATE_DISCONNECTED /* Peer disconnected */ }; /* Representation of a local connection */ @@ -102,8 +102,8 @@ struct local_conn_s uint8_t lc_family; /* SOCK_STREAM or SOCK_DGRAM */ uint8_t lc_type; /* See enum local_type_e */ uint8_t lc_state; /* See enum local_state_e */ - int16_t lc_infd; /* File descriptor of read-only FIFO */ - int16_t lc_outfd; /* File descriptor of write-only FIFO */ + int16_t lc_infd; /* File descriptor of read-only FIFO (peers) */ + int16_t lc_outfd; /* File descriptor of write-only FIFO (peers) */ char lc_path[UNIX_PATH_MAX]; /* Path assigned by bind() */ /* SOCK_STREAM fields common to both client and server */ @@ -124,7 +124,7 @@ struct local_conn_s dq_queue_t lc_conns; /* List of connections */ } server; - /* Fields unique to the client side */ + /* Fields unique to the connecting client side */ struct { diff --git a/nuttx/net/local/local_accept.c b/nuttx/net/local/local_accept.c index 3afe652c7..e3ce2f577 100644 --- a/nuttx/net/local/local_accept.c +++ b/nuttx/net/local/local_accept.c @@ -151,6 +151,8 @@ int psock_local_accept(FAR struct socket *psock, FAR struct sockaddr *addr, } } + /* Do we have a connection? Is the write-side FIFO opened? */ + if (ret == OK) { DEBUGASSERT(conn->lc_outfd >= 0); @@ -168,6 +170,8 @@ int psock_local_accept(FAR struct socket *psock, FAR struct sockaddr *addr, } } + /* Do we have a connection? Are the FIFOs opened? */ + if (ret == OK) { DEBUGASSERT(conn->lc_infd >= 0); diff --git a/nuttx/net/local/local_recvfrom.c b/nuttx/net/local/local_recvfrom.c new file mode 100644 index 000000000..c31bec1f2 --- /dev/null +++ b/nuttx/net/local/local_recvfrom.c @@ -0,0 +1,91 @@ +/**************************************************************************** + * net/local/local_recvfrom.c + * + * Copyright (C) 2015 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/config.h> +#if defined(CONFIG_NET) && defined(CONFIG_NET_LOCAL) + +#include <sys/types.h> +#include <sys/socket.h> +#include <errno.h> + +#include <nuttx/net/net.h> + +#include "local/local.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Function: psock_recvfrom + * + * Description: + * recvfrom() receives messages from a local socket, and may be used to + * receive data on a socket whether or not it is connection-oriented. + * + * If from is not NULL, and the underlying protocol provides the source + * address, this source address is filled in. The argument fromlen + * initialized to the size of the buffer associated with from, and modified + * on return to indicate the actual size of the address stored there. + * + * Parameters: + * psock A pointer to a NuttX-specific, internal socket structure + * buf Buffer to receive data + * len Length of buffer + * flags Receive flags + * from Address of source (may be NULL) + * fromlen The length of the address structure + * + * Returned Value: + * On success, returns the number of characters sent. If no data is + * available to be received and the peer has performed an orderly shutdown, + * recv() will return 0. Otherwise, on errors, -1 is returned, and errno + * is set appropriately (see receivefrom for the complete list). + * + ****************************************************************************/ + +ssize_t psock_local_recvfrom(FAR struct socket *psock, FAR void *buf, + size_t len, int flags, FAR struct sockaddr *from, + FAR socklen_t *fromlen) +{ +#warning Missing logic + return -ENOSYS; +} + +#endif /* CONFIG_NET && CONFIG_NET_LOCAL */ diff --git a/nuttx/net/local/local_send.c b/nuttx/net/local/local_send.c new file mode 100644 index 000000000..b0cb1d22f --- /dev/null +++ b/nuttx/net/local/local_send.c @@ -0,0 +1,80 @@ +/**************************************************************************** + * net/local/local_send.c + * + * Copyright (C) 2015 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/config.h> +#if defined(CONFIG_NET) && defined(CONFIG_NET_LOCAL) + +#include <sys/types.h> +#include <errno.h> + +#include <nuttx/net/net.h> + +#include "local/local.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: psock_local_send + * + * Description: + * Send a local packet as a stream. + * + * Parameters: + * psock An instance of the internal socket structure. + * buf Data to send + * len Length of data to send + * flags Send flags + * + * Return: + * On success, returns the number of characters sent. On error, + * -1 is returned, and errno is set appropriately (see send() for the + * list of errno numbers). + * + ****************************************************************************/ + +ssize_t psock_local_send(FAR struct socket *psock, FAR const void *buf, + size_t len, int flags) +{ +#warning Missing logic + return -ENOSYS; +} + +#endif /* CONFIG_NET && CONFIG_NET_LOCAL */ diff --git a/nuttx/net/local/local_sendto.c b/nuttx/net/local/local_sendto.c new file mode 100644 index 000000000..a44333d6f --- /dev/null +++ b/nuttx/net/local/local_sendto.c @@ -0,0 +1,84 @@ +/**************************************************************************** + * net/local/local_sendto.c + * + * Copyright (C) 2015 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/config.h> +#if defined(CONFIG_NET) && defined(CONFIG_NET_LOCAL) + +#include <sys/types.h> +#include <sys/socket.h> +#include <errno.h> + +#include <nuttx/net/net.h> + +#include "local/local.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Function: psock_sendto + * + * Description: + * Send a local packet as a datagram. + * + * Parameters: + * psock A pointer to a NuttX-specific, internal socket structure + * buf Data to send + * len Length of data to send + * flags Send flags + * to Address of recipient + * tolen The length of the address structure + * + * Returned Value: + * On success, returns the number of characters sent. On error, + * -1 is returned, and errno is set appropriately (see sendto() for the + * list of errno numbers). + * + ****************************************************************************/ + +ssize_t psock_local_sendto(FAR struct socket *psock, FAR const void *buf, + size_t len, int flags, FAR const struct sockaddr *to, + socklen_t tolen) +{ +#warning Missing logic + return -ENOSYS; +} + +#endif /* CONFIG_NET && CONFIG_NET_LOCAL */ |