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/auto_fs.h>
17 /* autofs v4 definitions */
18 #undef AUTOFS_PROTO_VERSION
19 #undef AUTOFS_MIN_PROTO_VERSION
20 #undef AUTOFS_MAX_PROTO_VERSION
22 #define AUTOFS_PROTO_VERSION 5
23 #define AUTOFS_MIN_PROTO_VERSION 3
24 #define AUTOFS_MAX_PROTO_VERSION 5
26 #define AUTOFS_PROTO_SUBVERSION 1
28 /* Mask for expire behaviour */
29 #define AUTOFS_EXP_IMMEDIATE 1
30 #define AUTOFS_EXP_LEAVES 2
32 #define AUTOFS_TYPE_ANY 0U
33 #define AUTOFS_TYPE_INDIRECT 1U
34 #define AUTOFS_TYPE_DIRECT 2U
35 #define AUTOFS_TYPE_OFFSET 4U
37 static inline void set_autofs_type_indirect(unsigned int *type)
39 *type = AUTOFS_TYPE_INDIRECT;
43 static inline unsigned int autofs_type_indirect(unsigned int type)
45 return (type == AUTOFS_TYPE_INDIRECT);
48 static inline void set_autofs_type_direct(unsigned int *type)
50 *type = AUTOFS_TYPE_DIRECT;
54 static inline unsigned int autofs_type_direct(unsigned int type)
56 return (type == AUTOFS_TYPE_DIRECT);
59 static inline void set_autofs_type_offset(unsigned int *type)
61 *type = AUTOFS_TYPE_OFFSET;
65 static inline unsigned int autofs_type_offset(unsigned int type)
67 return (type == AUTOFS_TYPE_OFFSET);
70 static inline unsigned int autofs_type_trigger(unsigned int type)
72 return (type == AUTOFS_TYPE_DIRECT || type == AUTOFS_TYPE_OFFSET);
76 * This isn't really a type as we use it to say "no type set" to
77 * indicate we want to search for "any" mount in the
78 * autofs_dev_ioctl_ismountpoint() device ioctl function.
80 static inline void set_autofs_type_any(unsigned int *type)
82 *type = AUTOFS_TYPE_ANY;
86 static inline unsigned int autofs_type_any(unsigned int type)
88 return (type == AUTOFS_TYPE_ANY);
91 /* Daemon notification packet types */
98 /* Kernel protocol version 4 packet types */
100 /* Expire entry (umount request) */
101 #define autofs_ptype_expire_multi 2
103 /* Kernel protocol version 5 packet types */
105 /* Indirect mount missing and expire requests. */
106 #define autofs_ptype_missing_indirect 3
107 #define autofs_ptype_expire_indirect 4
109 /* Direct mount missing and expire requests */
110 #define autofs_ptype_missing_direct 5
111 #define autofs_ptype_expire_direct 6
113 /* v4 multi expire (via pipe) */
114 struct autofs_packet_expire_multi {
115 struct autofs_packet_hdr hdr;
116 autofs_wqt_t wait_queue_token;
118 char name[NAME_MAX+1];
121 union autofs_packet_union {
122 struct autofs_packet_hdr hdr;
123 struct autofs_packet_missing missing;
124 struct autofs_packet_expire expire;
125 struct autofs_packet_expire_multi expire_multi;
128 /* autofs v5 common packet struct */
129 struct autofs_v5_packet {
130 struct autofs_packet_hdr hdr;
131 autofs_wqt_t wait_queue_token;
139 char name[NAME_MAX+1];
142 typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
143 typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
144 typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
145 typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
147 union autofs_v5_packet_union {
148 struct autofs_packet_hdr hdr;
149 struct autofs_v5_packet v5_packet;
150 autofs_packet_missing_indirect_t missing_indirect;
151 autofs_packet_expire_indirect_t expire_indirect;
152 autofs_packet_missing_direct_t missing_direct;
153 autofs_packet_expire_direct_t expire_direct;
156 #define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93,0x66,int)
157 #define AUTOFS_IOC_EXPIRE_INDIRECT AUTOFS_IOC_EXPIRE_MULTI
158 #define AUTOFS_IOC_EXPIRE_DIRECT AUTOFS_IOC_EXPIRE_MULTI
159 #define AUTOFS_IOC_PROTOSUBVER _IOR(0x93,0x67,int)
160 #define AUTOFS_IOC_ASKUMOUNT _IOR(0x93,0x70,int)
163 #endif /* _LINUX_AUTO_FS4_H */