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.
       Depending 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
           instead  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
           described  for  the  SCM_UCRED  value of cmsg_type below. This is a
           Solaris-specific, Committed interface. This is only valid for sock‐
           ets 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
                           descriptors    created    via   SCM_RIGHTS   during
                           recvmsg().


       MSG_CMSG_CLOFORK    Atomically set the  FD_CLOFORK  flag  on  any  file
                           descriptors    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
           returns  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
           returns 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
           requirements.


   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
       access  rights  sent  along  with  the  message   are   received.   The
       msg_accrightslen 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
       applications 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