summaryrefslogtreecommitdiffstats
path: root/templates/man2/ioctl_ns.2.pot
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /templates/man2/ioctl_ns.2.pot
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'templates/man2/ioctl_ns.2.pot')
-rw-r--r--templates/man2/ioctl_ns.2.pot790
1 files changed, 790 insertions, 0 deletions
diff --git a/templates/man2/ioctl_ns.2.pot b/templates/man2/ioctl_ns.2.pot
new file mode 100644
index 00000000..e6ab1601
--- /dev/null
+++ b/templates/man2/ioctl_ns.2.pot
@@ -0,0 +1,790 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-03-01 16:59+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\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 "ioctl_ns"
+msgstr ""
+
+#. type: TH
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "2023-10-31"
+msgstr ""
+
+#. type: TH
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "Linux man-pages 6.06"
+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 "ioctl_ns - ioctl() operations for Linux namespaces"
+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: SS
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Discovering namespace relationships"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The following B<ioctl>(2) operations are provided to allow discovery of "
+"namespace relationships (see B<user_namespaces>(7) and "
+"B<pid_namespaces>(7)). The form of the calls is:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "new_fd = ioctl(fd, request);\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"In each case, I<fd> refers to a I</proc/>pidI</ns/*> file. Both operations "
+"return a new file descriptor on success."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<NS_GET_USERNS> (since Linux 4.9)"
+msgstr ""
+
+#. commit bcac25a58bfc6bd79191ac5d7afb49bea96da8c9
+#. commit 6786741dbf99e44fb0c0ed85a37582b8a26f1c3b
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Returns a file descriptor that refers to the owning user namespace for the "
+"namespace referred to by I<fd>."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<NS_GET_PARENT> (since Linux 4.9)"
+msgstr ""
+
+#. commit a7306ed8d94af729ecef8b6e37506a1c6fc14788
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Returns a file descriptor that refers to the parent namespace of the "
+"namespace referred to by I<fd>. This operation is valid only for "
+"hierarchical namespaces (i.e., PID and user namespaces). For user "
+"namespaces, B<NS_GET_PARENT> is synonymous with B<NS_GET_USERNS>."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The new file descriptor returned by these operations is opened with the "
+"B<O_RDONLY> and B<O_CLOEXEC> (close-on-exec; see B<fcntl>(2)) flags."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"By applying B<fstat>(2) to the returned file descriptor, one obtains a "
+"I<stat> structure whose I<st_dev> (resident device) and I<st_ino> (inode "
+"number) fields together identify the owning/parent namespace. This inode "
+"number can be matched with the inode number of another I</proc/>pidI</ns/"
+">{I<pid>,I<user>} file to determine whether that is the owning/parent "
+"namespace."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Either of these B<ioctl>(2) operations can fail with the following errors:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<EPERM>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The requested namespace is outside of the caller's namespace scope. This "
+"error can occur if, for example, the owning user namespace is an ancestor of "
+"the caller's current user namespace. It can also occur on attempts to "
+"obtain the parent of the initial user or PID namespace."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<ENOTTY>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "The operation is not supported by this kernel version."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Additionally, the B<NS_GET_PARENT> operation can fail with the following "
+"error:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<EINVAL>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "I<fd> refers to a nonhierarchical namespace."
+msgstr ""
+
+#. ============================================================
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "See the EXAMPLES section for an example of the use of these operations."
+msgstr ""
+
+#. type: SS
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Discovering the namespace type"
+msgstr ""
+
+#. commit e5ff5ce6e20ee22511398bb31fb912466cf82a36
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The B<NS_GET_NSTYPE> operation (available since Linux 4.11) can be used to "
+"discover the type of namespace referred to by the file descriptor I<fd>:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "nstype = ioctl(fd, NS_GET_NSTYPE);\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "I<fd> refers to a I</proc/>pidI</ns/*> file."
+msgstr ""
+
+#. ============================================================
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The return value is one of the B<CLONE_NEW*> values that can be specified to "
+"B<clone>(2) or B<unshare>(2) in order to create a namespace."
+msgstr ""
+
+#. type: SS
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Discovering the owner of a user namespace"
+msgstr ""
+
+#. commit 015bb305b8ebe8d601a238ab70ebdc394c7a19ba
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The B<NS_GET_OWNER_UID> operation (available since Linux 4.11) can be used "
+"to discover the owner user ID of a user namespace (i.e., the effective user "
+"ID of the process that created the user namespace). The form of the call is:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"uid_t uid;\n"
+"ioctl(fd, NS_GET_OWNER_UID, &uid);\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "I<fd> refers to a I</proc/>pidI</ns/user> file."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The owner user ID is returned in the I<uid_t> pointed to by the third "
+"argument."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "This operation can fail with the following error:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "I<fd> does not refer to a user namespace."
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "ERRORS"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Any of the above B<ioctl>() operations can return the following errors:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-leap-15-6 opensuse-tumbleweed
+msgid "I<fd> does not refer to a I</proc/>pidI</ns/>* file."
+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 "Linux."
+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 ""
+"The example shown below uses the B<ioctl>(2) operations described above to "
+"perform simple discovery of namespace relationships. The following shell "
+"sessions show various examples of the use of this program."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Trying to get the parent of the initial user namespace fails, since it has "
+"no parent:"
+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<./ns_show /proc/self/ns/user p>\n"
+"The parent namespace is outside your namespace scope\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Create a process running B<sleep>(1) that resides in new user and UTS "
+"namespaces, and show that the new UTS namespace is associated with the new "
+"user namespace:"
+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<unshare -Uu sleep 1000 &>\n"
+"[1] 23235\n"
+"$ B<./ns_show /proc/23235/ns/uts u>\n"
+"Device/Inode of owning user namespace is: [0,3] / 4026532448\n"
+"$ B<readlink /proc/23235/ns/user>\n"
+"user:[4026532448]\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Then show that the parent of the new user namespace in the preceding example "
+"is the initial user namespace:"
+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<readlink /proc/self/ns/user>\n"
+"user:[4026531837]\n"
+"$ B<./ns_show /proc/23235/ns/user p>\n"
+"Device/Inode of parent namespace is: [0,3] / 4026531837\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Start a shell in a new user namespace, and show that from within this shell, "
+"the parent user namespace can't be discovered. Similarly, the UTS namespace "
+"(which is associated with the initial user namespace) can't be discovered."
+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<PS1=\"sh2$ \" unshare -U bash>\n"
+"sh2$ B<./ns_show /proc/self/ns/user p>\n"
+"The parent namespace is outside your namespace scope\n"
+"sh2$ B<./ns_show /proc/self/ns/uts u>\n"
+"The owning user namespace is outside your namespace scope\n"
+msgstr ""
+
+#. type: SS
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "Program source"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"/* ns_show.c\n"
+"\\&\n"
+" Licensed under the GNU General Public License v2 or later.\n"
+"*/\n"
+"#include E<lt>errno.hE<gt>\n"
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>linux/nsfs.hE<gt>\n"
+"#include E<lt>stdint.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>sys/ioctl.hE<gt>\n"
+"#include E<lt>sys/stat.hE<gt>\n"
+"#include E<lt>sys/sysmacros.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"\\&\n"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int fd, userns_fd, parent_fd;\n"
+" struct stat sb;\n"
+"\\&\n"
+" if (argc E<lt> 2) {\n"
+" fprintf(stderr, \"Usage: %s /proc/[pid]/ns/[file] [p|u]\\en\",\n"
+" argv[0]);\n"
+" fprintf(stderr, \"\\enDisplay the result of one or both \"\n"
+" \"of NS_GET_USERNS (u) or NS_GET_PARENT (p)\\en\"\n"
+" \"for the specified /proc/[pid]/ns/[file]. If neither \"\n"
+" \"\\[aq]p\\[aq] nor \\[aq]u\\[aq] is specified,\\en\"\n"
+" \"NS_GET_USERNS is the default.\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" /* Obtain a file descriptor for the \\[aq]ns\\[aq] file specified\n"
+" in argv[1]. */\n"
+"\\&\n"
+" fd = open(argv[1], O_RDONLY);\n"
+" if (fd == -1) {\n"
+" perror(\"open\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" /* Obtain a file descriptor for the owning user namespace and\n"
+" then obtain and display the inode number of that namespace. */\n"
+"\\&\n"
+" if (argc E<lt> 3 || strchr(argv[2], \\[aq]u\\[aq])) {\n"
+" userns_fd = ioctl(fd, NS_GET_USERNS);\n"
+"\\&\n"
+" if (userns_fd == -1) {\n"
+" if (errno == EPERM)\n"
+" printf(\"The owning user namespace is outside \"\n"
+" \"your namespace scope\\en\");\n"
+" else\n"
+" perror(\"ioctl-NS_GET_USERNS\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" if (fstat(userns_fd, &sb) == -1) {\n"
+" perror(\"fstat-userns\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" printf(\"Device/Inode of owning user namespace is: \"\n"
+" \"[%x,%x] / %ju\\en\",\n"
+" major(sb.st_dev),\n"
+" minor(sb.st_dev),\n"
+" (uintmax_t) sb.st_ino);\n"
+"\\&\n"
+" close(userns_fd);\n"
+" }\n"
+"\\&\n"
+" /* Obtain a file descriptor for the parent namespace and\n"
+" then obtain and display the inode number of that namespace. */\n"
+"\\&\n"
+" if (argc E<gt> 2 && strchr(argv[2], \\[aq]p\\[aq])) {\n"
+" parent_fd = ioctl(fd, NS_GET_PARENT);\n"
+"\\&\n"
+" if (parent_fd == -1) {\n"
+" if (errno == EINVAL)\n"
+" printf(\"Can\\[aq] get parent namespace of a \"\n"
+" \"nonhierarchical namespace\\en\");\n"
+" else if (errno == EPERM)\n"
+" printf(\"The parent namespace is outside \"\n"
+" \"your namespace scope\\en\");\n"
+" else\n"
+" perror(\"ioctl-NS_GET_PARENT\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" if (fstat(parent_fd, &sb) == -1) {\n"
+" perror(\"fstat-parentns\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" printf(\"Device/Inode of parent namespace is: [%x,%x] / %ju\\en\",\n"
+" major(sb.st_dev),\n"
+" minor(sb.st_dev),\n"
+" (uintmax_t) sb.st_ino);\n"
+"\\&\n"
+" close(parent_fd);\n"
+" }\n"
+"\\&\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+
+#. SRC END
+#. 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<fstat>(2), B<ioctl>(2), B<proc>(5), B<namespaces>(7)"
+msgstr ""
+
+#. type: TH
+#: debian-bookworm
+#, no-wrap
+msgid "2023-02-05"
+msgstr ""
+
+#. type: TH
+#: debian-bookworm
+#, no-wrap
+msgid "Linux man-pages 6.03"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "I<fd> does not refer to a I</proc/[pid]/ns/*> file."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Namespaces and the operations described on this page are a Linux-specific."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid "/* ns_show.c\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" Licensed under the GNU General Public License v2 or later.\n"
+"*/\n"
+"#include E<lt>errno.hE<gt>\n"
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>linux/nsfs.hE<gt>\n"
+"#include E<lt>stdint.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>sys/ioctl.hE<gt>\n"
+"#include E<lt>sys/stat.hE<gt>\n"
+"#include E<lt>sys/sysmacros.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int fd, userns_fd, parent_fd;\n"
+" struct stat sb;\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (argc E<lt> 2) {\n"
+" fprintf(stderr, \"Usage: %s /proc/[pid]/ns/[file] [p|u]\\en\",\n"
+" argv[0]);\n"
+" fprintf(stderr, \"\\enDisplay the result of one or both \"\n"
+" \"of NS_GET_USERNS (u) or NS_GET_PARENT (p)\\en\"\n"
+" \"for the specified /proc/[pid]/ns/[file]. If neither \"\n"
+" \"\\[aq]p\\[aq] nor \\[aq]u\\[aq] is specified,\\en\"\n"
+" \"NS_GET_USERNS is the default.\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" /* Obtain a file descriptor for the \\[aq]ns\\[aq] file specified\n"
+" in argv[1]. */\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" fd = open(argv[1], O_RDONLY);\n"
+" if (fd == -1) {\n"
+" perror(\"open\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" /* Obtain a file descriptor for the owning user namespace and\n"
+" then obtain and display the inode number of that namespace. */\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (argc E<lt> 3 || strchr(argv[2], \\[aq]u\\[aq])) {\n"
+" userns_fd = ioctl(fd, NS_GET_USERNS);\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (userns_fd == -1) {\n"
+" if (errno == EPERM)\n"
+" printf(\"The owning user namespace is outside \"\n"
+" \"your namespace scope\\en\");\n"
+" else\n"
+" perror(\"ioctl-NS_GET_USERNS\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (fstat(userns_fd, &sb) == -1) {\n"
+" perror(\"fstat-userns\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" printf(\"Device/Inode of owning user namespace is: \"\n"
+" \"[%x,%x] / %ju\\en\",\n"
+" major(sb.st_dev),\n"
+" minor(sb.st_dev),\n"
+" (uintmax_t) sb.st_ino);\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" close(userns_fd);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" /* Obtain a file descriptor for the parent namespace and\n"
+" then obtain and display the inode number of that namespace. */\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (argc E<gt> 2 && strchr(argv[2], \\[aq]p\\[aq])) {\n"
+" parent_fd = ioctl(fd, NS_GET_PARENT);\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (parent_fd == -1) {\n"
+" if (errno == EINVAL)\n"
+" printf(\"Can\\[aq] get parent namespace of a \"\n"
+" \"nonhierarchical namespace\\en\");\n"
+" else if (errno == EPERM)\n"
+" printf(\"The parent namespace is outside \"\n"
+" \"your namespace scope\\en\");\n"
+" else\n"
+" perror(\"ioctl-NS_GET_PARENT\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (fstat(parent_fd, &sb) == -1) {\n"
+" perror(\"fstat-parentns\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+" printf(\"Device/Inode of parent namespace is: [%x,%x] / %ju\\en\",\n"
+" major(sb.st_dev),\n"
+" minor(sb.st_dev),\n"
+" (uintmax_t) sb.st_ino);\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" close(parent_fd);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+
+#. type: TH
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "2023-05-03"
+msgstr ""
+
+#. type: TH
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "Linux man-pages 6.05.01"
+msgstr ""
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "2023-04-03"
+msgstr ""
+
+#. type: TH
+#: opensuse-leap-15-6
+#, no-wrap
+msgid "Linux man-pages 6.04"
+msgstr ""