LCOV - code coverage report
Current view: top level - usr/include/bits - socket.h (source / functions) Hit Total Coverage
Test: lcov.out Lines: 0 9 0.0 %
Date: 2012-07-17 Functions: 0 1 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 12 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* System-specific socket constants and types.  Linux version.
       2                 :            :    Copyright (C) 1991, 1992, 1994-2001, 2004, 2006-2010, 2011
       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, write to the Free
      18                 :            :    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
      19                 :            :    02111-1307 USA.  */
      20                 :            : 
      21                 :            : #ifndef __BITS_SOCKET_H
      22                 :            : #define __BITS_SOCKET_H
      23                 :            : 
      24                 :            : #ifndef _SYS_SOCKET_H
      25                 :            : # error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
      26                 :            : #endif
      27                 :            : 
      28                 :            : #define __need_size_t
      29                 :            : #include <stddef.h>
      30                 :            : 
      31                 :            : #include <sys/types.h>
      32                 :            : 
      33                 :            : /* Type for length arguments in socket calls.  */
      34                 :            : #ifndef __socklen_t_defined
      35                 :            : typedef __socklen_t socklen_t;
      36                 :            : # define __socklen_t_defined
      37                 :            : #endif
      38                 :            : 
      39                 :            : /* Types of sockets.  */
      40                 :            : enum __socket_type
      41                 :            : {
      42                 :            :   SOCK_STREAM = 1,              /* Sequenced, reliable, connection-based
      43                 :            :                                    byte streams.  */
      44                 :            : #define SOCK_STREAM SOCK_STREAM
      45                 :            :   SOCK_DGRAM = 2,               /* Connectionless, unreliable datagrams
      46                 :            :                                    of fixed maximum length.  */
      47                 :            : #define SOCK_DGRAM SOCK_DGRAM
      48                 :            :   SOCK_RAW = 3,                 /* Raw protocol interface.  */
      49                 :            : #define SOCK_RAW SOCK_RAW
      50                 :            :   SOCK_RDM = 4,                 /* Reliably-delivered messages.  */
      51                 :            : #define SOCK_RDM SOCK_RDM
      52                 :            :   SOCK_SEQPACKET = 5,           /* Sequenced, reliable, connection-based,
      53                 :            :                                    datagrams of fixed maximum length.  */
      54                 :            : #define SOCK_SEQPACKET SOCK_SEQPACKET
      55                 :            :   SOCK_DCCP = 6,                /* Datagram Congestion Control Protocol.  */
      56                 :            : #define SOCK_DCCP SOCK_DCCP
      57                 :            :   SOCK_PACKET = 10,             /* Linux specific way of getting packets
      58                 :            :                                    at the dev level.  For writing rarp and
      59                 :            :                                    other similar things on the user level. */
      60                 :            : #define SOCK_PACKET SOCK_PACKET
      61                 :            : 
      62                 :            :   /* Flags to be ORed into the type parameter of socket and socketpair and
      63                 :            :      used for the flags parameter of paccept.  */
      64                 :            : 
      65                 :            :   SOCK_CLOEXEC = 02000000,      /* Atomically set close-on-exec flag for the
      66                 :            :                                    new descriptor(s).  */
      67                 :            : #define SOCK_CLOEXEC SOCK_CLOEXEC
      68                 :            :   SOCK_NONBLOCK = 04000         /* Atomically mark descriptor(s) as
      69                 :            :                                    non-blocking.  */
      70                 :            : #define SOCK_NONBLOCK SOCK_NONBLOCK
      71                 :            : };
      72                 :            : 
      73                 :            : /* Protocol families.  */
      74                 :            : #define PF_UNSPEC       0       /* Unspecified.  */
      75                 :            : #define PF_LOCAL        1       /* Local to host (pipes and file-domain).  */
      76                 :            : #define PF_UNIX         PF_LOCAL /* POSIX name for PF_LOCAL.  */
      77                 :            : #define PF_FILE         PF_LOCAL /* Another non-standard name for PF_LOCAL.  */
      78                 :            : #define PF_INET         2       /* IP protocol family.  */
      79                 :            : #define PF_AX25         3       /* Amateur Radio AX.25.  */
      80                 :            : #define PF_IPX          4       /* Novell Internet Protocol.  */
      81                 :            : #define PF_APPLETALK    5       /* Appletalk DDP.  */
      82                 :            : #define PF_NETROM       6       /* Amateur radio NetROM.  */
      83                 :            : #define PF_BRIDGE       7       /* Multiprotocol bridge.  */
      84                 :            : #define PF_ATMPVC       8       /* ATM PVCs.  */
      85                 :            : #define PF_X25          9       /* Reserved for X.25 project.  */
      86                 :            : #define PF_INET6        10      /* IP version 6.  */
      87                 :            : #define PF_ROSE         11      /* Amateur Radio X.25 PLP.  */
      88                 :            : #define PF_DECnet       12      /* Reserved for DECnet project.  */
      89                 :            : #define PF_NETBEUI      13      /* Reserved for 802.2LLC project.  */
      90                 :            : #define PF_SECURITY     14      /* Security callback pseudo AF.  */
      91                 :            : #define PF_KEY          15      /* PF_KEY key management API.  */
      92                 :            : #define PF_NETLINK      16
      93                 :            : #define PF_ROUTE        PF_NETLINK /* Alias to emulate 4.4BSD.  */
      94                 :            : #define PF_PACKET       17      /* Packet family.  */
      95                 :            : #define PF_ASH          18      /* Ash.  */
      96                 :            : #define PF_ECONET       19      /* Acorn Econet.  */
      97                 :            : #define PF_ATMSVC       20      /* ATM SVCs.  */
      98                 :            : #define PF_RDS          21      /* RDS sockets.  */
      99                 :            : #define PF_SNA          22      /* Linux SNA Project */
     100                 :            : #define PF_IRDA         23      /* IRDA sockets.  */
     101                 :            : #define PF_PPPOX        24      /* PPPoX sockets.  */
     102                 :            : #define PF_WANPIPE      25      /* Wanpipe API sockets.  */
     103                 :            : #define PF_LLC          26      /* Linux LLC.  */
     104                 :            : #define PF_CAN          29      /* Controller Area Network.  */
     105                 :            : #define PF_TIPC         30      /* TIPC sockets.  */
     106                 :            : #define PF_BLUETOOTH    31      /* Bluetooth sockets.  */
     107                 :            : #define PF_IUCV         32      /* IUCV sockets.  */
     108                 :            : #define PF_RXRPC        33      /* RxRPC sockets.  */
     109                 :            : #define PF_ISDN         34      /* mISDN sockets.  */
     110                 :            : #define PF_PHONET       35      /* Phonet sockets.  */
     111                 :            : #define PF_IEEE802154   36      /* IEEE 802.15.4 sockets.  */
     112                 :            : #define PF_CAIF         37      /* CAIF sockets.  */
     113                 :            : #define PF_ALG          38      /* Algorithm sockets.  */
     114                 :            : #define PF_NFC          39      /* NFC sockets.  */
     115                 :            : #define PF_MAX          40      /* For now..  */
     116                 :            : 
     117                 :            : /* Address families.  */
     118                 :            : #define AF_UNSPEC       PF_UNSPEC
     119                 :            : #define AF_LOCAL        PF_LOCAL
     120                 :            : #define AF_UNIX         PF_UNIX
     121                 :            : #define AF_FILE         PF_FILE
     122                 :            : #define AF_INET         PF_INET
     123                 :            : #define AF_AX25         PF_AX25
     124                 :            : #define AF_IPX          PF_IPX
     125                 :            : #define AF_APPLETALK    PF_APPLETALK
     126                 :            : #define AF_NETROM       PF_NETROM
     127                 :            : #define AF_BRIDGE       PF_BRIDGE
     128                 :            : #define AF_ATMPVC       PF_ATMPVC
     129                 :            : #define AF_X25          PF_X25
     130                 :            : #define AF_INET6        PF_INET6
     131                 :            : #define AF_ROSE         PF_ROSE
     132                 :            : #define AF_DECnet       PF_DECnet
     133                 :            : #define AF_NETBEUI      PF_NETBEUI
     134                 :            : #define AF_SECURITY     PF_SECURITY
     135                 :            : #define AF_KEY          PF_KEY
     136                 :            : #define AF_NETLINK      PF_NETLINK
     137                 :            : #define AF_ROUTE        PF_ROUTE
     138                 :            : #define AF_PACKET       PF_PACKET
     139                 :            : #define AF_ASH          PF_ASH
     140                 :            : #define AF_ECONET       PF_ECONET
     141                 :            : #define AF_ATMSVC       PF_ATMSVC
     142                 :            : #define AF_RDS          PF_RDS
     143                 :            : #define AF_SNA          PF_SNA
     144                 :            : #define AF_IRDA         PF_IRDA
     145                 :            : #define AF_PPPOX        PF_PPPOX
     146                 :            : #define AF_WANPIPE      PF_WANPIPE
     147                 :            : #define AF_LLC          PF_LLC
     148                 :            : #define AF_CAN          PF_CAN
     149                 :            : #define AF_TIPC         PF_TIPC
     150                 :            : #define AF_BLUETOOTH    PF_BLUETOOTH
     151                 :            : #define AF_IUCV         PF_IUCV
     152                 :            : #define AF_RXRPC        PF_RXRPC
     153                 :            : #define AF_ISDN         PF_ISDN
     154                 :            : #define AF_PHONET       PF_PHONET
     155                 :            : #define AF_IEEE802154   PF_IEEE802154
     156                 :            : #define AF_CAIF         PF_CAIF
     157                 :            : #define AF_ALG          PF_ALG
     158                 :            : #define AF_NFC          PF_NFC
     159                 :            : #define AF_MAX          PF_MAX
     160                 :            : 
     161                 :            : /* Socket level values.  Others are defined in the appropriate headers.
     162                 :            : 
     163                 :            :    XXX These definitions also should go into the appropriate headers as
     164                 :            :    far as they are available.  */
     165                 :            : #define SOL_RAW         255
     166                 :            : #define SOL_DECNET      261
     167                 :            : #define SOL_X25         262
     168                 :            : #define SOL_PACKET      263
     169                 :            : #define SOL_ATM         264     /* ATM layer (cell level).  */
     170                 :            : #define SOL_AAL         265     /* ATM Adaption Layer (packet level).  */
     171                 :            : #define SOL_IRDA        266
     172                 :            : 
     173                 :            : /* Maximum queue length specifiable by listen.  */
     174                 :            : #define SOMAXCONN       128
     175                 :            : 
     176                 :            : /* Get the definition of the macro to define the common sockaddr members.  */
     177                 :            : #include <bits/sockaddr.h>
     178                 :            : 
     179                 :            : /* Structure describing a generic socket address.  */
     180                 :            : struct sockaddr
     181                 :            :   {
     182                 :            :     __SOCKADDR_COMMON (sa_);    /* Common data: address family and length.  */
     183                 :            :     char sa_data[14];           /* Address data.  */
     184                 :            :   };
     185                 :            : 
     186                 :            : 
     187                 :            : /* Structure large enough to hold any socket address (with the historical
     188                 :            :    exception of AF_UNIX).  We reserve 128 bytes.  */
     189                 :            : #define __ss_aligntype  unsigned long int
     190                 :            : #define _SS_SIZE        128
     191                 :            : #define _SS_PADSIZE     (_SS_SIZE - (2 * sizeof (__ss_aligntype)))
     192                 :            : 
     193                 :            : struct sockaddr_storage
     194                 :            :   {
     195                 :            :     __SOCKADDR_COMMON (ss_);    /* Address family, etc.  */
     196                 :            :     __ss_aligntype __ss_align;  /* Force desired alignment.  */
     197                 :            :     char __ss_padding[_SS_PADSIZE];
     198                 :            :   };
     199                 :            : 
     200                 :            : 
     201                 :            : /* Bits in the FLAGS argument to `send', `recv', et al.  */
     202                 :            : enum
     203                 :            :   {
     204                 :            :     MSG_OOB             = 0x01, /* Process out-of-band data.  */
     205                 :            : #define MSG_OOB         MSG_OOB
     206                 :            :     MSG_PEEK            = 0x02, /* Peek at incoming messages.  */
     207                 :            : #define MSG_PEEK        MSG_PEEK
     208                 :            :     MSG_DONTROUTE       = 0x04, /* Don't use local routing.  */
     209                 :            : #define MSG_DONTROUTE   MSG_DONTROUTE
     210                 :            : #ifdef __USE_GNU
     211                 :            :     /* DECnet uses a different name.  */
     212                 :            :     MSG_TRYHARD         = MSG_DONTROUTE,
     213                 :            : # define MSG_TRYHARD    MSG_DONTROUTE
     214                 :            : #endif
     215                 :            :     MSG_CTRUNC          = 0x08, /* Control data lost before delivery.  */
     216                 :            : #define MSG_CTRUNC      MSG_CTRUNC
     217                 :            :     MSG_PROXY           = 0x10, /* Supply or ask second address.  */
     218                 :            : #define MSG_PROXY       MSG_PROXY
     219                 :            :     MSG_TRUNC           = 0x20,
     220                 :            : #define MSG_TRUNC       MSG_TRUNC
     221                 :            :     MSG_DONTWAIT        = 0x40, /* Nonblocking IO.  */
     222                 :            : #define MSG_DONTWAIT    MSG_DONTWAIT
     223                 :            :     MSG_EOR             = 0x80, /* End of record.  */
     224                 :            : #define MSG_EOR         MSG_EOR
     225                 :            :     MSG_WAITALL         = 0x100, /* Wait for a full request.  */
     226                 :            : #define MSG_WAITALL     MSG_WAITALL
     227                 :            :     MSG_FIN             = 0x200,
     228                 :            : #define MSG_FIN         MSG_FIN
     229                 :            :     MSG_SYN             = 0x400,
     230                 :            : #define MSG_SYN         MSG_SYN
     231                 :            :     MSG_CONFIRM         = 0x800, /* Confirm path validity.  */
     232                 :            : #define MSG_CONFIRM     MSG_CONFIRM
     233                 :            :     MSG_RST             = 0x1000,
     234                 :            : #define MSG_RST         MSG_RST
     235                 :            :     MSG_ERRQUEUE        = 0x2000, /* Fetch message from error queue.  */
     236                 :            : #define MSG_ERRQUEUE    MSG_ERRQUEUE
     237                 :            :     MSG_NOSIGNAL        = 0x4000, /* Do not generate SIGPIPE.  */
     238                 :            : #define MSG_NOSIGNAL    MSG_NOSIGNAL
     239                 :            :     MSG_MORE            = 0x8000,  /* Sender will send more.  */
     240                 :            : #define MSG_MORE        MSG_MORE
     241                 :            :     MSG_WAITFORONE      = 0x10000, /* Wait for at least one packet to return.*/
     242                 :            : #define MSG_WAITFORONE  MSG_WAITFORONE
     243                 :            : 
     244                 :            :     MSG_CMSG_CLOEXEC    = 0x40000000    /* Set close_on_exit for file
     245                 :            :                                            descriptor received through
     246                 :            :                                            SCM_RIGHTS.  */
     247                 :            : #define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC
     248                 :            :   };
     249                 :            : 
     250                 :            : 
     251                 :            : /* Structure describing messages sent by
     252                 :            :    `sendmsg' and received by `recvmsg'.  */
     253                 :            : struct msghdr
     254                 :            :   {
     255                 :            :     void *msg_name;             /* Address to send to/receive from.  */
     256                 :            :     socklen_t msg_namelen;      /* Length of address data.  */
     257                 :            : 
     258                 :            :     struct iovec *msg_iov;      /* Vector of data to send/receive into.  */
     259                 :            :     size_t msg_iovlen;          /* Number of elements in the vector.  */
     260                 :            : 
     261                 :            :     void *msg_control;          /* Ancillary data (eg BSD filedesc passing). */
     262                 :            :     size_t msg_controllen;      /* Ancillary data buffer length.
     263                 :            :                                    !! The type should be socklen_t but the
     264                 :            :                                    definition of the kernel is incompatible
     265                 :            :                                    with this.  */
     266                 :            : 
     267                 :            :     int msg_flags;              /* Flags on received message.  */
     268                 :            :   };
     269                 :            : 
     270                 :            : #ifdef __USE_GNU
     271                 :            : /* For `recvmmsg'.  */
     272                 :            : struct mmsghdr
     273                 :            :   {
     274                 :            :     struct msghdr msg_hdr;      /* Actual message header.  */
     275                 :            :     unsigned int msg_len;       /* Number of received bytes for the entry.  */
     276                 :            :   };
     277                 :            : #endif
     278                 :            : 
     279                 :            : /* Structure used for storage of ancillary data object information.  */
     280                 :            : struct cmsghdr
     281                 :            :   {
     282                 :            :     size_t cmsg_len;            /* Length of data in cmsg_data plus length
     283                 :            :                                    of cmsghdr structure.
     284                 :            :                                    !! The type should be socklen_t but the
     285                 :            :                                    definition of the kernel is incompatible
     286                 :            :                                    with this.  */
     287                 :            :     int cmsg_level;             /* Originating protocol.  */
     288                 :            :     int cmsg_type;              /* Protocol specific type.  */
     289                 :            : #if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
     290                 :            :     __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data.  */
     291                 :            : #endif
     292                 :            :   };
     293                 :            : 
     294                 :            : /* Ancillary data object manipulation macros.  */
     295                 :            : #if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
     296                 :            : # define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
     297                 :            : #else
     298                 :            : # define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
     299                 :            : #endif
     300                 :            : #define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
     301                 :            : #define CMSG_FIRSTHDR(mhdr) \
     302                 :            :   ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr)                   \
     303                 :            :    ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
     304                 :            : #define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
     305                 :            :                          & (size_t) ~(sizeof (size_t) - 1))
     306                 :            : #define CMSG_SPACE(len) (CMSG_ALIGN (len) \
     307                 :            :                          + CMSG_ALIGN (sizeof (struct cmsghdr)))
     308                 :            : #define CMSG_LEN(len)   (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
     309                 :            : 
     310                 :            : extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
     311                 :            :                                       struct cmsghdr *__cmsg) __THROW;
     312                 :            : #ifdef __USE_EXTERN_INLINES
     313                 :            : # ifndef _EXTERN_INLINE
     314                 :            : #  define _EXTERN_INLINE __extern_inline
     315                 :            : # endif
     316                 :            : _EXTERN_INLINE struct cmsghdr *
     317                 :          0 : __NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
     318                 :            : {
     319 [ #  # ][ #  # ]:          0 :   if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
     320                 :            :     /* The kernel header does this so there may be a reason.  */
     321                 :            :     return (struct cmsghdr *) 0;
     322                 :            : 
     323                 :          0 :   __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
     324                 :          0 :                                + CMSG_ALIGN (__cmsg->cmsg_len));
     325 [ #  # ][ #  # ]:          0 :   if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
     326                 :          0 :                                         + __mhdr->msg_controllen)
     327 [ #  # ][ #  # ]:          0 :       || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
     328                 :          0 :           > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
     329                 :            :     /* No more entries.  */
     330                 :            :     return (struct cmsghdr *) 0;
     331                 :          0 :   return __cmsg;
     332                 :            : }
     333                 :            : #endif  /* Use `extern inline'.  */
     334                 :            : 
     335                 :            : /* Socket level message types.  This must match the definitions in
     336                 :            :    <linux/socket.h>.  */
     337                 :            : enum
     338                 :            :   {
     339                 :            :     SCM_RIGHTS = 0x01           /* Transfer file descriptors.  */
     340                 :            : #define SCM_RIGHTS SCM_RIGHTS
     341                 :            : #ifdef __USE_GNU
     342                 :            :     , SCM_CREDENTIALS = 0x02    /* Credentials passing.  */
     343                 :            : # define SCM_CREDENTIALS SCM_CREDENTIALS
     344                 :            : #endif
     345                 :            :   };
     346                 :            : 
     347                 :            : #ifdef __USE_GNU
     348                 :            : /* User visible structure for SCM_CREDENTIALS message */
     349                 :            : struct ucred
     350                 :            : {
     351                 :            :   pid_t pid;                    /* PID of sending process.  */
     352                 :            :   uid_t uid;                    /* UID of sending process.  */
     353                 :            :   gid_t gid;                    /* GID of sending process.  */
     354                 :            : };
     355                 :            : #endif
     356                 :            : 
     357                 :            : /* Ugly workaround for unclean kernel headers.  */
     358                 :            : #if !defined __USE_MISC && !defined __USE_GNU
     359                 :            : # ifndef FIOGETOWN
     360                 :            : #  define __SYS_SOCKET_H_undef_FIOGETOWN
     361                 :            : # endif
     362                 :            : # ifndef FIOSETOWN
     363                 :            : #  define __SYS_SOCKET_H_undef_FIOSETOWN
     364                 :            : # endif
     365                 :            : # ifndef SIOCATMARK
     366                 :            : #  define __SYS_SOCKET_H_undef_SIOCATMARK
     367                 :            : # endif
     368                 :            : # ifndef SIOCGPGRP
     369                 :            : #  define __SYS_SOCKET_H_undef_SIOCGPGRP
     370                 :            : # endif
     371                 :            : # ifndef SIOCGSTAMP
     372                 :            : #  define __SYS_SOCKET_H_undef_SIOCGSTAMP
     373                 :            : # endif
     374                 :            : # ifndef SIOCGSTAMPNS
     375                 :            : #  define __SYS_SOCKET_H_undef_SIOCGSTAMPNS
     376                 :            : # endif
     377                 :            : # ifndef SIOCSPGRP
     378                 :            : #  define __SYS_SOCKET_H_undef_SIOCSPGRP
     379                 :            : # endif
     380                 :            : #endif
     381                 :            : 
     382                 :            : /* Get socket manipulation related informations from kernel headers.  */
     383                 :            : #include <asm/socket.h>
     384                 :            : 
     385                 :            : #if !defined __USE_MISC && !defined __USE_GNU
     386                 :            : # ifdef __SYS_SOCKET_H_undef_FIOGETOWN
     387                 :            : #  undef __SYS_SOCKET_H_undef_FIOGETOWN
     388                 :            : #  undef FIOGETOWN
     389                 :            : # endif
     390                 :            : # ifdef __SYS_SOCKET_H_undef_FIOSETOWN
     391                 :            : #  undef __SYS_SOCKET_H_undef_FIOSETOWN
     392                 :            : #  undef FIOSETOWN
     393                 :            : # endif
     394                 :            : # ifdef __SYS_SOCKET_H_undef_SIOCATMARK
     395                 :            : #  undef __SYS_SOCKET_H_undef_SIOCATMARK
     396                 :            : #  undef SIOCATMARK
     397                 :            : # endif
     398                 :            : # ifdef __SYS_SOCKET_H_undef_SIOCGPGRP
     399                 :            : #  undef __SYS_SOCKET_H_undef_SIOCGPGRP
     400                 :            : #  undef SIOCGPGRP
     401                 :            : # endif
     402                 :            : # ifdef __SYS_SOCKET_H_undef_SIOCGSTAMP
     403                 :            : #  undef __SYS_SOCKET_H_undef_SIOCGSTAMP
     404                 :            : #  undef SIOCGSTAMP
     405                 :            : # endif
     406                 :            : # ifdef __SYS_SOCKET_H_undef_SIOCGSTAMPNS
     407                 :            : #  undef __SYS_SOCKET_H_undef_SIOCGSTAMPNS
     408                 :            : #  undef SIOCGSTAMPNS
     409                 :            : # endif
     410                 :            : # ifdef __SYS_SOCKET_H_undef_SIOCSPGRP
     411                 :            : #  undef __SYS_SOCKET_H_undef_SIOCSPGRP
     412                 :            : #  undef SIOCSPGRP
     413                 :            : # endif
     414                 :            : #endif
     415                 :            : 
     416                 :            : /* Structure used to manipulate the SO_LINGER option.  */
     417                 :            : struct linger
     418                 :            :   {
     419                 :            :     int l_onoff;                /* Nonzero to linger on close.  */
     420                 :            :     int l_linger;               /* Time to linger.  */
     421                 :            :   };
     422                 :            : 
     423                 :            : 
     424                 :            : __BEGIN_DECLS
     425                 :            : 
     426                 :            : /* Receive up to VLEN messages as described by VMESSAGES from socket FD.
     427                 :            :    Returns the number of bytes read or -1 for errors.
     428                 :            : 
     429                 :            :    This function is a cancellation point and therefore not marked with
     430                 :            :    __THROW.  */
     431                 :            : extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
     432                 :            :                      unsigned int __vlen, int __flags,
     433                 :            :                      __const struct timespec *__tmo);
     434                 :            : 
     435                 :            : /* Send a VLEN messages as described by VMESSAGES to socket FD.
     436                 :            :    Return the number of datagrams successfully written or -1 for errors.
     437                 :            : This function is a cancellation point and therefore not marked with
     438                 :            :    __THROW.  */
     439                 :            : extern int sendmmsg (int __fd, struct mmsghdr *__vmessages,
     440                 :            :                      unsigned int __vlen, int __flags);
     441                 :            : 
     442                 :            : __END_DECLS
     443                 :            : 
     444                 :            : #endif  /* bits/socket.h */

Generated by: LCOV version 1.9