Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
0002 /*
0003  * Copyright 2008 Red Hat, Inc. All rights reserved.
0004  * Copyright 2008 Ian Kent <raven@themaw.net>
0005  *
0006  * This file is part of the Linux kernel and is made available under
0007  * the terms of the GNU General Public License, version 2, or at your
0008  * option, any later version, incorporated herein by reference.
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  * An ioctl interface for autofs mount point control.
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  * All the ioctls use this structure.
0084  * When sending a path size must account for the total length
0085  * of the chunk of memory otherwise it is the size of the
0086  * structure.
0087  */
0088 
0089 struct autofs_dev_ioctl {
0090     __u32 ver_major;
0091     __u32 ver_minor;
0092     __u32 size;     /* total size of data passed in
0093                  * including this struct */
0094     __s32 ioctlfd;      /* automount command fd */
0095 
0096     /* Command parameters */
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     /* Get various version info */
0126     AUTOFS_DEV_IOCTL_VERSION_CMD = 0x71,
0127     AUTOFS_DEV_IOCTL_PROTOVER_CMD,
0128     AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD,
0129 
0130     /* Open mount ioctl fd */
0131     AUTOFS_DEV_IOCTL_OPENMOUNT_CMD,
0132 
0133     /* Close mount ioctl fd */
0134     AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD,
0135 
0136     /* Mount/expire status returns */
0137     AUTOFS_DEV_IOCTL_READY_CMD,
0138     AUTOFS_DEV_IOCTL_FAIL_CMD,
0139 
0140     /* Activate/deactivate autofs mount */
0141     AUTOFS_DEV_IOCTL_SETPIPEFD_CMD,
0142     AUTOFS_DEV_IOCTL_CATATONIC_CMD,
0143 
0144     /* Expiry timeout */
0145     AUTOFS_DEV_IOCTL_TIMEOUT_CMD,
0146 
0147     /* Get mount last requesting uid and gid */
0148     AUTOFS_DEV_IOCTL_REQUESTER_CMD,
0149 
0150     /* Check for eligible expire candidates */
0151     AUTOFS_DEV_IOCTL_EXPIRE_CMD,
0152 
0153     /* Request busy status */
0154     AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD,
0155 
0156     /* Check if path is a mountpoint */
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  /* _UAPI_LINUX_AUTO_DEV_IOCTL_H */