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