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 */