linux/tools/include/uapi/linux/openat2.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
   2#ifndef _UAPI_LINUX_OPENAT2_H
   3#define _UAPI_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 */
  19struct 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
  39#endif /* _UAPI_LINUX_OPENAT2_H */
  40