Print this page
13175 Add support for IP_RECVTOS
13182 CMSG_ macros should have man pages
Change-ID: I784aa36cfd3c17e3cccbf1fd329fa7e69b663ef9

@@ -40,22 +40,21 @@
 .\" information: Portions Copyright [yyyy] [name of copyright owner]
 .\"
 .\"
 .\" Copyright (c) 1992, X/Open Company Limited All Rights Reserved.
 .\" Portions Copyright (c) 2009, Sun Microsystems, Inc.  All Rights Reserved.
+.\" Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
 .\"
-.TH SOCKET.H 3HEAD "Jun 18, 2017"
+.TH SOCKET.H 3HEAD "Sep 18, 2020"
 .SH NAME
-socket.h, socket \- Internet Protocol family
+socket.h, socket, CMSG_DATA, CMSG_FIRSTHDR, CMSG_LEN, CMSG_NXTHDR, CMSG_SPACE \- Internet Protocol family
 .SH SYNOPSIS
-.LP
 .nf
 \fB#include <sys/socket.h>\fR
 .fi
 
 .SH DESCRIPTION
-.LP
 The \fB<sys/socket.h>\fR header defines the unsigned integral type
 \fBsa_family_t\fR through \fBtypedef\fR.
 .sp
 .LP
 The \fB<sys/socket.h>\fR header defines the \fBsockaddr\fR structure that

@@ -68,11 +67,10 @@
                                 data) */
 .fi
 .in -2
 
 .SS "\fBlibxnet\fR Interfaces"
-.LP
 The \fB<sys/socket.h>\fR header defines the \fBmsghdr\fR structure for
 \fBlibxnet\fR interfaces that includes the following members:
 .sp
 .in +2
 .nf

@@ -116,233 +114,194 @@
 header defines the following macros for use as the \fBcmsg_type\fR values when
 \fBcmsg_level\fR is \fBSOL_SOCKET\fR.
 .sp
 .ne 2
 .na
-\fB\fBSCM_RIGHTS\fR\fR
+\fBSCM_RIGHTS\fR
 .ad
 .RS 14n
-Indicates that the data array contains the access rights to be sent or
-received.
+Indicates that the data array contains the access rights (set of open file
+descriptors) to be sent or received.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSCM_UCRED\fR\fR
+\fBSCM_UCRED\fR
 .ad
 .RS 14n
 Indicates that the data array contains a \fBucred_t\fR to be received. The
 \fBucred_t\fR is the credential of the sending process at the time the message
 was sent. This is a Sun-specific, Evolving interface. See \fBucred_get\fR(3C).
 .RE
 
 .sp
 .LP
-The IPv4 data formats generally use the same values for data passed back in
-\fBcmsghdr\fR as for \fBsetsockopt()\fR to enable the feature. The IPv4 data
-formats are listed below with the associated payload for each.
+The IPv4 ancillary data formats are listed below by \fBcmsg_level\fR and
+\fBcmsg_type\fR, along with the associated payload for each.
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IP\fR\fR
+\fBIPPROTO_IP\fR, \fBIP_RECVDSTADDR\fR \(em \fBSOCK_DGRAM\fR only
 .ad
-.br
-.na
-\fB\fBIP_RECVDSTADDR\fR\fR
-.ad
 .sp .6
 .RS 4n
 \fBipaddr_t\fR, IP address
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IP\fR\fR
+\fBIPPROTO_IP\fR, \fBIP_RECVIF\fR
 .ad
-.br
+.sp .6
+.RS 4n
+\fBuint_t\fR, \fBifIndex\fR number
+.RE
+
+.sp
+.ne 2
 .na
-\fB\fBIP_RECVOPTS\fR\fR
+\fBIPPROTO_IP\fR, \fBIP_RECVOPTS\fR \(em \fBSOCK_DGRAM\fR only
 .ad
 .sp .6
 .RS 4n
 variable-length IP options, up to 40 bytes
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IP\fR\fR
+\fBIPPROTO_IP\fR, \fBIP_RECVPKTINFO\fR \(em \fBSOCK_DGRAM\fR only
 .ad
-.br
-.na
-\fB\fBIP_RECVIF\fR\fR
-.ad
 .sp .6
 .RS 4n
-\fBuint_t\fR, \fBifIndex\fR number
+\fBin_pktinfo_t\fR
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IP\fR\fR
+\fBIPPROTO_IP\fR, \fBIP_RECVSLLA\fR \(em \fBSOCK_DGRAM\fR only
 .ad
-.br
-.na
-\fB\fBIP_RECVSLLA\fR\fR
-.ad
 .sp .6
 .RS 4n
 \fBstruct sockaddr_dl\fR, link layer address
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IP\fR\fR
+\fBIPPROTO_IP\fR, \fBIP_RECVTTL\fR \(em \fBSOCK_DGRAM\fR only
 .ad
-.br
+.sp .6
+.RS 4n
+\fBuint8_t\fR, the IP TTL (time to live)
+.RE
+
+.sp
+.ne 2
 .na
-\fB\fBIP_RECVTTL\fR\fR
+\fBIPPROTO_IP\fR, \fBIP_RECVTOS\fR
 .ad
 .sp .6
 .RS 4n
-\fBuint8_t\fR
+\fBuint8_t\fR, the IP TOS (type of service)
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSOL_SOCKET\fR\fR
+\fBSOL_SOCKET\fR, \fBSO_UCRED\fR
 .ad
-.br
-.na
-\fB\fBSO_RECVUCRED\fR\fR
-.ad
 .sp .6
 .RS 4n
-\fBucred_t\fR \(em \fBcmsghdr.cmsg_type\fR is \fBSCM_UCRED\fR, not
-\fBSO_RECVUCRED\fR
+\fBucred_t\fR
 .RE
 
 .sp
 .LP
-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.
+The IPv6 ancillary data formats are listed below by \fBcmsg_level\fR and
+\fBcmsg_type\fR, along with the associated payload for each.
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IPV6\fR\fR
+\fBIPPROTO_IPV6\fR, \fBIPV6_PKTINFO\fR
 .ad
-.br
-.na
-\fB\fBIPV6_RECVPKTINFO\fR\fR
-.ad
 .sp .6
 .RS 4n
-\fBin_pktinfo\fR, \fBcmsg_type\fR \fBIPV6_PKTINFO\fR
+\fBin_pktinfo_t\fR
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IPV6\fR\fR
+\fBIPPROTO_IPV6\fR, \fBIPV6_TCLASS\fR
 .ad
-.br
-.na
-\fB\fBIPV6_RECVTCLASS\fR\fR
-.ad
 .sp .6
 .RS 4n
-\fBuint_t\fR, \fBcmsg_type\fR \fBIPV6_TCLASS\fR
+\fBuint_t\fR
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IPV6\fR\fR
+\fBIPPROTO_IPV6\fR, \fBIPV6_PATHMTU\fR
 .ad
-.br
-.na
-\fB\fBIPV6_RECVPATHMTU\fR\fR
-.ad
 .sp .6
 .RS 4n
-\fBip6_mtuinfo\fR, \fBcmsg_type\fR \fBIPV6_PATHMTU\fR
+\fBip6_mtuinfo\fR
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IPV6\fR\fR
+\fBIPPROTO_IPV6\fR, \fBIPV6_HOPLIMIT\fR
 .ad
-.br
-.na
-\fB\fBIPV6_RECVHOPLIMIT\fR\fR
-.ad
 .sp .6
 .RS 4n
-\fBuint_t\fR, \fBcmsg_type\fR \fBIPV6_HOPLIMIT\fR
+\fBuint_t\fR
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IPV6\fR\fR
+\fBIPPROTO_IPV6\fR, \fBIPV6_HOPOPTS\fR
 .ad
-.br
-.na
-\fB\fBIPV6_RECVHOPOPTS\fR\fR
-.ad
 .sp .6
 .RS 4n
-variable-length IPv6 options, \fBcmsg_type\fR \fBIPV6_HOPOPTS\fR
+variable-length IPv6 options
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IPV6\fR\fR
+\fBIPPROTO_IPV6\fR, \fBIPV6_DSTOPTS\fR
 .ad
-.br
-.na
-\fB\fBIPV6_RECVDSTOPTS\fR\fR
-.ad
 .sp .6
 .RS 4n
-variable-length IPv6 options, \fBcmsg_type\fR \fBIPV6_DSTOPTS\fR
+variable-length IPv6 options
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IPV6\fR\fR
+\fBIPPROTO_IPV6\fR, \fBIPV6_RTHDR\fR
 .ad
-.br
-.na
-\fB\fBIPV6_RECVRTHDR\fR\fR
-.ad
 .sp .6
 .RS 4n
-variable-length IPv6 options, \fBcmsg_type\fR \fBIPV6_RTHDR\fR
+variable-length IPv6 options
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBIPPROTO_IPV6\fR\fR
+\fBIPPROTO_IPV6\fR, \fBIPV6_DSTOPTS\fR
 .ad
-.br
-.na
-\fB\fBIPV6_RECVRTHDRDSTOPTS\fR\fR
-.ad
 .sp .6
 .RS 4n
-variable-length IPv6 options, \fBcmsg_type\fR \fBIPV6_DSTOPTS\fR
+variable-length IPv6 options
 .RE
 
 .sp
 .LP
 The \fB<sys/socket.h>\fR header defines the following macros to gain access to

@@ -429,29 +388,29 @@
 .LP
 The \fB<sys/socket.h>\fR header defines the following macros:
 .sp
 .ne 2
 .na
-\fB\fBSOCK_DGRAM\fR\fR
+\fBSOCK_DGRAM\fR
 .ad
 .RS 18n
 Datagram socket
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSOCK_STREAM\fR\fR
+\fBSOCK_STREAM\fR
 .ad
 .RS 18n
 Byte-stream socket
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSOCK_SEQPACKET\fR\fR
+\fBSOCK_SEQPACKET\fR
 .ad
 .RS 18n
 Sequenced-packet socket
 .RE
 

@@ -460,20 +419,20 @@
 The \fB<sys/socket.h>\fR header defines the following macros for use as the
 \fIlevel\fR argument of \fBsetsockopt()\fR and \fBgetsockopt()\fR.
 .sp
 .ne 2
 .na
-\fB\fBSOL_SOCKET\fR\fR
+\fBSOL_SOCKET\fR
 .ad
 .RS 14n
 Options to be accessed at the socket level, not the protocol level.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSOL_ROUTE\fR\fR
+\fBSOL_ROUTE\fR
 .ad
 .RS 14n
 Options to be accessed at the routing socket level, not the protocol level.
 .RE
 

@@ -482,130 +441,130 @@
 The \fB<sys/socket.h>\fR header defines the following macros for use as the
 \fIoption_name\fR argument of \fBgetsockopt()\fR or \fBsetsockopt()\fR calls:
 .sp
 .ne 2
 .na
-\fB\fBSO_DEBUG\fR\fR
+\fBSO_DEBUG\fR
 .ad
 .RS 17n
 Debugging information is being recorded.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_ACCEPTCONN\fR\fR
+\fBSO_ACCEPTCONN\fR
 .ad
 .RS 17n
 Socket is accepting connections.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_BROADCAST\fR\fR
+\fBSO_BROADCAST\fR
 .ad
 .RS 17n
 Transmission of broadcast messages is supported.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_REUSEADDR\fR\fR
+\fBSO_REUSEADDR\fR
 .ad
 .RS 17n
 Reuse of local addresses is supported.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_KEEPALIVE\fR\fR
+\fBSO_KEEPALIVE\fR
 .ad
 .RS 17n
 Connections are kept alive with periodic messages.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_LINGER\fR\fR
+\fBSO_LINGER\fR
 .ad
 .RS 17n
 Socket lingers on close.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_OOBINLINE\fR\fR
+\fBSO_OOBINLINE\fR
 .ad
 .RS 17n
 Out-of-band data is transmitted in line.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_SNDBUF\fR\fR
+\fBSO_SNDBUF\fR
 .ad
 .RS 17n
 Send buffer size.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_RCVBUF\fR\fR
+\fBSO_RCVBUF\fR
 .ad
 .RS 17n
 Receive buffer size.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_ERROR\fR\fR
+\fBSO_ERROR\fR
 .ad
 .RS 17n
 Socket error status.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_TYPE\fR\fR
+\fBSO_TYPE\fR
 .ad
 .RS 17n
 Socket type.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_RECVUCRED\fR\fR
+\fBSO_RECVUCRED\fR
 .ad
 .RS 17n
 Request the reception of user credential ancillary data. This is a
 Sun-specific, Evolving interface. See \fBucred_get\fR(3C).
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_MAC_EXEMPT\fR\fR
+\fBSO_MAC_EXEMPT\fR
 .ad
 .RS 17n
 Mandatory Access Control (\fBMAC\fR) exemption for unlabeled peers. This option
 is available only if the system is configured with Trusted Extensions.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSO_ALLZONES\fR\fR
+\fBSO_ALLZONES\fR
 .ad
 .RS 17n
 Bypass zone boundaries (privileged).
 .RE
 

@@ -616,65 +575,65 @@
 the flags parameter in \fBrecvfrom()\fR, \fBrecvmsg()\fR, \fBsendto()\fR, or
 \fBsendmsg()\fR calls:
 .sp
 .ne 2
 .na
-\fB\fBMSG_CTRUNC\fR\fR
+\fBMSG_CTRUNC\fR
 .ad
 .RS 15n
 Control data truncated.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBMSG_EOR\fR\fR
+\fBMSG_EOR\fR
 .ad
 .RS 15n
 Terminates a record (if supported by the protocol).
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBMSG_OOB\fR\fR
+\fBMSG_OOB\fR
 .ad
 .RS 15n
 Out-of-band data.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBMSG_PEEK\fR\fR
+\fBMSG_PEEK\fR
 .ad
 .RS 15n
 Leave received data in queue.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBMSG_TRUNC\fR\fR
+\fBMSG_TRUNC\fR
 .ad
 .RS 15n
 Normal data truncated.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBMSG_WAITALL\fR\fR
+\fBMSG_WAITALL\fR
 .ad
 .RS 15n
 Wait for complete message.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBMSG_NOSIGNAL\fR\fR
+\fBMSG_NOSIGNAL\fR
 .ad
 .RS 15n
 Do not generate \fBSIGPIPE\fR signal.
 .RE
 

@@ -682,20 +641,20 @@
 .LP
 The \fB<sys/socket.h>\fR header defines the following macros:
 .sp
 .ne 2
 .na
-\fB\fBAF_UNIX\fR\fR
+\fBAF_UNIX\fR
 .ad
 .RS 11n
 UNIX domain sockets
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBAF_INET\fR\fR
+\fBAF_INET\fR
 .ad
 .RS 11n
 Internet domain sockets
 .RE
 

@@ -703,36 +662,35 @@
 .LP
 The \fB<sys/socket.h>\fR header defines the following macros:
 .sp
 .ne 2
 .na
-\fB\fBSHUT_RD\fR\fR
+\fBSHUT_RD\fR
 .ad
 .RS 13n
 Disables further receive operations.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSHUT_WR\fR\fR
+\fBSHUT_WR\fR
 .ad
 .RS 13n
 Disables further send operations.
 .RE
 
 .sp
 .ne 2
 .na
-\fB\fBSHUT_RDWR\fR\fR
+\fBSHUT_RDWR\fR
 .ad
 .RS 13n
 Disables further send and receive operations.
 .RE
 
 .SS "\fBlibsocket\fR Interfaces"
-.LP
 The \fB<sys/socket.h>\fR header defines the \fBmsghdr\fR structure for
 \fBlibsocket\fR interfaces that includes the following members:
 .sp
 .in +2
 .nf

@@ -752,11 +710,10 @@
 \fImsg_iovlen\fR parameters describe the scatter-gather locations, as described
 in \fBread\fR(2). The \fImsg_accrights\fR parameter specifies the buffer in
 which access rights sent along with the message are received. The
 \fImsg_accrightslen\fR specifies the length of the buffer.
 .SH ATTRIBUTES
-.LP
 See \fBattributes\fR(5) for descriptions of the following attributes:
 .sp
 
 .sp
 .TS

@@ -767,11 +724,10 @@
 _
 Interface Stability     Standard
 .TE
 
 .SH SEE ALSO
-.LP
 \fBaccept\fR(3SOCKET), \fBaccept\fR(3XNET), \fBbind\fR(3SOCKET),
 \fBbind\fR(3XNET), \fBconnect\fR(3SOCKET), \fBconnect\fR(3XNET),
 \fBgetpeername\fR(3SOCKET), \fBgetpeername\fR(3XNET), \fBgetpeerucred\fR(3C),
 \fBgetsockname\fR(3SOCKET), \fBgetsockname\fR(3XNET),
 \fBgetsockopt\fR(3SOCKET), \fBgetsockopt\fR(3XNET), \fBlibsocket\fR(3LIB),