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