cpp-d1064d
[cross.git] / i686-linux-gnu-4.7 / usr / include / linux / auto_dev-ioctl.h
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 _LINUX_AUTO_DEV_IOCTL_H
12 #define _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
28 struct args_protover {
29         __u32   version;
30 };
31
32 struct args_protosubver {
33         __u32   sub_version;
34 };
35
36 struct args_openmount {
37         __u32   devid;
38 };
39
40 struct args_ready {
41         __u32   token;
42 };
43
44 struct args_fail {
45         __u32   token;
46         __s32   status;
47 };
48
49 struct args_setpipefd {
50         __s32   pipefd;
51 };
52
53 struct args_timeout {
54         __u64   timeout;
55 };
56
57 struct args_requester {
58         __u32   uid;
59         __u32   gid;
60 };
61
62 struct args_expire {
63         __u32   how;
64 };
65
66 struct args_askumount {
67         __u32   may_umount;
68 };
69
70 struct 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 is is the size of the
86  * structure.
87  */
88
89 struct 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
115 static __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
124 enum {
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  /* _LINUX_AUTO_DEV_IOCTL_H */