linux/include/uapi/linux/auto_fs4.h
<<
>>
Prefs
   1/*
   2 * Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
   3 *
   4 * This file is part of the Linux kernel and is made available under
   5 * the terms of the GNU General Public License, version 2, or at your
   6 * option, any later version, incorporated herein by reference.
   7 */
   8
   9#ifndef _LINUX_AUTO_FS4_H
  10#define _LINUX_AUTO_FS4_H
  11
  12/* Include common v3 definitions */
  13#include <linux/types.h>
  14#include <linux/auto_fs.h>
  15
  16/* autofs v4 definitions */
  17#undef AUTOFS_PROTO_VERSION
  18#undef AUTOFS_MIN_PROTO_VERSION
  19#undef AUTOFS_MAX_PROTO_VERSION
  20
  21#define AUTOFS_PROTO_VERSION            5
  22#define AUTOFS_MIN_PROTO_VERSION        3
  23#define AUTOFS_MAX_PROTO_VERSION        5
  24
  25#define AUTOFS_PROTO_SUBVERSION         2
  26
  27/* Mask for expire behaviour */
  28#define AUTOFS_EXP_IMMEDIATE            1
  29#define AUTOFS_EXP_LEAVES               2
  30
  31#define AUTOFS_TYPE_ANY                 0U
  32#define AUTOFS_TYPE_INDIRECT            1U
  33#define AUTOFS_TYPE_DIRECT              2U
  34#define AUTOFS_TYPE_OFFSET              4U
  35
  36static inline void set_autofs_type_indirect(unsigned int *type)
  37{
  38        *type = AUTOFS_TYPE_INDIRECT;
  39}
  40
  41static inline unsigned int autofs_type_indirect(unsigned int type)
  42{
  43        return (type == AUTOFS_TYPE_INDIRECT);
  44}
  45
  46static inline void set_autofs_type_direct(unsigned int *type)
  47{
  48        *type = AUTOFS_TYPE_DIRECT;
  49}
  50
  51static inline unsigned int autofs_type_direct(unsigned int type)
  52{
  53        return (type == AUTOFS_TYPE_DIRECT);
  54}
  55
  56static inline void set_autofs_type_offset(unsigned int *type)
  57{
  58        *type = AUTOFS_TYPE_OFFSET;
  59}
  60
  61static inline unsigned int autofs_type_offset(unsigned int type)
  62{
  63        return (type == AUTOFS_TYPE_OFFSET);
  64}
  65
  66static inline unsigned int autofs_type_trigger(unsigned int type)
  67{
  68        return (type == AUTOFS_TYPE_DIRECT || type == AUTOFS_TYPE_OFFSET);
  69}
  70
  71/*
  72 * This isn't really a type as we use it to say "no type set" to
  73 * indicate we want to search for "any" mount in the
  74 * autofs_dev_ioctl_ismountpoint() device ioctl function.
  75 */
  76static inline void set_autofs_type_any(unsigned int *type)
  77{
  78        *type = AUTOFS_TYPE_ANY;
  79}
  80
  81static inline unsigned int autofs_type_any(unsigned int type)
  82{
  83        return (type == AUTOFS_TYPE_ANY);
  84}
  85
  86/* Daemon notification packet types */
  87enum autofs_notify {
  88        NFY_NONE,
  89        NFY_MOUNT,
  90        NFY_EXPIRE
  91};
  92
  93/* Kernel protocol version 4 packet types */
  94
  95/* Expire entry (umount request) */
  96#define autofs_ptype_expire_multi       2
  97
  98/* Kernel protocol version 5 packet types */
  99
 100/* Indirect mount missing and expire requests. */
 101#define autofs_ptype_missing_indirect   3
 102#define autofs_ptype_expire_indirect    4
 103
 104/* Direct mount missing and expire requests */
 105#define autofs_ptype_missing_direct     5
 106#define autofs_ptype_expire_direct      6
 107
 108/* v4 multi expire (via pipe) */
 109struct autofs_packet_expire_multi {
 110        struct autofs_packet_hdr hdr;
 111        autofs_wqt_t wait_queue_token;
 112        int len;
 113        char name[NAME_MAX+1];
 114};
 115
 116union autofs_packet_union {
 117        struct autofs_packet_hdr hdr;
 118        struct autofs_packet_missing missing;
 119        struct autofs_packet_expire expire;
 120        struct autofs_packet_expire_multi expire_multi;
 121};
 122
 123/* autofs v5 common packet struct */
 124struct autofs_v5_packet {
 125        struct autofs_packet_hdr hdr;
 126        autofs_wqt_t wait_queue_token;
 127        __u32 dev;
 128        __u64 ino;
 129        __u32 uid;
 130        __u32 gid;
 131        __u32 pid;
 132        __u32 tgid;
 133        __u32 len;
 134        char name[NAME_MAX+1];
 135};
 136
 137typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
 138typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
 139typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
 140typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
 141
 142union autofs_v5_packet_union {
 143        struct autofs_packet_hdr hdr;
 144        struct autofs_v5_packet v5_packet;
 145        autofs_packet_missing_indirect_t missing_indirect;
 146        autofs_packet_expire_indirect_t expire_indirect;
 147        autofs_packet_missing_direct_t missing_direct;
 148        autofs_packet_expire_direct_t expire_direct;
 149};
 150
 151#define AUTOFS_IOC_EXPIRE_MULTI         _IOW(0x93, 0x66, int)
 152#define AUTOFS_IOC_EXPIRE_INDIRECT      AUTOFS_IOC_EXPIRE_MULTI
 153#define AUTOFS_IOC_EXPIRE_DIRECT        AUTOFS_IOC_EXPIRE_MULTI
 154#define AUTOFS_IOC_PROTOSUBVER          _IOR(0x93, 0x67, int)
 155#define AUTOFS_IOC_ASKUMOUNT            _IOR(0x93, 0x70, int)
 156
 157#endif /* _LINUX_AUTO_FS4_H */
 158