# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-06-01 05:45+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "CMSG" msgstr "" #. type: TH #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "" #. type: TH #: archlinux debian-unstable #, no-wrap msgid "Linux man-pages 6.8" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "CMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR - access ancillary data" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIBRARY" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Standard C library (I, I<-lc>)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B<#include Esys/socket.hE>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "BIB<);>\n" "BIB<,>\n" "B< struct cmsghdr *>cmsgB<);>\n" "BIB<);>\n" "BIB<);>\n" "BIB<);>\n" "BIB<);>\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "These macros are used to create and access control messages (also called " "ancillary data) that are not a part of the socket payload. This control " "information may include the interface the packet was received on, various " "rarely used header fields, an extended error description, a set of file " "descriptors, or UNIX credentials. For instance, control messages can be " "used to send additional header fields such as IP options. Ancillary data is " "sent by calling B(2) and received by calling B(2). See " "their manual pages for more information." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Ancillary data is a sequence of I structures with appended data. " "See the specific protocol man pages for the available control message " "types. The maximum ancillary buffer size allowed per socket can be set " "using I; see B(7)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The I structure is defined as follows:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "struct cmsghdr {\n" " size_t cmsg_len; /* Data byte count, including header\n" " (type is socklen_t in POSIX) */\n" " int cmsg_level; /* Originating protocol */\n" " int cmsg_type; /* Protocol-specific type */\n" "/* followed by\n" " unsigned char cmsg_data[]; */\n" "};\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The sequence of I structures should never be accessed directly. " "Instead, use only the following macros:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "returns a pointer to the first I in the ancillary data buffer " "associated with the passed I. It returns NULL if there isn't enough " "space for a I in the buffer." msgstr "" #. #-#-#-#-# archlinux: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# debian-bookworm: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TP #. #-#-#-#-# debian-unstable: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# fedora-40: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# fedora-rawhide: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# mageia-cauldron: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# opensuse-leap-15-6: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# opensuse-tumbleweed: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "returns the next valid I after the passed I. It returns " "NULL when there isn't enough space left in the buffer." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "When initializing a buffer that will contain a series of I " "structures (e.g., to be sent with B(2)), that buffer should first " "be zero-initialized to ensure the correct operation of B()." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()," msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "given a length, returns it including the required alignment. This is a " "constant expression." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "returns the number of bytes an ancillary element with payload of the passed " "data length occupies. This is a constant expression." msgstr "" #. #-#-#-#-# archlinux: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# debian-bookworm: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TP #. #-#-#-#-# debian-unstable: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# fedora-40: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# fedora-rawhide: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# mageia-cauldron: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# opensuse-leap-15-6: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# opensuse-tumbleweed: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "returns a pointer to the data portion of a I. The pointer returned " "cannot be assumed to be suitably aligned for accessing arbitrary payload " "data types. Applications should not cast it to a pointer type matching the " "payload, but should instead use B(3) to copy data to or from a " "suitably declared object." msgstr "" #. #-#-#-#-# archlinux: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# debian-bookworm: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TP #. #-#-#-#-# debian-unstable: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# fedora-40: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# fedora-rawhide: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# mageia-cauldron: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# opensuse-leap-15-6: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #. #-#-#-#-# opensuse-tumbleweed: cmsg.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: TQ #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "returns the value to store in the I member of the I " "structure, taking into account any necessary alignment. It takes the data " "length as an argument. This is a constant expression." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "To create ancillary data, first initialize the I member of " "the I with the length of the control message buffer. Use " "B() on the I to get the first control message and " "B() to get all subsequent ones. In each control message, " "initialize I (with B()), the other I header " "fields, and the data portion using B(). Finally, the " "I field of the I should be set to the sum of the " "B() of the length of all control messages in the buffer. For " "more information on the I, see B(2)." msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "VERSIONS" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For portability, ancillary data should be accessed using only the macros " "described here." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In Linux, B(), B(), and B() 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." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "STANDARDS" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "POSIX.1-2008." msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "Linux." msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This ancillary data model conforms to the POSIX.1g draft, 4.4BSD-Lite, the " "IPv6 advanced API described in RFC\\ 2292 and SUSv2." msgstr "" #. https://www.austingroupbugs.net/view.php?id=978#c3242 #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() and B() will be included in the next POSIX " "release (Issue 8)." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This code looks for the B option in a received ancillary buffer:" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "struct msghdr msgh;\n" "struct cmsghdr *cmsg;\n" "int received_ttl;\n" "\\&\n" "/* Receive auxiliary data in msgh */\n" "\\&\n" "for (cmsg = CMSG_FIRSTHDR(&msgh); cmsg != NULL;\n" " cmsg = CMSG_NXTHDR(&msgh, cmsg)) {\n" " if (cmsg-Ecmsg_level == IPPROTO_IP\n" " && cmsg-Ecmsg_type == IP_TTL) {\n" " memcpy(&receive_ttl, CMSG_DATA(cmsg), sizeof(received_ttl));\n" " break;\n" " }\n" "}\n" "\\&\n" "if (cmsg == NULL) {\n" " /* Error: IP_TTL not enabled or small buffer or I/O error */\n" "}\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The code below passes an array of file descriptors over a UNIX domain socket " "using B:" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "struct msghdr msg = { 0 };\n" "struct cmsghdr *cmsg;\n" "int myfds[NUM_FD]; /* Contains the file descriptors to pass */\n" "char iobuf[1];\n" "struct iovec io = {\n" " .iov_base = iobuf,\n" " .iov_len = sizeof(iobuf)\n" "};\n" "union { /* Ancillary data buffer, wrapped in a union\n" " in order to ensure it is suitably aligned */\n" " char buf[CMSG_SPACE(sizeof(myfds))];\n" " struct cmsghdr align;\n" "} u;\n" "\\&\n" "msg.msg_iov = &io;\n" "msg.msg_iovlen = 1;\n" "msg.msg_control = u.buf;\n" "msg.msg_controllen = sizeof(u.buf);\n" "cmsg = CMSG_FIRSTHDR(&msg);\n" "cmsg-Ecmsg_level = SOL_SOCKET;\n" "cmsg-Ecmsg_type = SCM_RIGHTS;\n" "cmsg-Ecmsg_len = CMSG_LEN(sizeof(myfds));\n" "memcpy(CMSG_DATA(cmsg), myfds, sizeof(myfds));\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For a complete code example that shows passing of file descriptors over a " "UNIX domain socket, see B(2)." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B(2), B(2)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "RFC\\ 2292" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "2022-10-29" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "" #. https://www.austingroupbugs.net/view.php?id=978#c3242 #. type: Plain text #: debian-bookworm msgid "" "This ancillary data model conforms to the POSIX.1g draft, 4.4BSD-Lite, the " "IPv6 advanced API described in RFC\\ 2292 and SUSv2. B(), " "B(), and B() are specified in POSIX.1-2008. " "B() and B() will be included in the next POSIX " "release (Issue 8)." msgstr "" #. type: Plain text #: debian-bookworm msgid "B() is a Linux extension." msgstr "" #. type: SH #: debian-bookworm #, no-wrap msgid "NOTES" msgstr "" #. type: Plain text #: debian-bookworm msgid "" "For portability, ancillary data should be accessed using only the macros " "described here. B() is a Linux extension and should not be " "used in portable programs." msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "struct msghdr msgh;\n" "struct cmsghdr *cmsg;\n" "int received_ttl;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "/* Receive auxiliary data in msgh */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "for (cmsg = CMSG_FIRSTHDR(&msgh); cmsg != NULL;\n" " cmsg = CMSG_NXTHDR(&msgh, cmsg)) {\n" " if (cmsg-Ecmsg_level == IPPROTO_IP\n" " && cmsg-Ecmsg_type == IP_TTL) {\n" " memcpy(&receive_ttl, CMSG_DATA(cmsg), sizeof(received_ttl));\n" " break;\n" " }\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "if (cmsg == NULL) {\n" " /* Error: IP_TTL not enabled or small buffer or I/O error */\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "struct msghdr msg = { 0 };\n" "struct cmsghdr *cmsg;\n" "int myfds[NUM_FD]; /* Contains the file descriptors to pass */\n" "char iobuf[1];\n" "struct iovec io = {\n" " .iov_base = iobuf,\n" " .iov_len = sizeof(iobuf)\n" "};\n" "union { /* Ancillary data buffer, wrapped in a union\n" " in order to ensure it is suitably aligned */\n" " char buf[CMSG_SPACE(sizeof(myfds))];\n" " struct cmsghdr align;\n" "} u;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "msg.msg_iov = &io;\n" "msg.msg_iovlen = 1;\n" "msg.msg_control = u.buf;\n" "msg.msg_controllen = sizeof(u.buf);\n" "cmsg = CMSG_FIRSTHDR(&msg);\n" "cmsg-Ecmsg_level = SOL_SOCKET;\n" "cmsg-Ecmsg_type = SCM_RIGHTS;\n" "cmsg-Ecmsg_len = CMSG_LEN(sizeof(myfds));\n" "memcpy(CMSG_DATA(cmsg), myfds, sizeof(myfds));\n" msgstr "" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "" #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-03-30" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr "" #. type: TH #: opensuse-tumbleweed #, no-wrap msgid "Linux man-pages (unreleased)" msgstr ""