auto_dev-ioctl.h (4997B)
1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2/* 3 * Copyright 2008 Red Hat, Inc. All rights reserved. 4 * Copyright 2008 Ian Kent <raven@themaw.net> 5 * 6 * This file is part of the Linux kernel and is made available under 7 * the terms of the GNU General Public License, version 2, or at your 8 * option, any later version, incorporated herein by reference. 9 */ 10 11#ifndef _UAPI_LINUX_AUTO_DEV_IOCTL_H 12#define _UAPI_LINUX_AUTO_DEV_IOCTL_H 13 14#include <linux/auto_fs.h> 15#include <linux/string.h> 16 17#define AUTOFS_DEVICE_NAME "autofs" 18 19#define AUTOFS_DEV_IOCTL_VERSION_MAJOR 1 20#define AUTOFS_DEV_IOCTL_VERSION_MINOR 1 21 22#define AUTOFS_DEV_IOCTL_SIZE sizeof(struct autofs_dev_ioctl) 23 24/* 25 * An ioctl interface for autofs mount point control. 26 */ 27 28struct args_protover { 29 __u32 version; 30}; 31 32struct args_protosubver { 33 __u32 sub_version; 34}; 35 36struct args_openmount { 37 __u32 devid; 38}; 39 40struct args_ready { 41 __u32 token; 42}; 43 44struct args_fail { 45 __u32 token; 46 __s32 status; 47}; 48 49struct args_setpipefd { 50 __s32 pipefd; 51}; 52 53struct args_timeout { 54 __u64 timeout; 55}; 56 57struct args_requester { 58 __u32 uid; 59 __u32 gid; 60}; 61 62struct args_expire { 63 __u32 how; 64}; 65 66struct args_askumount { 67 __u32 may_umount; 68}; 69 70struct args_ismountpoint { 71 union { 72 struct args_in { 73 __u32 type; 74 } in; 75 struct args_out { 76 __u32 devid; 77 __u32 magic; 78 } out; 79 }; 80}; 81 82/* 83 * All the ioctls use this structure. 84 * When sending a path size must account for the total length 85 * of the chunk of memory otherwise it is the size of the 86 * structure. 87 */ 88 89struct autofs_dev_ioctl { 90 __u32 ver_major; 91 __u32 ver_minor; 92 __u32 size; /* total size of data passed in 93 * including this struct */ 94 __s32 ioctlfd; /* automount command fd */ 95 96 /* Command parameters */ 97 98 union { 99 struct args_protover protover; 100 struct args_protosubver protosubver; 101 struct args_openmount openmount; 102 struct args_ready ready; 103 struct args_fail fail; 104 struct args_setpipefd setpipefd; 105 struct args_timeout timeout; 106 struct args_requester requester; 107 struct args_expire expire; 108 struct args_askumount askumount; 109 struct args_ismountpoint ismountpoint; 110 }; 111 112 char path[0]; 113}; 114 115static inline void init_autofs_dev_ioctl(struct autofs_dev_ioctl *in) 116{ 117 memset(in, 0, AUTOFS_DEV_IOCTL_SIZE); 118 in->ver_major = AUTOFS_DEV_IOCTL_VERSION_MAJOR; 119 in->ver_minor = AUTOFS_DEV_IOCTL_VERSION_MINOR; 120 in->size = AUTOFS_DEV_IOCTL_SIZE; 121 in->ioctlfd = -1; 122} 123 124enum { 125 /* Get various version info */ 126 AUTOFS_DEV_IOCTL_VERSION_CMD = 0x71, 127 AUTOFS_DEV_IOCTL_PROTOVER_CMD, 128 AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD, 129 130 /* Open mount ioctl fd */ 131 AUTOFS_DEV_IOCTL_OPENMOUNT_CMD, 132 133 /* Close mount ioctl fd */ 134 AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD, 135 136 /* Mount/expire status returns */ 137 AUTOFS_DEV_IOCTL_READY_CMD, 138 AUTOFS_DEV_IOCTL_FAIL_CMD, 139 140 /* Activate/deactivate autofs mount */ 141 AUTOFS_DEV_IOCTL_SETPIPEFD_CMD, 142 AUTOFS_DEV_IOCTL_CATATONIC_CMD, 143 144 /* Expiry timeout */ 145 AUTOFS_DEV_IOCTL_TIMEOUT_CMD, 146 147 /* Get mount last requesting uid and gid */ 148 AUTOFS_DEV_IOCTL_REQUESTER_CMD, 149 150 /* Check for eligible expire candidates */ 151 AUTOFS_DEV_IOCTL_EXPIRE_CMD, 152 153 /* Request busy status */ 154 AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD, 155 156 /* Check if path is a mountpoint */ 157 AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD, 158}; 159 160#define AUTOFS_DEV_IOCTL_VERSION \ 161 _IOWR(AUTOFS_IOCTL, \ 162 AUTOFS_DEV_IOCTL_VERSION_CMD, struct autofs_dev_ioctl) 163 164#define AUTOFS_DEV_IOCTL_PROTOVER \ 165 _IOWR(AUTOFS_IOCTL, \ 166 AUTOFS_DEV_IOCTL_PROTOVER_CMD, struct autofs_dev_ioctl) 167 168#define AUTOFS_DEV_IOCTL_PROTOSUBVER \ 169 _IOWR(AUTOFS_IOCTL, \ 170 AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD, struct autofs_dev_ioctl) 171 172#define AUTOFS_DEV_IOCTL_OPENMOUNT \ 173 _IOWR(AUTOFS_IOCTL, \ 174 AUTOFS_DEV_IOCTL_OPENMOUNT_CMD, struct autofs_dev_ioctl) 175 176#define AUTOFS_DEV_IOCTL_CLOSEMOUNT \ 177 _IOWR(AUTOFS_IOCTL, \ 178 AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD, struct autofs_dev_ioctl) 179 180#define AUTOFS_DEV_IOCTL_READY \ 181 _IOWR(AUTOFS_IOCTL, \ 182 AUTOFS_DEV_IOCTL_READY_CMD, struct autofs_dev_ioctl) 183 184#define AUTOFS_DEV_IOCTL_FAIL \ 185 _IOWR(AUTOFS_IOCTL, \ 186 AUTOFS_DEV_IOCTL_FAIL_CMD, struct autofs_dev_ioctl) 187 188#define AUTOFS_DEV_IOCTL_SETPIPEFD \ 189 _IOWR(AUTOFS_IOCTL, \ 190 AUTOFS_DEV_IOCTL_SETPIPEFD_CMD, struct autofs_dev_ioctl) 191 192#define AUTOFS_DEV_IOCTL_CATATONIC \ 193 _IOWR(AUTOFS_IOCTL, \ 194 AUTOFS_DEV_IOCTL_CATATONIC_CMD, struct autofs_dev_ioctl) 195 196#define AUTOFS_DEV_IOCTL_TIMEOUT \ 197 _IOWR(AUTOFS_IOCTL, \ 198 AUTOFS_DEV_IOCTL_TIMEOUT_CMD, struct autofs_dev_ioctl) 199 200#define AUTOFS_DEV_IOCTL_REQUESTER \ 201 _IOWR(AUTOFS_IOCTL, \ 202 AUTOFS_DEV_IOCTL_REQUESTER_CMD, struct autofs_dev_ioctl) 203 204#define AUTOFS_DEV_IOCTL_EXPIRE \ 205 _IOWR(AUTOFS_IOCTL, \ 206 AUTOFS_DEV_IOCTL_EXPIRE_CMD, struct autofs_dev_ioctl) 207 208#define AUTOFS_DEV_IOCTL_ASKUMOUNT \ 209 _IOWR(AUTOFS_IOCTL, \ 210 AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD, struct autofs_dev_ioctl) 211 212#define AUTOFS_DEV_IOCTL_ISMOUNTPOINT \ 213 _IOWR(AUTOFS_IOCTL, \ 214 AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD, struct autofs_dev_ioctl) 215 216#endif /* _UAPI_LINUX_AUTO_DEV_IOCTL_H */