0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef _UAPI_LINUX_AUTO_DEV_IOCTL_H
0012 #define _UAPI_LINUX_AUTO_DEV_IOCTL_H
0013
0014 #include <linux/auto_fs.h>
0015 #include <linux/string.h>
0016
0017 #define AUTOFS_DEVICE_NAME "autofs"
0018
0019 #define AUTOFS_DEV_IOCTL_VERSION_MAJOR 1
0020 #define AUTOFS_DEV_IOCTL_VERSION_MINOR 1
0021
0022 #define AUTOFS_DEV_IOCTL_SIZE sizeof(struct autofs_dev_ioctl)
0023
0024
0025
0026
0027
0028 struct args_protover {
0029 __u32 version;
0030 };
0031
0032 struct args_protosubver {
0033 __u32 sub_version;
0034 };
0035
0036 struct args_openmount {
0037 __u32 devid;
0038 };
0039
0040 struct args_ready {
0041 __u32 token;
0042 };
0043
0044 struct args_fail {
0045 __u32 token;
0046 __s32 status;
0047 };
0048
0049 struct args_setpipefd {
0050 __s32 pipefd;
0051 };
0052
0053 struct args_timeout {
0054 __u64 timeout;
0055 };
0056
0057 struct args_requester {
0058 __u32 uid;
0059 __u32 gid;
0060 };
0061
0062 struct args_expire {
0063 __u32 how;
0064 };
0065
0066 struct args_askumount {
0067 __u32 may_umount;
0068 };
0069
0070 struct args_ismountpoint {
0071 union {
0072 struct args_in {
0073 __u32 type;
0074 } in;
0075 struct args_out {
0076 __u32 devid;
0077 __u32 magic;
0078 } out;
0079 };
0080 };
0081
0082
0083
0084
0085
0086
0087
0088
0089 struct autofs_dev_ioctl {
0090 __u32 ver_major;
0091 __u32 ver_minor;
0092 __u32 size;
0093
0094 __s32 ioctlfd;
0095
0096
0097
0098 union {
0099 struct args_protover protover;
0100 struct args_protosubver protosubver;
0101 struct args_openmount openmount;
0102 struct args_ready ready;
0103 struct args_fail fail;
0104 struct args_setpipefd setpipefd;
0105 struct args_timeout timeout;
0106 struct args_requester requester;
0107 struct args_expire expire;
0108 struct args_askumount askumount;
0109 struct args_ismountpoint ismountpoint;
0110 };
0111
0112 char path[0];
0113 };
0114
0115 static inline void init_autofs_dev_ioctl(struct autofs_dev_ioctl *in)
0116 {
0117 memset(in, 0, AUTOFS_DEV_IOCTL_SIZE);
0118 in->ver_major = AUTOFS_DEV_IOCTL_VERSION_MAJOR;
0119 in->ver_minor = AUTOFS_DEV_IOCTL_VERSION_MINOR;
0120 in->size = AUTOFS_DEV_IOCTL_SIZE;
0121 in->ioctlfd = -1;
0122 }
0123
0124 enum {
0125
0126 AUTOFS_DEV_IOCTL_VERSION_CMD = 0x71,
0127 AUTOFS_DEV_IOCTL_PROTOVER_CMD,
0128 AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD,
0129
0130
0131 AUTOFS_DEV_IOCTL_OPENMOUNT_CMD,
0132
0133
0134 AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD,
0135
0136
0137 AUTOFS_DEV_IOCTL_READY_CMD,
0138 AUTOFS_DEV_IOCTL_FAIL_CMD,
0139
0140
0141 AUTOFS_DEV_IOCTL_SETPIPEFD_CMD,
0142 AUTOFS_DEV_IOCTL_CATATONIC_CMD,
0143
0144
0145 AUTOFS_DEV_IOCTL_TIMEOUT_CMD,
0146
0147
0148 AUTOFS_DEV_IOCTL_REQUESTER_CMD,
0149
0150
0151 AUTOFS_DEV_IOCTL_EXPIRE_CMD,
0152
0153
0154 AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD,
0155
0156
0157 AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD,
0158 };
0159
0160 #define AUTOFS_DEV_IOCTL_VERSION \
0161 _IOWR(AUTOFS_IOCTL, \
0162 AUTOFS_DEV_IOCTL_VERSION_CMD, struct autofs_dev_ioctl)
0163
0164 #define AUTOFS_DEV_IOCTL_PROTOVER \
0165 _IOWR(AUTOFS_IOCTL, \
0166 AUTOFS_DEV_IOCTL_PROTOVER_CMD, struct autofs_dev_ioctl)
0167
0168 #define AUTOFS_DEV_IOCTL_PROTOSUBVER \
0169 _IOWR(AUTOFS_IOCTL, \
0170 AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD, struct autofs_dev_ioctl)
0171
0172 #define AUTOFS_DEV_IOCTL_OPENMOUNT \
0173 _IOWR(AUTOFS_IOCTL, \
0174 AUTOFS_DEV_IOCTL_OPENMOUNT_CMD, struct autofs_dev_ioctl)
0175
0176 #define AUTOFS_DEV_IOCTL_CLOSEMOUNT \
0177 _IOWR(AUTOFS_IOCTL, \
0178 AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD, struct autofs_dev_ioctl)
0179
0180 #define AUTOFS_DEV_IOCTL_READY \
0181 _IOWR(AUTOFS_IOCTL, \
0182 AUTOFS_DEV_IOCTL_READY_CMD, struct autofs_dev_ioctl)
0183
0184 #define AUTOFS_DEV_IOCTL_FAIL \
0185 _IOWR(AUTOFS_IOCTL, \
0186 AUTOFS_DEV_IOCTL_FAIL_CMD, struct autofs_dev_ioctl)
0187
0188 #define AUTOFS_DEV_IOCTL_SETPIPEFD \
0189 _IOWR(AUTOFS_IOCTL, \
0190 AUTOFS_DEV_IOCTL_SETPIPEFD_CMD, struct autofs_dev_ioctl)
0191
0192 #define AUTOFS_DEV_IOCTL_CATATONIC \
0193 _IOWR(AUTOFS_IOCTL, \
0194 AUTOFS_DEV_IOCTL_CATATONIC_CMD, struct autofs_dev_ioctl)
0195
0196 #define AUTOFS_DEV_IOCTL_TIMEOUT \
0197 _IOWR(AUTOFS_IOCTL, \
0198 AUTOFS_DEV_IOCTL_TIMEOUT_CMD, struct autofs_dev_ioctl)
0199
0200 #define AUTOFS_DEV_IOCTL_REQUESTER \
0201 _IOWR(AUTOFS_IOCTL, \
0202 AUTOFS_DEV_IOCTL_REQUESTER_CMD, struct autofs_dev_ioctl)
0203
0204 #define AUTOFS_DEV_IOCTL_EXPIRE \
0205 _IOWR(AUTOFS_IOCTL, \
0206 AUTOFS_DEV_IOCTL_EXPIRE_CMD, struct autofs_dev_ioctl)
0207
0208 #define AUTOFS_DEV_IOCTL_ASKUMOUNT \
0209 _IOWR(AUTOFS_IOCTL, \
0210 AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD, struct autofs_dev_ioctl)
0211
0212 #define AUTOFS_DEV_IOCTL_ISMOUNTPOINT \
0213 _IOWR(AUTOFS_IOCTL, \
0214 AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD, struct autofs_dev_ioctl)
0215
0216 #endif