linux-headers (unknown)

(root)/
include/
linux/
openat2.h
       1  /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
       2  #ifndef _LINUX_OPENAT2_H
       3  #define _LINUX_OPENAT2_H
       4  
       5  #include <linux/types.h>
       6  
       7  /*
       8   * Arguments for how openat2(2) should open the target path. If only @flags and
       9   * @mode are non-zero, then openat2(2) operates very similarly to openat(2).
      10   *
      11   * However, unlike openat(2), unknown or invalid bits in @flags result in
      12   * -EINVAL rather than being silently ignored. @mode must be zero unless one of
      13   * {O_CREAT, O_TMPFILE} are set.
      14   *
      15   * @flags: O_* flags.
      16   * @mode: O_CREAT/O_TMPFILE file mode.
      17   * @resolve: RESOLVE_* flags.
      18   */
      19  struct open_how {
      20  	__u64 flags;
      21  	__u64 mode;
      22  	__u64 resolve;
      23  };
      24  
      25  /* how->resolve flags for openat2(2). */
      26  #define RESOLVE_NO_XDEV		0x01 /* Block mount-point crossings
      27  					(includes bind-mounts). */
      28  #define RESOLVE_NO_MAGICLINKS	0x02 /* Block traversal through procfs-style
      29  					"magic-links". */
      30  #define RESOLVE_NO_SYMLINKS	0x04 /* Block traversal through all symlinks
      31  					(implies OEXT_NO_MAGICLINKS) */
      32  #define RESOLVE_BENEATH		0x08 /* Block "lexical" trickery like
      33  					"..", symlinks, and absolute
      34  					paths which escape the dirfd. */
      35  #define RESOLVE_IN_ROOT		0x10 /* Make all jumps to "/" and ".."
      36  					be scoped inside the dirfd
      37  					(similar to chroot(2)). */
      38  #define RESOLVE_CACHED		0x20 /* Only complete if resolution can be
      39  					completed through cached lookup. May
      40  					return -EAGAIN if that's not
      41  					possible. */
      42  
      43  #endif /* _LINUX_OPENAT2_H */