2
* linux/include/linux/auto_fs4.h
4
* Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
6
* This file is part of the Linux kernel and is made available under
7
* the terms of the GNU General Public License, version 2, or at your
8
* option, any later version, incorporated herein by reference.
11
#ifndef _LINUX_AUTO_FS4_H
12
#define _LINUX_AUTO_FS4_H
14
/* Include common v3 definitions */
15
#include <linux/types.h>
16
#include <linux/auto_fs.h>
18
/* autofs v4 definitions */
19
#undef AUTOFS_PROTO_VERSION
20
#undef AUTOFS_MIN_PROTO_VERSION
21
#undef AUTOFS_MAX_PROTO_VERSION
23
#define AUTOFS_PROTO_VERSION 5
24
#define AUTOFS_MIN_PROTO_VERSION 3
25
#define AUTOFS_MAX_PROTO_VERSION 5
27
#define AUTOFS_PROTO_SUBVERSION 2
29
/* Mask for expire behaviour */
30
#define AUTOFS_EXP_IMMEDIATE 1
31
#define AUTOFS_EXP_LEAVES 2
33
#define AUTOFS_TYPE_ANY 0U
34
#define AUTOFS_TYPE_INDIRECT 1U
35
#define AUTOFS_TYPE_DIRECT 2U
36
#define AUTOFS_TYPE_OFFSET 4U
38
static inline void set_autofs_type_indirect(unsigned int *type)
40
*type = AUTOFS_TYPE_INDIRECT;
44
static inline unsigned int autofs_type_indirect(unsigned int type)
46
return (type == AUTOFS_TYPE_INDIRECT);
49
static inline void set_autofs_type_direct(unsigned int *type)
51
*type = AUTOFS_TYPE_DIRECT;
55
static inline unsigned int autofs_type_direct(unsigned int type)
57
return (type == AUTOFS_TYPE_DIRECT);
60
static inline void set_autofs_type_offset(unsigned int *type)
62
*type = AUTOFS_TYPE_OFFSET;
66
static inline unsigned int autofs_type_offset(unsigned int type)
68
return (type == AUTOFS_TYPE_OFFSET);
71
static inline unsigned int autofs_type_trigger(unsigned int type)
73
return (type == AUTOFS_TYPE_DIRECT || type == AUTOFS_TYPE_OFFSET);
77
* This isn't really a type as we use it to say "no type set" to
78
* indicate we want to search for "any" mount in the
79
* autofs_dev_ioctl_ismountpoint() device ioctl function.
81
static inline void set_autofs_type_any(unsigned int *type)
83
*type = AUTOFS_TYPE_ANY;
87
static inline unsigned int autofs_type_any(unsigned int type)
89
return (type == AUTOFS_TYPE_ANY);
92
/* Daemon notification packet types */
99
/* Kernel protocol version 4 packet types */
101
/* Expire entry (umount request) */
102
#define autofs_ptype_expire_multi 2
104
/* Kernel protocol version 5 packet types */
106
/* Indirect mount missing and expire requests. */
107
#define autofs_ptype_missing_indirect 3
108
#define autofs_ptype_expire_indirect 4
110
/* Direct mount missing and expire requests */
111
#define autofs_ptype_missing_direct 5
112
#define autofs_ptype_expire_direct 6
114
/* v4 multi expire (via pipe) */
115
struct autofs_packet_expire_multi {
116
struct autofs_packet_hdr hdr;
117
autofs_wqt_t wait_queue_token;
119
char name[NAME_MAX+1];
122
union autofs_packet_union {
123
struct autofs_packet_hdr hdr;
124
struct autofs_packet_missing missing;
125
struct autofs_packet_expire expire;
126
struct autofs_packet_expire_multi expire_multi;
129
/* autofs v5 common packet struct */
130
struct autofs_v5_packet {
131
struct autofs_packet_hdr hdr;
132
autofs_wqt_t wait_queue_token;
140
char name[NAME_MAX+1];
143
typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
144
typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
145
typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
146
typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
148
union autofs_v5_packet_union {
149
struct autofs_packet_hdr hdr;
150
struct autofs_v5_packet v5_packet;
151
autofs_packet_missing_indirect_t missing_indirect;
152
autofs_packet_expire_indirect_t expire_indirect;
153
autofs_packet_missing_direct_t missing_direct;
154
autofs_packet_expire_direct_t expire_direct;
157
#define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93,0x66,int)
158
#define AUTOFS_IOC_EXPIRE_INDIRECT AUTOFS_IOC_EXPIRE_MULTI
159
#define AUTOFS_IOC_EXPIRE_DIRECT AUTOFS_IOC_EXPIRE_MULTI
160
#define AUTOFS_IOC_PROTOSUBVER _IOR(0x93,0x67,int)
161
#define AUTOFS_IOC_ASKUMOUNT _IOR(0x93,0x70,int)
164
#endif /* _LINUX_AUTO_FS4_H */