/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_FANOTIFY_H #define _LINUX_FANOTIFY_H #include <linux/sysctl.h> #include <uapi/linux/fanotify.h> #define FAN_GROUP_FLAG(group, flag) … /* * Flags allowed to be passed from/to userspace. * * We intentionally do not add new bits to the old FAN_ALL_* constants, because * they are uapi exposed constants. If there are programs out there using * these constant, the programs may break if re-compiled with new uapi headers * and then run on an old kernel. */ /* Group classes where permission events are allowed */ #define FANOTIFY_PERM_CLASSES … #define FANOTIFY_CLASS_BITS … #define FANOTIFY_FID_BITS … #define FANOTIFY_INFO_MODES … /* * fanotify_init() flags that require CAP_SYS_ADMIN. * We do not allow unprivileged groups to request permission events. * We do not allow unprivileged groups to get other process pid in events. * We do not allow unprivileged groups to use unlimited resources. */ #define FANOTIFY_ADMIN_INIT_FLAGS … /* * fanotify_init() flags that are allowed for user without CAP_SYS_ADMIN. * FAN_CLASS_NOTIF is the only class we allow for unprivileged group. * We do not allow unprivileged groups to get file descriptors in events, * so one of the flags for reporting file handles is required. */ #define FANOTIFY_USER_INIT_FLAGS … #define FANOTIFY_INIT_FLAGS … /* Internal group flags */ #define FANOTIFY_UNPRIV … #define FANOTIFY_INTERNAL_GROUP_FLAGS … #define FANOTIFY_MARK_TYPE_BITS … #define FANOTIFY_MARK_CMD_BITS … #define FANOTIFY_MARK_IGNORE_BITS … #define FANOTIFY_MARK_FLAGS … /* * Events that can be reported with data type FSNOTIFY_EVENT_PATH. * Note that FAN_MODIFY can also be reported with data type * FSNOTIFY_EVENT_INODE. */ #define FANOTIFY_PATH_EVENTS … /* * Directory entry modification events - reported only to directory * where entry is modified and not to a watching parent. */ #define FANOTIFY_DIRENT_EVENTS … /* Events that can be reported with event->fd */ #define FANOTIFY_FD_EVENTS … /* Events that can only be reported with data type FSNOTIFY_EVENT_INODE */ #define FANOTIFY_INODE_EVENTS … /* Events that can only be reported with data type FSNOTIFY_EVENT_ERROR */ #define FANOTIFY_ERROR_EVENTS … /* Events that user can request to be notified on */ #define FANOTIFY_EVENTS … /* Events that require a permission response from user */ #define FANOTIFY_PERM_EVENTS … /* Extra flags that may be reported with event or control handling of events */ #define FANOTIFY_EVENT_FLAGS … /* Events that may be reported to user */ #define FANOTIFY_OUTGOING_EVENTS … /* Events and flags relevant only for directories */ #define FANOTIFY_DIRONLY_EVENT_BITS … #define ALL_FANOTIFY_EVENT_BITS … /* These masks check for invalid bits in permission responses. */ #define FANOTIFY_RESPONSE_ACCESS … #define FANOTIFY_RESPONSE_FLAGS … #define FANOTIFY_RESPONSE_VALID_MASK … /* Do not use these old uapi constants internally */ #undef FAN_ALL_CLASS_BITS #undef FAN_ALL_INIT_FLAGS #undef FAN_ALL_MARK_FLAGS #undef FAN_ALL_EVENTS #undef FAN_ALL_PERM_EVENTS #undef FAN_ALL_OUTGOING_EVENTS #endif /* _LINUX_FANOTIFY_H */