linux/include/linux/auto_dev-ioctl.h
<<
>>
Prefs
   1/*
   2 * Copyright 2008 Red Hat, Inc. All rights reserved.
   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.
   8 */
   9
  10#ifndef _LINUX_AUTO_DEV_IOCTL_H
  11#define _LINUX_AUTO_DEV_IOCTL_H
  12
  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
  34struct args_protover {
  35        __u32   version;
  36};
  37
  38struct args_protosubver {
  39        __u32   sub_version;
  40};
  41
  42struct args_openmount {
  43        __u32   devid;
  44};
  45
  46struct args_ready {
  47        __u32   token;
  48};
  49
  50struct args_fail {
  51        __u32   token;
  52        __s32   status;
  53};
  54
  55struct args_setpipefd {
  56        __s32   pipefd;
  57};
  58
  59struct args_timeout {
  60        __u64   timeout;
  61};
  62
  63struct args_requester {
  64        __u32   uid;
  65        __u32   gid;
  66};
  67
  68struct args_expire {
  69        __u32   how;
  70};
  71
  72struct args_askumount {
  73        __u32   may_umount;
  74};
  75
  76struct 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
  95struct 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
 121static 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 */
 135enum {
 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
 229#endif  /* _LINUX_AUTO_DEV_IOCTL_H */
 230