summaryrefslogtreecommitdiffstats
path: root/man3/cmsg.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/cmsg.3')
-rw-r--r--man3/cmsg.363
1 files changed, 32 insertions, 31 deletions
diff --git a/man3/cmsg.3 b/man3/cmsg.3
index b218baf2b..3ca7d1d44 100644
--- a/man3/cmsg.3
+++ b/man3/cmsg.3
@@ -1,14 +1,9 @@
-.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
+.\" SPDX-License-Identifier: Linux-man-pages-1-para
.\"
-.\" %%%LICENSE_START(VERBATIM_ONE_PARA)
-.\" Permission is granted to distribute possibly modified copies
-.\" of this page provided the header is included verbatim,
-.\" and in case of nontrivial modification author and date
-.\" of the modification is added to the header.
-.\" %%%LICENSE_END
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
.\"
.\" $Id: cmsg.3,v 1.8 2000/12/20 18:10:31 ak Exp $
-.TH CMSG 3 2022-10-29 "Linux man-pages 6.03"
+.TH CMSG 3 2023-07-15 "Linux man-pages 6.05.01"
.SH NAME
CMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR \- access ancillary data
.SH LIBRARY
@@ -160,27 +155,9 @@ For more information on the
.IR msghdr ,
see
.BR recvmsg (2).
-.SH STANDARDS
-This ancillary data model conforms to the POSIX.1g draft, 4.4BSD-Lite,
-the IPv6 advanced API described in RFC\ 2292 and SUSv2.
-.BR CMSG_FIRSTHDR (),
-.BR CMSG_NXTHDR (),
-and
-.BR CMSG_DATA ()
-are specified in POSIX.1-2008.
-.BR CMSG_SPACE ()
-and
-.BR CMSG_LEN ()
-.\" https://www.austingroupbugs.net/view.php?id=978#c3242
-will be included in the next POSIX release (Issue 8).
-.PP
-.BR CMSG_ALIGN ()
-is a Linux extension.
-.SH NOTES
+.SH VERSIONS
For portability, ancillary data should be accessed using only the macros
described here.
-.BR CMSG_ALIGN ()
-is a Linux extension and should not be used in portable programs.
.PP
In Linux,
.BR CMSG_LEN (),
@@ -190,6 +167,30 @@ and
are constant expressions (assuming their argument is constant),
meaning that these values can be used to declare the size of global variables.
This may not be portable, however.
+.SH STANDARDS
+.TP
+.BR CMSG_FIRSTHDR ()
+.TQ
+.BR CMSG_NXTHDR ()
+.TQ
+.BR CMSG_DATA ()
+POSIX.1-2008.
+.TP
+.BR CMSG_SPACE ()
+.TQ
+.BR CMSG_LEN ()
+.TQ
+.BR CMSG_ALIGN ()
+Linux.
+.SH HISTORY
+This ancillary data model conforms to the POSIX.1g draft, 4.4BSD-Lite,
+the IPv6 advanced API described in RFC\ 2292 and SUSv2.
+.PP
+.BR CMSG_SPACE ()
+and
+.BR CMSG_LEN ()
+.\" https://www.austingroupbugs.net/view.php?id=978#c3242
+will be included in the next POSIX release (Issue 8).
.SH EXAMPLES
This code looks for the
.B IP_TTL
@@ -200,9 +201,9 @@ option in a received ancillary buffer:
struct msghdr msgh;
struct cmsghdr *cmsg;
int received_ttl;
-
+\&
/* Receive auxiliary data in msgh */
-
+\&
for (cmsg = CMSG_FIRSTHDR(&msgh); cmsg != NULL;
cmsg = CMSG_NXTHDR(&msgh, cmsg)) {
if (cmsg\->cmsg_level == IPPROTO_IP
@@ -211,7 +212,7 @@ for (cmsg = CMSG_FIRSTHDR(&msgh); cmsg != NULL;
break;
}
}
-
+\&
if (cmsg == NULL) {
/* Error: IP_TTL not enabled or small buffer or I/O error */
}
@@ -237,7 +238,7 @@ union { /* Ancillary data buffer, wrapped in a union
char buf[CMSG_SPACE(sizeof(myfds))];
struct cmsghdr align;
} u;
-
+\&
msg.msg_iov = &io;
msg.msg_iovlen = 1;
msg.msg_control = u.buf;