PageRenderTime 53ms CodeModel.GetById 15ms app.highlight 16ms RepoModel.GetById 16ms app.codeStats 0ms

/omegamoon/toolchain/linaro/arm-linux-gnueabihf/libc/usr/include/sys/socket.h

https://github.com/hbfs/Rockchip-GPL-Kernel
C++ Header | 286 lines | 115 code | 44 blank | 127 comment | 3 complexity | 9e1cc69ead8f382b36e6eb461f42b944 MD5 | raw file
  1/* Declarations of socket constants, types, and functions.
  2   Copyright (C) 1991,92,1994-2001,2003,2005,2007,2008,2012
  3   Free Software Foundation, Inc.
  4   This file is part of the GNU C Library.
  5
  6   The GNU C Library is free software; you can redistribute it and/or
  7   modify it under the terms of the GNU Lesser General Public
  8   License as published by the Free Software Foundation; either
  9   version 2.1 of the License, or (at your option) any later version.
 10
 11   The GNU C Library is distributed in the hope that it will be useful,
 12   but WITHOUT ANY WARRANTY; without even the implied warranty of
 13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 14   Lesser General Public License for more details.
 15
 16   You should have received a copy of the GNU Lesser General Public
 17   License along with the GNU C Library; if not, see
 18   <http://www.gnu.org/licenses/>.  */
 19
 20#ifndef	_SYS_SOCKET_H
 21#define	_SYS_SOCKET_H	1
 22
 23#include <features.h>
 24
 25__BEGIN_DECLS
 26
 27#include <sys/uio.h>
 28#define	__need_size_t
 29#include <stddef.h>
 30#ifdef __USE_GNU
 31/* Get the __sigset_t definition.  */
 32# include <bits/sigset.h>
 33#endif
 34
 35
 36/* This operating system-specific header file defines the SOCK_*, PF_*,
 37   AF_*, MSG_*, SOL_*, and SO_* constants, and the `struct sockaddr',
 38   `struct msghdr', and `struct linger' types.  */
 39#include <bits/socket.h>
 40
 41#ifdef __USE_BSD
 42/* This is the 4.3 BSD `struct sockaddr' format, which is used as wire
 43   format in the grotty old 4.3 `talk' protocol.  */
 44struct osockaddr
 45  {
 46    unsigned short int sa_family;
 47    unsigned char sa_data[14];
 48  };
 49#endif
 50
 51/* The following constants should be used for the second parameter of
 52   `shutdown'.  */
 53enum
 54{
 55  SHUT_RD = 0,		/* No more receptions.  */
 56#define SHUT_RD		SHUT_RD
 57  SHUT_WR,		/* No more transmissions.  */
 58#define SHUT_WR		SHUT_WR
 59  SHUT_RDWR		/* No more receptions or transmissions.  */
 60#define SHUT_RDWR	SHUT_RDWR
 61};
 62
 63/* This is the type we use for generic socket address arguments.
 64
 65   With GCC 2.7 and later, the funky union causes redeclarations or
 66   uses with any of the listed types to be allowed without complaint.
 67   G++ 2.7 does not support transparent unions so there we want the
 68   old-style declaration, too.  */
 69#if defined __cplusplus || !__GNUC_PREREQ (2, 7) || !defined __USE_GNU
 70# define __SOCKADDR_ARG		struct sockaddr *__restrict
 71# define __CONST_SOCKADDR_ARG	const struct sockaddr *
 72#else
 73/* Add more `struct sockaddr_AF' types here as necessary.
 74   These are all the ones I found on NetBSD and Linux.  */
 75# define __SOCKADDR_ALLTYPES \
 76  __SOCKADDR_ONETYPE (sockaddr) \
 77  __SOCKADDR_ONETYPE (sockaddr_at) \
 78  __SOCKADDR_ONETYPE (sockaddr_ax25) \
 79  __SOCKADDR_ONETYPE (sockaddr_dl) \
 80  __SOCKADDR_ONETYPE (sockaddr_eon) \
 81  __SOCKADDR_ONETYPE (sockaddr_in) \
 82  __SOCKADDR_ONETYPE (sockaddr_in6) \
 83  __SOCKADDR_ONETYPE (sockaddr_inarp) \
 84  __SOCKADDR_ONETYPE (sockaddr_ipx) \
 85  __SOCKADDR_ONETYPE (sockaddr_iso) \
 86  __SOCKADDR_ONETYPE (sockaddr_ns) \
 87  __SOCKADDR_ONETYPE (sockaddr_un) \
 88  __SOCKADDR_ONETYPE (sockaddr_x25)
 89
 90# define __SOCKADDR_ONETYPE(type) struct type *__restrict __##type##__;
 91typedef union { __SOCKADDR_ALLTYPES
 92	      } __SOCKADDR_ARG __attribute__ ((__transparent_union__));
 93# undef __SOCKADDR_ONETYPE
 94# define __SOCKADDR_ONETYPE(type) const struct type *__restrict __##type##__;
 95typedef union { __SOCKADDR_ALLTYPES
 96	      } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));
 97# undef __SOCKADDR_ONETYPE
 98#endif
 99
100#ifdef __USE_GNU
101/* For `recvmmsg' and `sendmmsg'.  */
102struct mmsghdr
103  {
104    struct msghdr msg_hdr;	/* Actual message header.  */
105    unsigned int msg_len;	/* Number of received or sent bytes for the
106				   entry.  */
107  };
108#endif
109
110
111/* Create a new socket of type TYPE in domain DOMAIN, using
112   protocol PROTOCOL.  If PROTOCOL is zero, one is chosen automatically.
113   Returns a file descriptor for the new socket, or -1 for errors.  */
114extern int socket (int __domain, int __type, int __protocol) __THROW;
115
116/* Create two new sockets, of type TYPE in domain DOMAIN and using
117   protocol PROTOCOL, which are connected to each other, and put file
118   descriptors for them in FDS[0] and FDS[1].  If PROTOCOL is zero,
119   one will be chosen automatically.  Returns 0 on success, -1 for errors.  */
120extern int socketpair (int __domain, int __type, int __protocol,
121		       int __fds[2]) __THROW;
122
123/* Give the socket FD the local address ADDR (which is LEN bytes long).  */
124extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
125     __THROW;
126
127/* Put the local address of FD into *ADDR and its length in *LEN.  */
128extern int getsockname (int __fd, __SOCKADDR_ARG __addr,
129			socklen_t *__restrict __len) __THROW;
130
131/* Open a connection on socket FD to peer at ADDR (which LEN bytes long).
132   For connectionless socket types, just set the default address to send to
133   and the only address from which to accept transmissions.
134   Return 0 on success, -1 for errors.
135
136   This function is a cancellation point and therefore not marked with
137   __THROW.  */
138extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
139
140/* Put the address of the peer connected to socket FD into *ADDR
141   (which is *LEN bytes long), and its actual length into *LEN.  */
142extern int getpeername (int __fd, __SOCKADDR_ARG __addr,
143			socklen_t *__restrict __len) __THROW;
144
145
146/* Send N bytes of BUF to socket FD.  Returns the number sent or -1.
147
148   This function is a cancellation point and therefore not marked with
149   __THROW.  */
150extern ssize_t send (int __fd, const void *__buf, size_t __n, int __flags);
151
152/* Read N bytes into BUF from socket FD.
153   Returns the number read or -1 for errors.
154
155   This function is a cancellation point and therefore not marked with
156   __THROW.  */
157extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags);
158
159/* Send N bytes of BUF on socket FD to peer at address ADDR (which is
160   ADDR_LEN bytes long).  Returns the number sent, or -1 for errors.
161
162   This function is a cancellation point and therefore not marked with
163   __THROW.  */
164extern ssize_t sendto (int __fd, const void *__buf, size_t __n,
165		       int __flags, __CONST_SOCKADDR_ARG __addr,
166		       socklen_t __addr_len);
167
168/* Read N bytes into BUF through socket FD.
169   If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of
170   the sender, and store the actual size of the address in *ADDR_LEN.
171   Returns the number of bytes read or -1 for errors.
172
173   This function is a cancellation point and therefore not marked with
174   __THROW.  */
175extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
176			 int __flags, __SOCKADDR_ARG __addr,
177			 socklen_t *__restrict __addr_len);
178
179
180/* Send a message described MESSAGE on socket FD.
181   Returns the number of bytes sent, or -1 for errors.
182
183   This function is a cancellation point and therefore not marked with
184   __THROW.  */
185extern ssize_t sendmsg (int __fd, const struct msghdr *__message,
186			int __flags);
187
188#ifdef __USE_GNU
189/* Send a VLEN messages as described by VMESSAGES to socket FD.
190   Returns the number of datagrams successfully written or -1 for errors.
191
192   This function is a cancellation point and therefore not marked with
193   __THROW.  */
194extern int sendmmsg (int __fd, struct mmsghdr *__vmessages,
195		     unsigned int __vlen, int __flags);
196#endif
197
198/* Receive a message as described by MESSAGE from socket FD.
199   Returns the number of bytes read or -1 for errors.
200
201   This function is a cancellation point and therefore not marked with
202   __THROW.  */
203extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
204
205#ifdef __USE_GNU
206/* Receive up to VLEN messages as described by VMESSAGES from socket FD.
207   Returns the number of bytes read or -1 for errors.
208
209   This function is a cancellation point and therefore not marked with
210   __THROW.  */
211extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
212		     unsigned int __vlen, int __flags,
213		     const struct timespec *__tmo);
214#endif
215
216
217/* Put the current value for socket FD's option OPTNAME at protocol level LEVEL
218   into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's
219   actual length.  Returns 0 on success, -1 for errors.  */
220extern int getsockopt (int __fd, int __level, int __optname,
221		       void *__restrict __optval,
222		       socklen_t *__restrict __optlen) __THROW;
223
224/* Set socket FD's option OPTNAME at protocol level LEVEL
225   to *OPTVAL (which is OPTLEN bytes long).
226   Returns 0 on success, -1 for errors.  */
227extern int setsockopt (int __fd, int __level, int __optname,
228		       const void *__optval, socklen_t __optlen) __THROW;
229
230
231/* Prepare to accept connections on socket FD.
232   N connection requests will be queued before further requests are refused.
233   Returns 0 on success, -1 for errors.  */
234extern int listen (int __fd, int __n) __THROW;
235
236/* Await a connection on socket FD.
237   When a connection arrives, open a new socket to communicate with it,
238   set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting
239   peer and *ADDR_LEN to the address's actual length, and return the
240   new socket's descriptor, or -1 for errors.
241
242   This function is a cancellation point and therefore not marked with
243   __THROW.  */
244extern int accept (int __fd, __SOCKADDR_ARG __addr,
245		   socklen_t *__restrict __addr_len);
246
247#ifdef __USE_GNU
248/* Similar to 'accept' but takes an additional parameter to specify flags.
249
250   This function is a cancellation point and therefore not marked with
251   __THROW.  */
252extern int accept4 (int __fd, __SOCKADDR_ARG __addr,
253		    socklen_t *__restrict __addr_len, int __flags);
254#endif
255
256/* Shut down all or part of the connection open on socket FD.
257   HOW determines what to shut down:
258     SHUT_RD   = No more receptions;
259     SHUT_WR   = No more transmissions;
260     SHUT_RDWR = No more receptions or transmissions.
261   Returns 0 on success, -1 for errors.  */
262extern int shutdown (int __fd, int __how) __THROW;
263
264
265#ifdef __USE_XOPEN2K
266/* Determine wheter socket is at a out-of-band mark.  */
267extern int sockatmark (int __fd) __THROW;
268#endif
269
270
271#ifdef __USE_MISC
272/* FDTYPE is S_IFSOCK or another S_IF* macro defined in <sys/stat.h>;
273   returns 1 if FD is open on an object of the indicated type, 0 if not,
274   or -1 for errors (setting errno).  */
275extern int isfdtype (int __fd, int __fdtype) __THROW;
276#endif
277
278
279/* Define some macros helping to catch buffer overflows.  */
280#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
281# include <bits/socket2.h>
282#endif
283
284__END_DECLS
285
286#endif /* sys/socket.h */