]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - include/linux/auto_fs4.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6
[mirror_ubuntu-artful-kernel.git] / include / linux / auto_fs4.h
CommitLineData
1da177e4
LT
1/* -*- c -*-
2 * linux/include/linux/auto_fs4.h
3 *
4 * Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
5 *
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.
9 */
10
11#ifndef _LINUX_AUTO_FS4_H
12#define _LINUX_AUTO_FS4_H
13
14/* Include common v3 definitions */
15#include <linux/auto_fs.h>
16
17/* autofs v4 definitions */
18#undef AUTOFS_PROTO_VERSION
19#undef AUTOFS_MIN_PROTO_VERSION
20#undef AUTOFS_MAX_PROTO_VERSION
21
5c0a32fc 22#define AUTOFS_PROTO_VERSION 5
1da177e4 23#define AUTOFS_MIN_PROTO_VERSION 3
5c0a32fc 24#define AUTOFS_MAX_PROTO_VERSION 5
1da177e4 25
8d7b48e0 26#define AUTOFS_PROTO_SUBVERSION 1
1da177e4
LT
27
28/* Mask for expire behaviour */
29#define AUTOFS_EXP_IMMEDIATE 1
30#define AUTOFS_EXP_LEAVES 2
31
a92daf6b
IK
32#define AUTOFS_TYPE_ANY 0U
33#define AUTOFS_TYPE_INDIRECT 1U
34#define AUTOFS_TYPE_DIRECT 2U
35#define AUTOFS_TYPE_OFFSET 4U
36
37static inline void set_autofs_type_indirect(unsigned int *type)
38{
39 *type = AUTOFS_TYPE_INDIRECT;
40 return;
41}
42
43static inline unsigned int autofs_type_indirect(unsigned int type)
44{
45 return (type == AUTOFS_TYPE_INDIRECT);
46}
47
48static inline void set_autofs_type_direct(unsigned int *type)
49{
50 *type = AUTOFS_TYPE_DIRECT;
51 return;
52}
53
54static inline unsigned int autofs_type_direct(unsigned int type)
55{
56 return (type == AUTOFS_TYPE_DIRECT);
57}
58
59static inline void set_autofs_type_offset(unsigned int *type)
60{
61 *type = AUTOFS_TYPE_OFFSET;
62 return;
63}
64
65static inline unsigned int autofs_type_offset(unsigned int type)
66{
67 return (type == AUTOFS_TYPE_OFFSET);
68}
69
70static inline unsigned int autofs_type_trigger(unsigned int type)
71{
72 return (type == AUTOFS_TYPE_DIRECT || type == AUTOFS_TYPE_OFFSET);
73}
74
75/*
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.
79 */
80static inline void set_autofs_type_any(unsigned int *type)
81{
82 *type = AUTOFS_TYPE_ANY;
83 return;
84}
85
86static inline unsigned int autofs_type_any(unsigned int type)
87{
88 return (type == AUTOFS_TYPE_ANY);
89}
bb979d7f 90
5c0a32fc
IK
91/* Daemon notification packet types */
92enum autofs_notify {
93 NFY_NONE,
94 NFY_MOUNT,
95 NFY_EXPIRE
96};
97
98/* Kernel protocol version 4 packet types */
99
100/* Expire entry (umount request) */
101#define autofs_ptype_expire_multi 2
102
103/* Kernel protocol version 5 packet types */
104
105/* Indirect mount missing and expire requests. */
106#define autofs_ptype_missing_indirect 3
107#define autofs_ptype_expire_indirect 4
108
109/* Direct mount missing and expire requests */
110#define autofs_ptype_missing_direct 5
111#define autofs_ptype_expire_direct 6
1da177e4
LT
112
113/* v4 multi expire (via pipe) */
114struct autofs_packet_expire_multi {
115 struct autofs_packet_hdr hdr;
116 autofs_wqt_t wait_queue_token;
117 int len;
118 char name[NAME_MAX+1];
119};
120
e8514478
IK
121union 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;
126};
127
5c0a32fc
IK
128/* autofs v5 common packet struct */
129struct autofs_v5_packet {
130 struct autofs_packet_hdr hdr;
131 autofs_wqt_t wait_queue_token;
132 __u32 dev;
133 __u64 ino;
134 __u32 uid;
135 __u32 gid;
136 __u32 pid;
137 __u32 tgid;
138 __u32 len;
139 char name[NAME_MAX+1];
140};
141
142typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
143typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
144typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
145typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
146
e8514478 147union autofs_v5_packet_union {
1da177e4 148 struct autofs_packet_hdr hdr;
5c0a32fc 149 struct autofs_v5_packet v5_packet;
e8514478
IK
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;
1da177e4
LT
154};
155
156#define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93,0x66,int)
5c0a32fc
IK
157#define AUTOFS_IOC_EXPIRE_INDIRECT AUTOFS_IOC_EXPIRE_MULTI
158#define AUTOFS_IOC_EXPIRE_DIRECT AUTOFS_IOC_EXPIRE_MULTI
1da177e4 159#define AUTOFS_IOC_PROTOSUBVER _IOR(0x93,0x67,int)
1da177e4
LT
160#define AUTOFS_IOC_ASKUMOUNT _IOR(0x93,0x70,int)
161
162
163#endif /* _LINUX_AUTO_FS4_H */