have adverse impact. It is incompatible with EDNS0 usage and DNSSEC
validation by applications.
-* On Linux, the fsopen, fsmount, move_mount, fsconfig, and fspick functions
- have been added. They are part of the new Linux kernel mount APIs that
- allow applications to more flexibly configure and operate on filesystem
- mounts. The new mount APIs are specifically designed to work with
- namespaces.
+* On Linux, the fsopen, fsmount, move_mount, fsconfig, fspick, and open_tree
+ functions have been added. They are part of the new Linux kernel mount
+ APIs that allow applications to more flexibly configure and operate on
+ filesystem mounts. The new mount APIs are specifically designed to work
+ with namespaces.
* localedef now accepts locale definition files encoded in UTF-8.
Previously, input bytes not within the ASCII range resulted in
fsopen;
fspick;
move_mount;
+ open_tree;
pidfd_open;
pidfd_getfd;
pidfd_send_signal;
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
#ifndef _SYS_MOUNT_H
#define _SYS_MOUNT_H 1
+#include <fcntl.h>
#include <features.h>
#include <sys/ioctl.h>
#define FSCONFIG_CMD_RECONFIGURE FSCONFIG_CMD_RECONFIGURE
};
+/* open_tree flags. */
+#define OPEN_TREE_CLONE 1 /* Clone the target tree and attach the clone */
+#define OPEN_TREE_CLOEXEC O_CLOEXEC /* Close the file on execve() */
+
__BEGIN_DECLS
extern int fspick (int __dfd, const char *__path, unsigned int __flags)
__THROW;
+/* Open the mount point FILENAME in directory DFD using FLAGS. */
+extern int open_tree (int __dfd, const char *__filename, unsigned int __flags)
+ __THROW;
+
__END_DECLS
#endif /* _SYS_MOUNT_H */
munlock - munlock i:aU munlock
munlockall - munlockall i: munlockall
nfsservctl EXTRA nfsservctl i:ipp __compat_nfsservctl nfsservctl@GLIBC_2.0:GLIBC_2.28
+open_tree EXTRA open_tree i:isU open_tree
pipe2 - pipe2 i:fi __pipe2 pipe2
pidfd_open EXTRA pidfd_open i:iU pidfd_open
pidfd_getfd EXTRA pidfd_getfd i:iiU pidfd_getfd
check('FSOPEN_.*'),
check('FSMOUNT_.*'),
# MOVE_MOUNT__MASK may vary depending of the kernel version.
- check('MOVE_MOUNT_.*', 'MOVE_MOUNT__MASK'))
+ check('MOVE_MOUNT_.*', 'MOVE_MOUNT__MASK'),
+ check('OPEN_TREE_*'))
sys.exit(status)
if __name__ == '__main__':
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F
GLIBC_2.36 fsopen F
GLIBC_2.36 fspick F
GLIBC_2.36 move_mount F
+GLIBC_2.36 open_tree F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F
GLIBC_2.36 pidfd_send_signal F