Add an empty function that can serve as a placeholder for the network shutdown() function

This commit is contained in:
Gregory Nutt 2015-09-09 07:03:05 -06:00
parent 90ec126b0b
commit 8a87e3ca6e
4 changed files with 102 additions and 3 deletions

View File

@ -10958,5 +10958,9 @@
asynchronous queue when adding a new QH structure. From Ilya
Averyanov (2015-09-07).
* arch/arm/src/sama5: Separate memory mapping tables for SAMA5D2, 3,
and 4 (2015-09-07).
and 4 (2015-09-08).
* libc/net/lib_shutdown.c: Add an empty implementatino of the
standard shutdown function. This provides only the framework for
the shutdown function; the internal logic is not included
(2015-09-09).

View File

@ -1,7 +1,7 @@
/****************************************************************************
* include/sys/socket.h
*
* Copyright (C) 2007, 2009, 2011 Gregory Nutt. All rights reserved.
* Copyright (C) 2007, 2009, 2011, 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -155,6 +155,12 @@
#define SOL_SOCKET 0 /* Only socket-level options supported */
/* Values for the 'how' argument of shutdown() */
#define SHUT_RD 1 /* Bit 0: Disables further receive operations */
#define SHUT_WR 2 /* Bit 1: Disables further send operations */
#define SHUT_RDWR 3 /* Bits 0+1: Disables further send and receive operations */
/****************************************************************************
* Type Definitions
****************************************************************************/
@ -227,6 +233,8 @@ ssize_t recv(int sockfd, FAR void *buf, size_t len, int flags);
ssize_t recvfrom(int sockfd, FAR void *buf, size_t len, int flags,
FAR struct sockaddr *from, FAR socklen_t *fromlen);
int shutdown(int sockfd, int how);
int setsockopt(int sockfd, int level, int option,
FAR const void *value, socklen_t value_len);
int getsockopt(int sockfd, int level, int option,

View File

@ -1,7 +1,7 @@
############################################################################
# libc/net/Make.defs
#
# Copyright (C) 2011-2013 Gregory Nutt. All rights reserved.
# Copyright (C) 2011-2013, 2015 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
#
# Redistribution and use in source and binary forms, with or without
@ -37,6 +37,7 @@
CSRCS += lib_addrconfig.c lib_etherntoa.c lib_htons.c lib_htonl.c
CSRCS += lib_inetaddr.c lib_inetntoa.c lib_inetntop.c lib_inetpton.c
CSRCS += lib_shutdown.c
# Routing table support

86
libc/net/lib_shutdown.c Normal file
View File

@ -0,0 +1,86 @@
/****************************************************************************
* libc/net/lib_shutdown.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 of the Institute 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 INSTITUTE 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 INSTITUTE 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>
#include <sys/socket.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/****************************************************************************
* Public FUnctions
****************************************************************************/
/****************************************************************************
* Name: shutdown
*
* Description:
* The shutdown() function will cause all or part of a full-duplex
* connection on the socket associated with the file descriptor socket to
* be shut down.
*
* The shutdown() function disables subsequent send and/or receive
* operations on a socket, depending on the value of the how argument.
* Input Paramteers:
* sockfd - Specifies the file descriptor of the socket.
* how - Specifies the type of shutdown. The values are as follows:
*
* SHUT_RD - Disables further receive operations.
* SHUT_WR - Disables further send operations.
* SHUT_RDWR - Disables further send and receive operations.
*
* Returned Value:
* Upon successful completion, shutdown() will return 0; otherwise, -1 will
* be returned and errno set to indicate the error.
* EBADF - The socket argument is not a valid file descriptor.
* EINVAL - The how argument is invalid.
* ENOTCONN - The socket is not connected.
* ENOTSOCK - The socket argument does not refer to a socket.
* ENOBUFS - Insufficient resources were available in the system to
* perform the operation.
*
****************************************************************************/
int shutdown(int sockfd, int how)
{
#warning Missing Logic
return OK;
}