25 .\" This notice shall appear on any product containing this material.
26 .\"
27 .\" The contents of this file are subject to the terms of the
28 .\" Common Development and Distribution License (the "License").
29 .\" You may not use this file except in compliance with the License.
30 .\"
31 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
32 .\" or http://www.opensolaris.org/os/licensing.
33 .\" See the License for the specific language governing permissions
34 .\" and limitations under the License.
35 .\"
36 .\" When distributing Covered Code, include this CDDL HEADER in each
37 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
38 .\" If applicable, add the following below this CDDL HEADER, with the
39 .\" fields enclosed by brackets "[]" replaced with your own identifying
40 .\" information: Portions Copyright [yyyy] [name of copyright owner]
41 .\"
42 .\"
43 .\" Copyright (c) 1992, X/Open Company Limited All Rights Reserved.
44 .\" Portions Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved.
45 .\"
46 .TH SOCKET.H 3HEAD "Jun 18, 2017"
47 .SH NAME
48 socket.h, socket \- Internet Protocol family
49 .SH SYNOPSIS
50 .LP
51 .nf
52 \fB#include <sys/socket.h>\fR
53 .fi
54
55 .SH DESCRIPTION
56 .LP
57 The \fB<sys/socket.h>\fR header defines the unsigned integral type
58 \fBsa_family_t\fR through \fBtypedef\fR.
59 .sp
60 .LP
61 The \fB<sys/socket.h>\fR header defines the \fBsockaddr\fR structure that
62 includes the following members:
63 .sp
64 .in +2
65 .nf
66 sa_family_t sa_family /* address family */
67 char sa_data[] /* socket address (variable-length
68 data) */
69 .fi
70 .in -2
71
72 .SS "\fBlibxnet\fR Interfaces"
73 .LP
74 The \fB<sys/socket.h>\fR header defines the \fBmsghdr\fR structure for
75 \fBlibxnet\fR interfaces that includes the following members:
76 .sp
77 .in +2
78 .nf
79 void *msg_name /* optional address */
80 socklen_t msg_namelen /* size of address */
81 struct iovec *msg_iov /* scatter/gather array */
82 int msg_iovlen /* members in msg_iov */
83 void *msg_control /* ancillary data, see below */
84 socklen_t msg_controllen /* ancillary data buffer len */
85 int msg_flags /* flags on received message */
86 .fi
87 .in -2
88
89 .sp
90 .LP
91 The \fB<sys/socket.h>\fR header defines the \fBcmsghdr\fR structure for
92 \fBlibxnet\fR that includes the following members:
93 .sp
101
102 .sp
103 .LP
104 Ancillary data consists of a sequence of pairs, each consisting of a
105 \fBcmsghdr\fR structure followed by a data array. The data array contains the
106 ancillary data message, and the \fBcmsghdr\fR structure contains descriptive
107 information that allows an application to correctly parse the data.
108 .sp
109 .LP
110 The values for \fBcmsg_level\fR will be legal values for the level argument to
111 the \fBgetsockopt()\fR and \fBsetsockopt()\fR functions. The \fBSCM_RIGHTS\fR
112 type is supported for level \fBSOL_SOCKET\fR.
113 .sp
114 .LP
115 Ancillary data is also possible at the socket level. The \fB<sys/socket.h>\fR
116 header defines the following macros for use as the \fBcmsg_type\fR values when
117 \fBcmsg_level\fR is \fBSOL_SOCKET\fR.
118 .sp
119 .ne 2
120 .na
121 \fB\fBSCM_RIGHTS\fR\fR
122 .ad
123 .RS 14n
124 Indicates that the data array contains the access rights to be sent or
125 received.
126 .RE
127
128 .sp
129 .ne 2
130 .na
131 \fB\fBSCM_UCRED\fR\fR
132 .ad
133 .RS 14n
134 Indicates that the data array contains a \fBucred_t\fR to be received. The
135 \fBucred_t\fR is the credential of the sending process at the time the message
136 was sent. This is a Sun-specific, Evolving interface. See \fBucred_get\fR(3C).
137 .RE
138
139 .sp
140 .LP
141 The IPv4 data formats generally use the same values for data passed back in
142 \fBcmsghdr\fR as for \fBsetsockopt()\fR to enable the feature. The IPv4 data
143 formats are listed below with the associated payload for each.
144 .sp
145 .ne 2
146 .na
147 \fB\fBIPPROTO_IP\fR\fR
148 .ad
149 .br
150 .na
151 \fB\fBIP_RECVDSTADDR\fR\fR
152 .ad
153 .sp .6
154 .RS 4n
155 \fBipaddr_t\fR, IP address
156 .RE
157
158 .sp
159 .ne 2
160 .na
161 \fB\fBIPPROTO_IP\fR\fR
162 .ad
163 .br
164 .na
165 \fB\fBIP_RECVOPTS\fR\fR
166 .ad
167 .sp .6
168 .RS 4n
169 variable-length IP options, up to 40 bytes
170 .RE
171
172 .sp
173 .ne 2
174 .na
175 \fB\fBIPPROTO_IP\fR\fR
176 .ad
177 .br
178 .na
179 \fB\fBIP_RECVIF\fR\fR
180 .ad
181 .sp .6
182 .RS 4n
183 \fBuint_t\fR, \fBifIndex\fR number
184 .RE
185
186 .sp
187 .ne 2
188 .na
189 \fB\fBIPPROTO_IP\fR\fR
190 .ad
191 .br
192 .na
193 \fB\fBIP_RECVSLLA\fR\fR
194 .ad
195 .sp .6
196 .RS 4n
197 \fBstruct sockaddr_dl\fR, link layer address
198 .RE
199
200 .sp
201 .ne 2
202 .na
203 \fB\fBIPPROTO_IP\fR\fR
204 .ad
205 .br
206 .na
207 \fB\fBIP_RECVTTL\fR\fR
208 .ad
209 .sp .6
210 .RS 4n
211 \fBuint8_t\fR
212 .RE
213
214 .sp
215 .ne 2
216 .na
217 \fB\fBSOL_SOCKET\fR\fR
218 .ad
219 .br
220 .na
221 \fB\fBSO_RECVUCRED\fR\fR
222 .ad
223 .sp .6
224 .RS 4n
225 \fBucred_t\fR \(em \fBcmsghdr.cmsg_type\fR is \fBSCM_UCRED\fR, not
226 \fBSO_RECVUCRED\fR
227 .RE
228
229 .sp
230 .LP
231 The IPv6 data formats use different values for enabling the option and for
232 passing the value back to the application. The IPv6 data formats are listed
233 below with the associated payload for each.
234 .sp
235 .ne 2
236 .na
237 \fB\fBIPPROTO_IPV6\fR\fR
238 .ad
239 .br
240 .na
241 \fB\fBIPV6_RECVPKTINFO\fR\fR
242 .ad
243 .sp .6
244 .RS 4n
245 \fBin_pktinfo\fR, \fBcmsg_type\fR \fBIPV6_PKTINFO\fR
246 .RE
247
248 .sp
249 .ne 2
250 .na
251 \fB\fBIPPROTO_IPV6\fR\fR
252 .ad
253 .br
254 .na
255 \fB\fBIPV6_RECVTCLASS\fR\fR
256 .ad
257 .sp .6
258 .RS 4n
259 \fBuint_t\fR, \fBcmsg_type\fR \fBIPV6_TCLASS\fR
260 .RE
261
262 .sp
263 .ne 2
264 .na
265 \fB\fBIPPROTO_IPV6\fR\fR
266 .ad
267 .br
268 .na
269 \fB\fBIPV6_RECVPATHMTU\fR\fR
270 .ad
271 .sp .6
272 .RS 4n
273 \fBip6_mtuinfo\fR, \fBcmsg_type\fR \fBIPV6_PATHMTU\fR
274 .RE
275
276 .sp
277 .ne 2
278 .na
279 \fB\fBIPPROTO_IPV6\fR\fR
280 .ad
281 .br
282 .na
283 \fB\fBIPV6_RECVHOPLIMIT\fR\fR
284 .ad
285 .sp .6
286 .RS 4n
287 \fBuint_t\fR, \fBcmsg_type\fR \fBIPV6_HOPLIMIT\fR
288 .RE
289
290 .sp
291 .ne 2
292 .na
293 \fB\fBIPPROTO_IPV6\fR\fR
294 .ad
295 .br
296 .na
297 \fB\fBIPV6_RECVHOPOPTS\fR\fR
298 .ad
299 .sp .6
300 .RS 4n
301 variable-length IPv6 options, \fBcmsg_type\fR \fBIPV6_HOPOPTS\fR
302 .RE
303
304 .sp
305 .ne 2
306 .na
307 \fB\fBIPPROTO_IPV6\fR\fR
308 .ad
309 .br
310 .na
311 \fB\fBIPV6_RECVDSTOPTS\fR\fR
312 .ad
313 .sp .6
314 .RS 4n
315 variable-length IPv6 options, \fBcmsg_type\fR \fBIPV6_DSTOPTS\fR
316 .RE
317
318 .sp
319 .ne 2
320 .na
321 \fB\fBIPPROTO_IPV6\fR\fR
322 .ad
323 .br
324 .na
325 \fB\fBIPV6_RECVRTHDR\fR\fR
326 .ad
327 .sp .6
328 .RS 4n
329 variable-length IPv6 options, \fBcmsg_type\fR \fBIPV6_RTHDR\fR
330 .RE
331
332 .sp
333 .ne 2
334 .na
335 \fB\fBIPPROTO_IPV6\fR\fR
336 .ad
337 .br
338 .na
339 \fB\fBIPV6_RECVRTHDRDSTOPTS\fR\fR
340 .ad
341 .sp .6
342 .RS 4n
343 variable-length IPv6 options, \fBcmsg_type\fR \fBIPV6_DSTOPTS\fR
344 .RE
345
346 .sp
347 .LP
348 The \fB<sys/socket.h>\fR header defines the following macros to gain access to
349 the data arrays in the ancillary data associated with a message header:
350 .sp
351 .ne 2
352 .na
353 \fB\fBCMSG_DATA(\fR\fIcmsg\fR)\fR
354 .ad
355 .sp .6
356 .RS 4n
357 If the argument is a pointer to a \fBcmsghdr\fR structure, this macro returns
358 an unsigned character pointer to the data array associated with the
359 \fBcmsghdr\fR structure.
360 .RE
361
362 .sp
363 .ne 2
414 .RE
415
416 .sp
417 .LP
418 The \fB<sys/socket.h>\fR header defines the \fBlinger\fR structure that
419 includes the following members:
420 .sp
421 .in +2
422 .nf
423 int l_onoff /* indicates whether linger option is enabled */
424 int l_linger /* linger time, in seconds */
425 .fi
426 .in -2
427
428 .sp
429 .LP
430 The \fB<sys/socket.h>\fR header defines the following macros:
431 .sp
432 .ne 2
433 .na
434 \fB\fBSOCK_DGRAM\fR\fR
435 .ad
436 .RS 18n
437 Datagram socket
438 .RE
439
440 .sp
441 .ne 2
442 .na
443 \fB\fBSOCK_STREAM\fR\fR
444 .ad
445 .RS 18n
446 Byte-stream socket
447 .RE
448
449 .sp
450 .ne 2
451 .na
452 \fB\fBSOCK_SEQPACKET\fR\fR
453 .ad
454 .RS 18n
455 Sequenced-packet socket
456 .RE
457
458 .sp
459 .LP
460 The \fB<sys/socket.h>\fR header defines the following macros for use as the
461 \fIlevel\fR argument of \fBsetsockopt()\fR and \fBgetsockopt()\fR.
462 .sp
463 .ne 2
464 .na
465 \fB\fBSOL_SOCKET\fR\fR
466 .ad
467 .RS 14n
468 Options to be accessed at the socket level, not the protocol level.
469 .RE
470
471 .sp
472 .ne 2
473 .na
474 \fB\fBSOL_ROUTE\fR\fR
475 .ad
476 .RS 14n
477 Options to be accessed at the routing socket level, not the protocol level.
478 .RE
479
480 .sp
481 .LP
482 The \fB<sys/socket.h>\fR header defines the following macros for use as the
483 \fIoption_name\fR argument of \fBgetsockopt()\fR or \fBsetsockopt()\fR calls:
484 .sp
485 .ne 2
486 .na
487 \fB\fBSO_DEBUG\fR\fR
488 .ad
489 .RS 17n
490 Debugging information is being recorded.
491 .RE
492
493 .sp
494 .ne 2
495 .na
496 \fB\fBSO_ACCEPTCONN\fR\fR
497 .ad
498 .RS 17n
499 Socket is accepting connections.
500 .RE
501
502 .sp
503 .ne 2
504 .na
505 \fB\fBSO_BROADCAST\fR\fR
506 .ad
507 .RS 17n
508 Transmission of broadcast messages is supported.
509 .RE
510
511 .sp
512 .ne 2
513 .na
514 \fB\fBSO_REUSEADDR\fR\fR
515 .ad
516 .RS 17n
517 Reuse of local addresses is supported.
518 .RE
519
520 .sp
521 .ne 2
522 .na
523 \fB\fBSO_KEEPALIVE\fR\fR
524 .ad
525 .RS 17n
526 Connections are kept alive with periodic messages.
527 .RE
528
529 .sp
530 .ne 2
531 .na
532 \fB\fBSO_LINGER\fR\fR
533 .ad
534 .RS 17n
535 Socket lingers on close.
536 .RE
537
538 .sp
539 .ne 2
540 .na
541 \fB\fBSO_OOBINLINE\fR\fR
542 .ad
543 .RS 17n
544 Out-of-band data is transmitted in line.
545 .RE
546
547 .sp
548 .ne 2
549 .na
550 \fB\fBSO_SNDBUF\fR\fR
551 .ad
552 .RS 17n
553 Send buffer size.
554 .RE
555
556 .sp
557 .ne 2
558 .na
559 \fB\fBSO_RCVBUF\fR\fR
560 .ad
561 .RS 17n
562 Receive buffer size.
563 .RE
564
565 .sp
566 .ne 2
567 .na
568 \fB\fBSO_ERROR\fR\fR
569 .ad
570 .RS 17n
571 Socket error status.
572 .RE
573
574 .sp
575 .ne 2
576 .na
577 \fB\fBSO_TYPE\fR\fR
578 .ad
579 .RS 17n
580 Socket type.
581 .RE
582
583 .sp
584 .ne 2
585 .na
586 \fB\fBSO_RECVUCRED\fR\fR
587 .ad
588 .RS 17n
589 Request the reception of user credential ancillary data. This is a
590 Sun-specific, Evolving interface. See \fBucred_get\fR(3C).
591 .RE
592
593 .sp
594 .ne 2
595 .na
596 \fB\fBSO_MAC_EXEMPT\fR\fR
597 .ad
598 .RS 17n
599 Mandatory Access Control (\fBMAC\fR) exemption for unlabeled peers. This option
600 is available only if the system is configured with Trusted Extensions.
601 .RE
602
603 .sp
604 .ne 2
605 .na
606 \fB\fBSO_ALLZONES\fR\fR
607 .ad
608 .RS 17n
609 Bypass zone boundaries (privileged).
610 .RE
611
612 .sp
613 .LP
614 The \fB<sys/socket.h>\fR header defines the following macros for use as the
615 valid values for the \fBmsg_flags\fR field in the \fBmsghdr\fR structure, or
616 the flags parameter in \fBrecvfrom()\fR, \fBrecvmsg()\fR, \fBsendto()\fR, or
617 \fBsendmsg()\fR calls:
618 .sp
619 .ne 2
620 .na
621 \fB\fBMSG_CTRUNC\fR\fR
622 .ad
623 .RS 15n
624 Control data truncated.
625 .RE
626
627 .sp
628 .ne 2
629 .na
630 \fB\fBMSG_EOR\fR\fR
631 .ad
632 .RS 15n
633 Terminates a record (if supported by the protocol).
634 .RE
635
636 .sp
637 .ne 2
638 .na
639 \fB\fBMSG_OOB\fR\fR
640 .ad
641 .RS 15n
642 Out-of-band data.
643 .RE
644
645 .sp
646 .ne 2
647 .na
648 \fB\fBMSG_PEEK\fR\fR
649 .ad
650 .RS 15n
651 Leave received data in queue.
652 .RE
653
654 .sp
655 .ne 2
656 .na
657 \fB\fBMSG_TRUNC\fR\fR
658 .ad
659 .RS 15n
660 Normal data truncated.
661 .RE
662
663 .sp
664 .ne 2
665 .na
666 \fB\fBMSG_WAITALL\fR\fR
667 .ad
668 .RS 15n
669 Wait for complete message.
670 .RE
671
672 .sp
673 .ne 2
674 .na
675 \fB\fBMSG_NOSIGNAL\fR\fR
676 .ad
677 .RS 15n
678 Do not generate \fBSIGPIPE\fR signal.
679 .RE
680
681 .sp
682 .LP
683 The \fB<sys/socket.h>\fR header defines the following macros:
684 .sp
685 .ne 2
686 .na
687 \fB\fBAF_UNIX\fR\fR
688 .ad
689 .RS 11n
690 UNIX domain sockets
691 .RE
692
693 .sp
694 .ne 2
695 .na
696 \fB\fBAF_INET\fR\fR
697 .ad
698 .RS 11n
699 Internet domain sockets
700 .RE
701
702 .sp
703 .LP
704 The \fB<sys/socket.h>\fR header defines the following macros:
705 .sp
706 .ne 2
707 .na
708 \fB\fBSHUT_RD\fR\fR
709 .ad
710 .RS 13n
711 Disables further receive operations.
712 .RE
713
714 .sp
715 .ne 2
716 .na
717 \fB\fBSHUT_WR\fR\fR
718 .ad
719 .RS 13n
720 Disables further send operations.
721 .RE
722
723 .sp
724 .ne 2
725 .na
726 \fB\fBSHUT_RDWR\fR\fR
727 .ad
728 .RS 13n
729 Disables further send and receive operations.
730 .RE
731
732 .SS "\fBlibsocket\fR Interfaces"
733 .LP
734 The \fB<sys/socket.h>\fR header defines the \fBmsghdr\fR structure for
735 \fBlibsocket\fR interfaces that includes the following members:
736 .sp
737 .in +2
738 .nf
739 void *msg_name /* optional address */
740 socklen_t msg_namelen /* size of address */
741 struct iovec *msg_iov /* scatter/gather array */
742 int msg_iovlen /* # elements in msg_iov */
743 caddr_t msg_accrights /* access rights sent/received */
744 .fi
745 .in -2
746
747 .sp
748 .LP
749 The \fImsg_name\fR and \fImsg_namelen\fR parameters specify the destination
750 address when the socket is unconnected The \fImsg_name\fR can be specified as a
751 \fINULL\fR pointer if no names are desired or required. The \fImsg_iov\fR and
752 \fImsg_iovlen\fR parameters describe the scatter-gather locations, as described
753 in \fBread\fR(2). The \fImsg_accrights\fR parameter specifies the buffer in
754 which access rights sent along with the message are received. The
755 \fImsg_accrightslen\fR specifies the length of the buffer.
756 .SH ATTRIBUTES
757 .LP
758 See \fBattributes\fR(5) for descriptions of the following attributes:
759 .sp
760
761 .sp
762 .TS
763 box;
764 c | c
765 l | l .
766 ATTRIBUTE TYPE ATTRIBUTE VALUE
767 _
768 Interface Stability Standard
769 .TE
770
771 .SH SEE ALSO
772 .LP
773 \fBaccept\fR(3SOCKET), \fBaccept\fR(3XNET), \fBbind\fR(3SOCKET),
774 \fBbind\fR(3XNET), \fBconnect\fR(3SOCKET), \fBconnect\fR(3XNET),
775 \fBgetpeername\fR(3SOCKET), \fBgetpeername\fR(3XNET), \fBgetpeerucred\fR(3C),
776 \fBgetsockname\fR(3SOCKET), \fBgetsockname\fR(3XNET),
777 \fBgetsockopt\fR(3SOCKET), \fBgetsockopt\fR(3XNET), \fBlibsocket\fR(3LIB),
778 \fBlisten\fR(3SOCKET), \fBlisten\fR(3XNET), \fBrecv\fR(3SOCKET),
779 \fBrecv\fR(3XNET), \fBrecvfrom\fR(3SOCKET), \fBrecvfrom\fR(3XNET),
780 \fBrecvmsg\fR(3SOCKET), \fBrecvmsg\fR(3XNET), \fBsend\fR(3SOCKET),
781 \fBsend\fR(3XNET), \fBsendmsg\fR(3SOCKET), \fBsendmsg\fR(3XNET),
782 \fBsendto\fR(3SOCKET), \fBsendto\fR(3XNET), \fBsetsockopt\fR(3SOCKET),
783 \fBsetsockopt\fR(3XNET), \fBshutdown\fR(3SOCKET), \fBshutdown\fR(3XNET),
784 \fBsockaddr\fR(3SOCKET),
785 \fBsocket\fR(3SOCKET), \fBsocket\fR(3XNET), \fBsocketpair\fR(3SOCKET),
786 \fBsocketpair\fR(3XNET), \fBucred_get\fR(3C), \fBattributes\fR(5),
787 \fBstandards\fR(5)
|
25 .\" This notice shall appear on any product containing this material.
26 .\"
27 .\" The contents of this file are subject to the terms of the
28 .\" Common Development and Distribution License (the "License").
29 .\" You may not use this file except in compliance with the License.
30 .\"
31 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
32 .\" or http://www.opensolaris.org/os/licensing.
33 .\" See the License for the specific language governing permissions
34 .\" and limitations under the License.
35 .\"
36 .\" When distributing Covered Code, include this CDDL HEADER in each
37 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
38 .\" If applicable, add the following below this CDDL HEADER, with the
39 .\" fields enclosed by brackets "[]" replaced with your own identifying
40 .\" information: Portions Copyright [yyyy] [name of copyright owner]
41 .\"
42 .\"
43 .\" Copyright (c) 1992, X/Open Company Limited All Rights Reserved.
44 .\" Portions Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved.
45 .\" Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
46 .\"
47 .TH SOCKET.H 3HEAD "Sep 18, 2020"
48 .SH NAME
49 socket.h, socket, CMSG_DATA, CMSG_FIRSTHDR, CMSG_LEN, CMSG_NXTHDR, CMSG_SPACE \- Internet Protocol family
50 .SH SYNOPSIS
51 .nf
52 \fB#include <sys/socket.h>\fR
53 .fi
54
55 .SH DESCRIPTION
56 The \fB<sys/socket.h>\fR header defines the unsigned integral type
57 \fBsa_family_t\fR through \fBtypedef\fR.
58 .sp
59 .LP
60 The \fB<sys/socket.h>\fR header defines the \fBsockaddr\fR structure that
61 includes the following members:
62 .sp
63 .in +2
64 .nf
65 sa_family_t sa_family /* address family */
66 char sa_data[] /* socket address (variable-length
67 data) */
68 .fi
69 .in -2
70
71 .SS "\fBlibxnet\fR Interfaces"
72 The \fB<sys/socket.h>\fR header defines the \fBmsghdr\fR structure for
73 \fBlibxnet\fR interfaces that includes the following members:
74 .sp
75 .in +2
76 .nf
77 void *msg_name /* optional address */
78 socklen_t msg_namelen /* size of address */
79 struct iovec *msg_iov /* scatter/gather array */
80 int msg_iovlen /* members in msg_iov */
81 void *msg_control /* ancillary data, see below */
82 socklen_t msg_controllen /* ancillary data buffer len */
83 int msg_flags /* flags on received message */
84 .fi
85 .in -2
86
87 .sp
88 .LP
89 The \fB<sys/socket.h>\fR header defines the \fBcmsghdr\fR structure for
90 \fBlibxnet\fR that includes the following members:
91 .sp
99
100 .sp
101 .LP
102 Ancillary data consists of a sequence of pairs, each consisting of a
103 \fBcmsghdr\fR structure followed by a data array. The data array contains the
104 ancillary data message, and the \fBcmsghdr\fR structure contains descriptive
105 information that allows an application to correctly parse the data.
106 .sp
107 .LP
108 The values for \fBcmsg_level\fR will be legal values for the level argument to
109 the \fBgetsockopt()\fR and \fBsetsockopt()\fR functions. The \fBSCM_RIGHTS\fR
110 type is supported for level \fBSOL_SOCKET\fR.
111 .sp
112 .LP
113 Ancillary data is also possible at the socket level. The \fB<sys/socket.h>\fR
114 header defines the following macros for use as the \fBcmsg_type\fR values when
115 \fBcmsg_level\fR is \fBSOL_SOCKET\fR.
116 .sp
117 .ne 2
118 .na
119 \fBSCM_RIGHTS\fR
120 .ad
121 .RS 14n
122 Indicates that the data array contains the access rights (set of open file
123 descriptors) to be sent or received.
124 .RE
125
126 .sp
127 .ne 2
128 .na
129 \fBSCM_UCRED\fR
130 .ad
131 .RS 14n
132 Indicates that the data array contains a \fBucred_t\fR to be received. The
133 \fBucred_t\fR is the credential of the sending process at the time the message
134 was sent. This is a Sun-specific, Evolving interface. See \fBucred_get\fR(3C).
135 .RE
136
137 .sp
138 .LP
139 The IPv4 ancillary data formats are listed below by \fBcmsg_level\fR and
140 \fBcmsg_type\fR, along with the associated payload for each.
141 .sp
142 .ne 2
143 .na
144 \fBIPPROTO_IP\fR, \fBIP_RECVDSTADDR\fR \(em \fBSOCK_DGRAM\fR only
145 .ad
146 .sp .6
147 .RS 4n
148 \fBipaddr_t\fR, IP address
149 .RE
150
151 .sp
152 .ne 2
153 .na
154 \fBIPPROTO_IP\fR, \fBIP_RECVIF\fR
155 .ad
156 .sp .6
157 .RS 4n
158 \fBuint_t\fR, \fBifIndex\fR number
159 .RE
160
161 .sp
162 .ne 2
163 .na
164 \fBIPPROTO_IP\fR, \fBIP_RECVOPTS\fR \(em \fBSOCK_DGRAM\fR only
165 .ad
166 .sp .6
167 .RS 4n
168 variable-length IP options, up to 40 bytes
169 .RE
170
171 .sp
172 .ne 2
173 .na
174 \fBIPPROTO_IP\fR, \fBIP_RECVPKTINFO\fR \(em \fBSOCK_DGRAM\fR only
175 .ad
176 .sp .6
177 .RS 4n
178 \fBin_pktinfo_t\fR
179 .RE
180
181 .sp
182 .ne 2
183 .na
184 \fBIPPROTO_IP\fR, \fBIP_RECVSLLA\fR \(em \fBSOCK_DGRAM\fR only
185 .ad
186 .sp .6
187 .RS 4n
188 \fBstruct sockaddr_dl\fR, link layer address
189 .RE
190
191 .sp
192 .ne 2
193 .na
194 \fBIPPROTO_IP\fR, \fBIP_RECVTTL\fR \(em \fBSOCK_DGRAM\fR only
195 .ad
196 .sp .6
197 .RS 4n
198 \fBuint8_t\fR, the IP TTL (time to live)
199 .RE
200
201 .sp
202 .ne 2
203 .na
204 \fBIPPROTO_IP\fR, \fBIP_RECVTOS\fR
205 .ad
206 .sp .6
207 .RS 4n
208 \fBuint8_t\fR, the IP TOS (type of service)
209 .RE
210
211 .sp
212 .ne 2
213 .na
214 \fBSOL_SOCKET\fR, \fBSO_UCRED\fR
215 .ad
216 .sp .6
217 .RS 4n
218 \fBucred_t\fR
219 .RE
220
221 .sp
222 .LP
223 The IPv6 ancillary data formats are listed below by \fBcmsg_level\fR and
224 \fBcmsg_type\fR, along with the associated payload for each.
225 .sp
226 .ne 2
227 .na
228 \fBIPPROTO_IPV6\fR, \fBIPV6_PKTINFO\fR
229 .ad
230 .sp .6
231 .RS 4n
232 \fBin_pktinfo_t\fR
233 .RE
234
235 .sp
236 .ne 2
237 .na
238 \fBIPPROTO_IPV6\fR, \fBIPV6_TCLASS\fR
239 .ad
240 .sp .6
241 .RS 4n
242 \fBuint_t\fR
243 .RE
244
245 .sp
246 .ne 2
247 .na
248 \fBIPPROTO_IPV6\fR, \fBIPV6_PATHMTU\fR
249 .ad
250 .sp .6
251 .RS 4n
252 \fBip6_mtuinfo\fR
253 .RE
254
255 .sp
256 .ne 2
257 .na
258 \fBIPPROTO_IPV6\fR, \fBIPV6_HOPLIMIT\fR
259 .ad
260 .sp .6
261 .RS 4n
262 \fBuint_t\fR
263 .RE
264
265 .sp
266 .ne 2
267 .na
268 \fBIPPROTO_IPV6\fR, \fBIPV6_HOPOPTS\fR
269 .ad
270 .sp .6
271 .RS 4n
272 variable-length IPv6 options
273 .RE
274
275 .sp
276 .ne 2
277 .na
278 \fBIPPROTO_IPV6\fR, \fBIPV6_DSTOPTS\fR
279 .ad
280 .sp .6
281 .RS 4n
282 variable-length IPv6 options
283 .RE
284
285 .sp
286 .ne 2
287 .na
288 \fBIPPROTO_IPV6\fR, \fBIPV6_RTHDR\fR
289 .ad
290 .sp .6
291 .RS 4n
292 variable-length IPv6 options
293 .RE
294
295 .sp
296 .ne 2
297 .na
298 \fBIPPROTO_IPV6\fR, \fBIPV6_DSTOPTS\fR
299 .ad
300 .sp .6
301 .RS 4n
302 variable-length IPv6 options
303 .RE
304
305 .sp
306 .LP
307 The \fB<sys/socket.h>\fR header defines the following macros to gain access to
308 the data arrays in the ancillary data associated with a message header:
309 .sp
310 .ne 2
311 .na
312 \fB\fBCMSG_DATA(\fR\fIcmsg\fR)\fR
313 .ad
314 .sp .6
315 .RS 4n
316 If the argument is a pointer to a \fBcmsghdr\fR structure, this macro returns
317 an unsigned character pointer to the data array associated with the
318 \fBcmsghdr\fR structure.
319 .RE
320
321 .sp
322 .ne 2
373 .RE
374
375 .sp
376 .LP
377 The \fB<sys/socket.h>\fR header defines the \fBlinger\fR structure that
378 includes the following members:
379 .sp
380 .in +2
381 .nf
382 int l_onoff /* indicates whether linger option is enabled */
383 int l_linger /* linger time, in seconds */
384 .fi
385 .in -2
386
387 .sp
388 .LP
389 The \fB<sys/socket.h>\fR header defines the following macros:
390 .sp
391 .ne 2
392 .na
393 \fBSOCK_DGRAM\fR
394 .ad
395 .RS 18n
396 Datagram socket
397 .RE
398
399 .sp
400 .ne 2
401 .na
402 \fBSOCK_STREAM\fR
403 .ad
404 .RS 18n
405 Byte-stream socket
406 .RE
407
408 .sp
409 .ne 2
410 .na
411 \fBSOCK_SEQPACKET\fR
412 .ad
413 .RS 18n
414 Sequenced-packet socket
415 .RE
416
417 .sp
418 .LP
419 The \fB<sys/socket.h>\fR header defines the following macros for use as the
420 \fIlevel\fR argument of \fBsetsockopt()\fR and \fBgetsockopt()\fR.
421 .sp
422 .ne 2
423 .na
424 \fBSOL_SOCKET\fR
425 .ad
426 .RS 14n
427 Options to be accessed at the socket level, not the protocol level.
428 .RE
429
430 .sp
431 .ne 2
432 .na
433 \fBSOL_ROUTE\fR
434 .ad
435 .RS 14n
436 Options to be accessed at the routing socket level, not the protocol level.
437 .RE
438
439 .sp
440 .LP
441 The \fB<sys/socket.h>\fR header defines the following macros for use as the
442 \fIoption_name\fR argument of \fBgetsockopt()\fR or \fBsetsockopt()\fR calls:
443 .sp
444 .ne 2
445 .na
446 \fBSO_DEBUG\fR
447 .ad
448 .RS 17n
449 Debugging information is being recorded.
450 .RE
451
452 .sp
453 .ne 2
454 .na
455 \fBSO_ACCEPTCONN\fR
456 .ad
457 .RS 17n
458 Socket is accepting connections.
459 .RE
460
461 .sp
462 .ne 2
463 .na
464 \fBSO_BROADCAST\fR
465 .ad
466 .RS 17n
467 Transmission of broadcast messages is supported.
468 .RE
469
470 .sp
471 .ne 2
472 .na
473 \fBSO_REUSEADDR\fR
474 .ad
475 .RS 17n
476 Reuse of local addresses is supported.
477 .RE
478
479 .sp
480 .ne 2
481 .na
482 \fBSO_KEEPALIVE\fR
483 .ad
484 .RS 17n
485 Connections are kept alive with periodic messages.
486 .RE
487
488 .sp
489 .ne 2
490 .na
491 \fBSO_LINGER\fR
492 .ad
493 .RS 17n
494 Socket lingers on close.
495 .RE
496
497 .sp
498 .ne 2
499 .na
500 \fBSO_OOBINLINE\fR
501 .ad
502 .RS 17n
503 Out-of-band data is transmitted in line.
504 .RE
505
506 .sp
507 .ne 2
508 .na
509 \fBSO_SNDBUF\fR
510 .ad
511 .RS 17n
512 Send buffer size.
513 .RE
514
515 .sp
516 .ne 2
517 .na
518 \fBSO_RCVBUF\fR
519 .ad
520 .RS 17n
521 Receive buffer size.
522 .RE
523
524 .sp
525 .ne 2
526 .na
527 \fBSO_ERROR\fR
528 .ad
529 .RS 17n
530 Socket error status.
531 .RE
532
533 .sp
534 .ne 2
535 .na
536 \fBSO_TYPE\fR
537 .ad
538 .RS 17n
539 Socket type.
540 .RE
541
542 .sp
543 .ne 2
544 .na
545 \fBSO_RECVUCRED\fR
546 .ad
547 .RS 17n
548 Request the reception of user credential ancillary data. This is a
549 Sun-specific, Evolving interface. See \fBucred_get\fR(3C).
550 .RE
551
552 .sp
553 .ne 2
554 .na
555 \fBSO_MAC_EXEMPT\fR
556 .ad
557 .RS 17n
558 Mandatory Access Control (\fBMAC\fR) exemption for unlabeled peers. This option
559 is available only if the system is configured with Trusted Extensions.
560 .RE
561
562 .sp
563 .ne 2
564 .na
565 \fBSO_ALLZONES\fR
566 .ad
567 .RS 17n
568 Bypass zone boundaries (privileged).
569 .RE
570
571 .sp
572 .LP
573 The \fB<sys/socket.h>\fR header defines the following macros for use as the
574 valid values for the \fBmsg_flags\fR field in the \fBmsghdr\fR structure, or
575 the flags parameter in \fBrecvfrom()\fR, \fBrecvmsg()\fR, \fBsendto()\fR, or
576 \fBsendmsg()\fR calls:
577 .sp
578 .ne 2
579 .na
580 \fBMSG_CTRUNC\fR
581 .ad
582 .RS 15n
583 Control data truncated.
584 .RE
585
586 .sp
587 .ne 2
588 .na
589 \fBMSG_EOR\fR
590 .ad
591 .RS 15n
592 Terminates a record (if supported by the protocol).
593 .RE
594
595 .sp
596 .ne 2
597 .na
598 \fBMSG_OOB\fR
599 .ad
600 .RS 15n
601 Out-of-band data.
602 .RE
603
604 .sp
605 .ne 2
606 .na
607 \fBMSG_PEEK\fR
608 .ad
609 .RS 15n
610 Leave received data in queue.
611 .RE
612
613 .sp
614 .ne 2
615 .na
616 \fBMSG_TRUNC\fR
617 .ad
618 .RS 15n
619 Normal data truncated.
620 .RE
621
622 .sp
623 .ne 2
624 .na
625 \fBMSG_WAITALL\fR
626 .ad
627 .RS 15n
628 Wait for complete message.
629 .RE
630
631 .sp
632 .ne 2
633 .na
634 \fBMSG_NOSIGNAL\fR
635 .ad
636 .RS 15n
637 Do not generate \fBSIGPIPE\fR signal.
638 .RE
639
640 .sp
641 .LP
642 The \fB<sys/socket.h>\fR header defines the following macros:
643 .sp
644 .ne 2
645 .na
646 \fBAF_UNIX\fR
647 .ad
648 .RS 11n
649 UNIX domain sockets
650 .RE
651
652 .sp
653 .ne 2
654 .na
655 \fBAF_INET\fR
656 .ad
657 .RS 11n
658 Internet domain sockets
659 .RE
660
661 .sp
662 .LP
663 The \fB<sys/socket.h>\fR header defines the following macros:
664 .sp
665 .ne 2
666 .na
667 \fBSHUT_RD\fR
668 .ad
669 .RS 13n
670 Disables further receive operations.
671 .RE
672
673 .sp
674 .ne 2
675 .na
676 \fBSHUT_WR\fR
677 .ad
678 .RS 13n
679 Disables further send operations.
680 .RE
681
682 .sp
683 .ne 2
684 .na
685 \fBSHUT_RDWR\fR
686 .ad
687 .RS 13n
688 Disables further send and receive operations.
689 .RE
690
691 .SS "\fBlibsocket\fR Interfaces"
692 The \fB<sys/socket.h>\fR header defines the \fBmsghdr\fR structure for
693 \fBlibsocket\fR interfaces that includes the following members:
694 .sp
695 .in +2
696 .nf
697 void *msg_name /* optional address */
698 socklen_t msg_namelen /* size of address */
699 struct iovec *msg_iov /* scatter/gather array */
700 int msg_iovlen /* # elements in msg_iov */
701 caddr_t msg_accrights /* access rights sent/received */
702 .fi
703 .in -2
704
705 .sp
706 .LP
707 The \fImsg_name\fR and \fImsg_namelen\fR parameters specify the destination
708 address when the socket is unconnected The \fImsg_name\fR can be specified as a
709 \fINULL\fR pointer if no names are desired or required. The \fImsg_iov\fR and
710 \fImsg_iovlen\fR parameters describe the scatter-gather locations, as described
711 in \fBread\fR(2). The \fImsg_accrights\fR parameter specifies the buffer in
712 which access rights sent along with the message are received. The
713 \fImsg_accrightslen\fR specifies the length of the buffer.
714 .SH ATTRIBUTES
715 See \fBattributes\fR(5) for descriptions of the following attributes:
716 .sp
717
718 .sp
719 .TS
720 box;
721 c | c
722 l | l .
723 ATTRIBUTE TYPE ATTRIBUTE VALUE
724 _
725 Interface Stability Standard
726 .TE
727
728 .SH SEE ALSO
729 \fBaccept\fR(3SOCKET), \fBaccept\fR(3XNET), \fBbind\fR(3SOCKET),
730 \fBbind\fR(3XNET), \fBconnect\fR(3SOCKET), \fBconnect\fR(3XNET),
731 \fBgetpeername\fR(3SOCKET), \fBgetpeername\fR(3XNET), \fBgetpeerucred\fR(3C),
732 \fBgetsockname\fR(3SOCKET), \fBgetsockname\fR(3XNET),
733 \fBgetsockopt\fR(3SOCKET), \fBgetsockopt\fR(3XNET), \fBlibsocket\fR(3LIB),
734 \fBlisten\fR(3SOCKET), \fBlisten\fR(3XNET), \fBrecv\fR(3SOCKET),
735 \fBrecv\fR(3XNET), \fBrecvfrom\fR(3SOCKET), \fBrecvfrom\fR(3XNET),
736 \fBrecvmsg\fR(3SOCKET), \fBrecvmsg\fR(3XNET), \fBsend\fR(3SOCKET),
737 \fBsend\fR(3XNET), \fBsendmsg\fR(3SOCKET), \fBsendmsg\fR(3XNET),
738 \fBsendto\fR(3SOCKET), \fBsendto\fR(3XNET), \fBsetsockopt\fR(3SOCKET),
739 \fBsetsockopt\fR(3XNET), \fBshutdown\fR(3SOCKET), \fBshutdown\fR(3XNET),
740 \fBsockaddr\fR(3SOCKET),
741 \fBsocket\fR(3SOCKET), \fBsocket\fR(3XNET), \fBsocketpair\fR(3SOCKET),
742 \fBsocketpair\fR(3XNET), \fBucred_get\fR(3C), \fBattributes\fR(5),
743 \fBstandards\fR(5)
|