socket.h(3head) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

socket.h(3head)

socket.h(3HEAD)                     Headers                    socket.h(3HEAD)

NAME
       socket.h, socket, sockaddr - sockets API header and structures

SYNOPSIS
       #include <sys/socket.h>

DESCRIPTION
       The <sys/socket.h> header provides definitions and declarations for the
       sockets  interfaces  for  inter-process and network communications. De‐
       pending on the feature test macros defined, these may be  either  stan‐
       dards-conforming or historical versions of the interfaces, as described
       in the following sections.

   Common Interfaces
       These   interfaces   are   always   available,  regardless  of  whether
       __USE_SUNOS_SOCKETS__ is defined.


       The  <sys/socket.h>  header  defines  the   unsigned   integral   types
       sa_family_t and socklen_t through typedef.


       The  <sys/socket.h>  header  defines  the  sockaddr structure to hold a
       socket address, which includes the following members:

         struct sockaddr {
             sa_family_t   sa_family;    /* address family */
             char          sa_data[];    /* socket address */
         };



       The <sys/socket.h> header defines the sockaddr_storage structure, which
       is large enough to accommodate all supported protocol-specific  address
       structures,  and aligned at an appropriate boundary so that pointers to
       it can be cast as pointers to protocol-specific address structures  and
       used  to  access the fields of those structures without alignment prob‐
       lems. The sockaddr_storage structure contains a member:

         struct sockaddr {
             sa_family_t   ss_family;    /* address family */
             [...]
         };



       which may be used to determine what type of socket address  the  struc‐
       ture should be cast to in order to interpret the address data.


       The  <sys/socket.h>  header  defines the linger structure that includes
       the following members:

         struct linger {
             int   l_onoff;   /* indicates whether linger option is enabled */
             int   l_linger;  /* linger time, in seconds */
         };



       The <sys/socket.h> header defines the following macros:

       SOCK_DGRAM        Datagram socket


       SOCK_RAW          Raw protocol interface


       SOCK_STREAM       Byte-stream socket


       SOCK_SEQPACKET    Sequenced-packet socket



       The <sys/socket.h> header defines the following macros for use  as  the
       level argument of setsockopt() and getsockopt().

       SOL_SOCKET    Options  to be accessed at the socket level, not the pro‐
                     tocol level.


       SOL_ROUTE     Options to be accessed at the routing socket  level,  not
                     the protocol level.



       The  <sys/socket.h>  header defines the following macros for use as the
       option_name argument of getsockopt() or setsockopt() calls:

       SO_ACCEPTCONN    Socket is accepting connections.


       SO_BROADCAST     Transmission of broadcast messages is supported.


       SO_DEBUG         Debugging information is being recorded.


       SO_DONTROUTE     Bypass normal routing for outgoing messages


       SO_ERROR         Socket error status.


       SO_KEEPALIVE     Connections are kept alive with periodic messages.


       SO_LINGER        Socket lingers on close.


       SO_OOBINLINE     Out-of-band data is transmitted in line.


       SO_RCVBUF        Receive buffer size.


       SO_RCVLOWAT      Receive "low water mark".


       SO_RCVTIMEO      Receive timeout.


       SO_REUSEADDR     Reuse of local addresses is supported.


       SO_SNDBUF        Send buffer size.


       SO_SNDLOWAT      Send "low water mark".


       SO_SNDTIMEO      Send timeout.


       SO_TYPE          Socket type.



       The <sys/socket.h> header also defines the following macros  as  exten‐
       sions  to  the standard for use as the option_name argument of getsock‐
       opt() or setsockopt() calls:

       SO_ALLZONES

           Bypass zone boundaries (privileged).


       SO_DOMAIN

           Get the domain used in the socket (get only)


       SO_FLOW_NAME

           Make the socket a flow filter of the specified MAC flow.

           It is applicable  to  TCP/UDP  PF_INET/PF_INET6  sockets.  Requires
           PRIV_SYS_FLOW_CONFIG privilege.


       SO_FLOW_SLA

           Set  per  socket  service  level properties: priority and bandwidth
           limit.

           It is applicable  to  TCP/UDP  PF_INET/PF_INET6  sockets.  Requires
           PRIV_SYS_FLOW_CONFIG privilege.


       SO_MAC_EXEMPT

           Mandatory  Access Control (MAC) exemption for unlabeled peers. This
           option is available only if the system is configured  with  Trusted
           Extensions.

       SO_NOSIGPIPE

           Control  whether  this  specific socket only returns EPIPE on write
           when the socket is disconnected, or whether  a  SIGPIPE  signal  is
           also sent.


       SO_PASSIVE_CONNECT

           Modify  connect(3C)  to wait for connection request from a peer in‐
           stead of initiating a connection request to it. It is applicable to
           TCP/SCTP PF_INET/PF_INET6 socket.


       SO_PROTOTYPE

           For socket in domains PF_INET and PF_INET6, get the underlying pro‐
           tocol number used in the socket. For socket in domain PF_ROUTE, get
           the address family used in the socket.


       SO_RECVUCRED

           Request the reception of user credential  ancillary  data,  as  de‐
           scribed  for  the SCM_UCRED value of cmsg_type below. This is a So‐
           laris-specific, Committed interface. This is only valid for sockets
           of type SOCK_DGRAM. See ucred_get(3C).



       The <sys/socket.h> header defines the following symbolic  constant  for
       use  as  the maximum backlog queue length which may be specified by the
       backlog argument to the listen() function:

       SOMAXCONN    The maximum backlog queue length.



       The <sys/socket.h> header defines the following macros for use  as  the
       valid  values  for  the msg_flags field in the msghdr structure, or the
       flags  parameter  in  recvfrom(),  recvmsg(),   recvmmsg(),   sendto(),
       sendmsg(), or sendmmsg() calls:

       MSG_CTRUNC          Control data truncated.


       MSG_EOR             Terminates a record (if supported by the protocol).


       MSG_OOB             Out-of-band data.


       MSG_PEEK            Leave received data in queue.


       MSG_TRUNC           Normal data truncated.


       MSG_WAITALL         Wait for complete message.


       MSG_CMSG_CLOEXEC    Atomically  set the FD_CLOEXEC flag on any file de‐
                           scriptors created via SCM_RIGHTS during recvmsg().


       MSG_CMSG_CLOFORK    Atomically set the FD_CLOFORK flag on any file  de‐
                           scriptors created via SCM_RIGHTS during recvmsg().



       The <sys/socket.h> header defines the following macros:

       AF_INET      Internet domain sockets for use with IPv4 addresses.


       AF_INET6     Internet domain sockets for use with IPv6 addresses.


       AF_UNIX      UNIX domain sockets.


       AF_UNSPEC    Unspecified socket type.



       The  <sys/socket.h>  header defines the following macros for use as the
       how argument to the shutdown(3C) function:

       SHUT_RD      Disables further receive operations.


       SHUT_WR      Disables further send operations.


       SHUT_RDWR    Disables further send and receive operations.


   Standard Interfaces
       These interfaces are available to XPG4v2  standard-conforming  applica‐
       tions. See standards(7).


       By  default,  when __USE_SUNOS_SOCKETS__ is not defined, and when POSIX
       conformance is requested by defining _XOPEN_SOURCE=500 or  higher,  the
       <sys/socket.h>  header defines the msghdr structure to include the fol‐
       lowing members:

         struct msghdr {
             void *          msg_name;          /* optional address */
             socklen_t       msg_namelen;       /* size of address */
             struct iovec *  msg_iov;           /* scatter/gather array */
             int             msg_iovlen;        /* members in msg_iov */
             void *          msg_control;       /* ancillary data, see below */
             socklen_t       msg_controllen;    /* ancillary data buffer len */
             int             msg_flags;         /* flags on received message */
         };



       The <sys/socket.h> header defines the cmsghdr structure to include  the
       following members:

         struct cmsghdr {
             socklen_t  cmsg_len      /* data byte count, including hdr */
             int        cmsg_level    /* originating protocol */
             int        cmsg_type     /* protocol-specific type */
         };



       Ancillary  data  consists  of a sequence of pairs, each consisting of a
       cmsghdr structure followed by a data array. The data array contains the
       ancillary data message, and the cmsghdr structure contains  descriptive
       information that allows an application to correctly parse the data.


       The  values  for cmsg_level will be legal values for the level argument
       to the getsockopt() and setsockopt() functions.


       The <sys/socket.h> header defines the following macros for use  as  the
       cmsg_type values when cmsg_level is SOL_SOCKET.

       SCM_RIGHTS

           Indicates that the data array contains the access rights to be sent
           or received.


       SCM_UCRED

           Indicates  that  the  data array contains a ucred_t to be received.
           The ucred_t is the credential of the sending process  at  the  time
           the  message  was  sent. The size is variable but never larger than
           the value returned by ucred_size(3C). This is  a  Solaris-specific,
           Committed interface. See ucred_get(3C).



       The  <sys/socket.h>  header defines the following macros for use as the
       cmsg_type values when cmsg_level is IPPROTO_IP. The IPv4  data  formats
       generally  use  the  same values for data passed back in cmsghdr as for
       setsockopt() to enable the feature. The IPv4 data  formats  are  listed
       below with the associated payload for each.

       IP_RECVDSTADDR    ipaddr_t, IP address


       IP_RECVOPTS       variable-length IP options, up to 40 bytes


       IP_RECVIF         uint_t, ifIndex number


       IP_RECVSLLA       struct sockaddr_dl, link layer address


       IP_RECVTTL        uint8_t



       The  <sys/socket.h>  header defines the following macros for use as the
       cmsg_type values when cmsg_level is IPPROTO_IPV6. The IPv6 data formats
       use different values for enabling the option and for passing the  value
       back  to  the  application. The IPv6 data formats are listed below with
       the associated payload for each.

       IPV6_RECVPKTINFO

           in_pktinfo, cmsg_type  IPV6_PKTINFO


       IPV6_RECVTCLASS

           uint_t, cmsg_type  IPV6_TCLASS


       IPV6_RECVPATHMTU

           ip6_mtuinfo, cmsg_type  IPV6_PATHMTU


       IPV6_RECVHOPLIMIT

           uint_t, cmsg_type  IPV6_HOPLIMIT


       IPV6_RECVHOPOPTS

           variable-length IPv6 options, cmsg_type  IPV6_HOPOPTS


       IPV6_RECVDSTOPTS

           variable-length IPv6 options, cmsg_type  IPV6_DSTOPTS


       IPV6_RECVRTHDR

           variable-length IPv6 options, cmsg_type  IPV6_RTHDR


       IPV6_RECVRTHDRDSTOPTS

           variable-length IPv6 options, cmsg_type  IPV6_DSTOPTS



       The <sys/socket.h> header defines the following macros to  gain  access
       to  the  data  arrays  in  the ancillary data associated with a message
       header:

       CMSG_DATA(cmsg)

           If the argument is a pointer to a cmsghdr structure, this macro re‐
           turns an unsigned character pointer to the  data  array  associated
           with the cmsghdr structure.


       CMSG_NXTHDR(mhdr, cmsg)

           If  the  first  argument is a pointer to a msghdr structure and the
           second argument is a pointer to a cmsghdr structure in  the  ancil‐
           lary  data,  pointed  to  by  the  msg_control field of that msghdr
           structure, this macro returns a pointer to the next cmsghdr  struc‐
           ture,  or  a  null pointer if this structure is the last cmsghdr in
           the ancillary data.


       CMSG_FIRSTHDR(mhdr)

           If the argument is a pointer to a msghdr structure, this macro  re‐
           turns  a  pointer  to  the first cmsghdr structure in the ancillary
           data associated with this msghdr structure, or a  null  pointer  if
           there is no ancillary data associated with the msghdr structure.


       CMSG_SPACE(len)

           Given  the length of an ancillary data object, CMSG_SPACE() returns
           the space required by the object and its cmsghdr structure, includ‐
           ing any padding needed  to  satisfy  alignment  requirements.  This
           macro  can  be used, for example, to allocate space dynamically for
           the ancillary data. This macro should not be used to initialize the
           cmsg_len member of a cmsghdr structure. Use  the  CMSG_LEN()  macro
           instead.


       CMSG_LEN(len)

           Given  the  length  of an ancillary data object, CMSG_LEN() returns
           the value to store in the cmsg_len member of the cmsghdr structure,
           taking into account any padding needed  to  satisfy  alignment  re‐
           quirements.


   Historical Interfaces
       For  applications  that  are  written to use the old SunOS4.x (BSD 4.3)
       style sockets, __USE_SUNOS_SOCKETS__ must be defined  before  including
       <sys/socket.h>, as in:

         cc -D__USE_SUNOS_SOCKETS__ ...
         #include <sys/socket.h>



       In this case, the <sys/socket.h> header defines the msghdr structure to
       include  the  following  members rather than the POSIX standard version
       described above:

         void           *msg_name        /* optional address */
         socklen_t      msg_namelen      /* size of address */
         struct iovec   *msg_iov         /* scatter/gather array */
         int            msg_iovlen       /* # elements in msg_iov */
         caddr_t        msg_accrights    /* access rights sent/received */
         int            msg_accrightslen /*access rights buffer len */



       The msg_name and msg_namelen parameters specify the destination address
       when the socket is unconnected. The msg_name can be specified as a NULL
       pointer if no names are desired or required. The msg_iov and msg_iovlen
       parameters describe  the  scatter-gather  locations,  as  described  in
       read(2).  The msg_accrights parameter specifies the buffer in which ac‐
       cess rights sent along with the message are received. The msg_accright‐
       slen specifies the length of the buffer.


       When __USE_SUNOS_SOCKETS__ is defined before including  <sys/socket.h>,
       none of the CMSG_*() macros are defined.

ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE  VALUE  _  Interface  StabilityCommitted  _  StandardSee  stan‐
       dards(7).


SEE ALSO
       accept(3C),   accept4(3C),   bind(3C),   connect(3C),  getpeername(3C),
       getpeerucred(3C),    getsockname(3C),    getsockopt(3C),    listen(3C),
       recv(3C),    recvfrom(3C),    recvmsg(3C),    recvmmsg(3C),   send(3C),
       sendmsg(3C), sendmmsg(3C),  sendto(3C),  setsockopt(3C),  shutdown(3C),
       sockatmark(3C),      socket(3C),     socketpair(3C),     ucred_get(3C),
       attributes(7), standards(7)


       Gilligan, R. RFC 3493, Basic Socket Interface Extensions for IPv6. Net‐
       work Working Group. February 2003. https://tools.ietf.org/html/rfc3493

HISTORY
       The functions declared  in  this  header  were  provided  in  the  lib‐
       socket(3LIB)  library  in  Solaris  2  through  11.3,  and moved to the
       libc(3LIB) library in Solaris 11.4.


       The X/Open standard-conforming interfaces were also available  via  the
       libxnet(3LIB)  filter library in Solaris 2.6 through 11.3. This library
       became a filter on the libc(3LIB) library in Solaris 11.4.


       The Historical Functionality was the default behavior when building ap‐
       plications on Solaris 11.3 and earlier releases, and use of  the  Stan‐
       dard    Functionality    on    those    releases    required   defining
       _XOPEN_SOURCE=500 or higher when building applications. Oracle  Solaris
       11.4 changed the default to the standards-conforming version, and added
       the  requirement  to  define __USE_SUNOS_SOCKETS__ before including the
       <sys/socket.h> header to use the historical version instead.

Oracle Solaris 11.4               2 Feb 2021                   socket.h(3HEAD)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3