| /**************************************************************************** |
| * net/pkt/pkt.h |
| * |
| * Copyright (C) 2014 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. |
| * |
| ****************************************************************************/ |
| |
| #ifndef _NET_PKT_PKT_H |
| #define _NET_PKT_PKT_H |
| |
| /**************************************************************************** |
| * Included Files |
| ****************************************************************************/ |
| |
| #include <nuttx/config.h> |
| |
| #include <sys/types.h> |
| |
| #ifdef CONFIG_NET_PKT |
| |
| /**************************************************************************** |
| * Pre-processor Definitions |
| ****************************************************************************/ |
| |
| /**************************************************************************** |
| * Public Type Definitions |
| ****************************************************************************/ |
| |
| /**************************************************************************** |
| * Public Data |
| ****************************************************************************/ |
| |
| #ifdef __cplusplus |
| # define EXTERN extern "C" |
| extern "C" |
| { |
| #else |
| # define EXTERN extern |
| #endif |
| |
| /**************************************************************************** |
| * Public Function Prototypes |
| ****************************************************************************/ |
| struct eth_hdr_s; /* Forward reference */ |
| |
| /* Defined in pkt_conn.c ****************************************************/ |
| |
| void pkt_initialize(void); |
| struct pkt_conn_s *pkt_alloc(void); |
| void pkt_free(FAR struct pkt_conn_s *conn); |
| struct pkt_conn_s *pkt_active(FAR struct eth_hdr_s *buf); |
| struct pkt_conn_s *uip_nextpktconn(FAR struct pkt_conn_s *conn); |
| |
| /* Defined in pkt_callback.c ************************************************/ |
| |
| uint16_t pkt_callback(FAR struct uip_driver_s *dev, |
| FAR struct pkt_conn_s *conn, uint16_t flags); |
| |
| /* Defined in pkt_input.c ***************************************************/ |
| |
| /* Defined in pkt_poll.c ****************************************************/ |
| |
| void pkt_poll(FAR struct uip_driver_s *dev, FAR struct pkt_conn_s *conn); |
| |
| /**************************************************************************** |
| * Function: psock_pkt_send |
| * |
| * Description: |
| * The psock_pkt_send() call may be used only when the packet socket is in a |
| * connected state (so that the intended recipient is known). |
| * |
| * Parameters: |
| * psock An instance of the internal socket structure. |
| * buf Data to send |
| * len Length of data to send |
| * |
| * Returned Value: |
| * On success, returns the number of characters sent. On error, |
| * -1 is returned, and errno is set appropriately: |
| * |
| * EAGAIN or EWOULDBLOCK |
| * The socket is marked non-blocking and the requested operation |
| * would block. |
| * EBADF |
| * An invalid descriptor was specified. |
| * ECONNRESET |
| * Connection reset by peer. |
| * EDESTADDRREQ |
| * The socket is not connection-mode, and no peer address is set. |
| * EFAULT |
| * An invalid user space address was specified for a parameter. |
| * EINTR |
| * A signal occurred before any data was transmitted. |
| * EINVAL |
| * Invalid argument passed. |
| * EISCONN |
| * The connection-mode socket was connected already but a recipient |
| * was specified. (Now either this error is returned, or the recipient |
| * specification is ignored.) |
| * EMSGSIZE |
| * The socket type requires that message be sent atomically, and the |
| * size of the message to be sent made this impossible. |
| * ENOBUFS |
| * The output queue for a network interface was full. This generally |
| * indicates that the interface has stopped sending, but may be |
| * caused by transient congestion. |
| * ENOMEM |
| * No memory available. |
| * ENOTCONN |
| * The socket is not connected, and no target has been given. |
| * ENOTSOCK |
| * The argument s is not a socket. |
| * EPIPE |
| * The local end has been shut down on a connection oriented socket. |
| * In this case the process will also receive a SIGPIPE unless |
| * MSG_NOSIGNAL is set. |
| * |
| * Assumptions: |
| * |
| ****************************************************************************/ |
| |
| struct socket; |
| ssize_t psock_pkt_send(FAR struct socket *psock, FAR const void *buf, |
| size_t len); |
| |
| |
| #undef EXTERN |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* CONFIG_NET_PKT */ |
| #endif /* _NET_PKT_PKT_H */ |