Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


auto_fs4.h
001: /* -*- c -*-
002:  * linux/include/linux/auto_fs4.h
003:  *
004:  * Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
005:  *
006:  * This file is part of the Linux kernel and is made available under
007:  * the terms of the GNU General Public License, version 2, or at your
008:  * option, any later version, incorporated herein by reference.
009:  */
010: 
011: #ifndef _LINUX_AUTO_FS4_H
012: #define _LINUX_AUTO_FS4_H
013: 
014: /* Include common v3 definitions */
015: #include <linux/types.h>
016: #include <linux/auto_fs.h>
017: 
018: /* autofs v4 definitions */
019: #undef AUTOFS_PROTO_VERSION
020: #undef AUTOFS_MIN_PROTO_VERSION
021: #undef AUTOFS_MAX_PROTO_VERSION
022: 
023: #define AUTOFS_PROTO_VERSION            5
024: #define AUTOFS_MIN_PROTO_VERSION        3
025: #define AUTOFS_MAX_PROTO_VERSION        5
026: 
027: #define AUTOFS_PROTO_SUBVERSION         2
028: 
029: /* Mask for expire behaviour */
030: #define AUTOFS_EXP_IMMEDIATE            1
031: #define AUTOFS_EXP_LEAVES               2
032: 
033: #define AUTOFS_TYPE_ANY                 0U
034: #define AUTOFS_TYPE_INDIRECT            1U
035: #define AUTOFS_TYPE_DIRECT              2U
036: #define AUTOFS_TYPE_OFFSET              4U
037: 
038: static __inline__ void set_autofs_type_indirect(unsigned int *type)
039: {
040:         *type = AUTOFS_TYPE_INDIRECT;
041:         return;
042: }
043: 
044: static __inline__ unsigned int autofs_type_indirect(unsigned int type)
045: {
046:         return (type == AUTOFS_TYPE_INDIRECT);
047: }
048: 
049: static __inline__ void set_autofs_type_direct(unsigned int *type)
050: {
051:         *type = AUTOFS_TYPE_DIRECT;
052:         return;
053: }
054: 
055: static __inline__ unsigned int autofs_type_direct(unsigned int type)
056: {
057:         return (type == AUTOFS_TYPE_DIRECT);
058: }
059: 
060: static __inline__ void set_autofs_type_offset(unsigned int *type)
061: {
062:         *type = AUTOFS_TYPE_OFFSET;
063:         return;
064: }
065: 
066: static __inline__ unsigned int autofs_type_offset(unsigned int type)
067: {
068:         return (type == AUTOFS_TYPE_OFFSET);
069: }
070: 
071: static __inline__ unsigned int autofs_type_trigger(unsigned int type)
072: {
073:         return (type == AUTOFS_TYPE_DIRECT || type == AUTOFS_TYPE_OFFSET);
074: }
075: 
076: /*
077:  * This isn't really a type as we use it to say "no type set" to
078:  * indicate we want to search for "any" mount in the
079:  * autofs_dev_ioctl_ismountpoint() device ioctl function.
080:  */
081: static __inline__ void set_autofs_type_any(unsigned int *type)
082: {
083:         *type = AUTOFS_TYPE_ANY;
084:         return;
085: }
086: 
087: static __inline__ unsigned int autofs_type_any(unsigned int type)
088: {
089:         return (type == AUTOFS_TYPE_ANY);
090: }
091: 
092: /* Daemon notification packet types */
093: enum autofs_notify {
094:         NFY_NONE,
095:         NFY_MOUNT,
096:         NFY_EXPIRE
097: };
098: 
099: /* Kernel protocol version 4 packet types */
100: 
101: /* Expire entry (umount request) */
102: #define autofs_ptype_expire_multi       2
103: 
104: /* Kernel protocol version 5 packet types */
105: 
106: /* Indirect mount missing and expire requests. */
107: #define autofs_ptype_missing_indirect   3
108: #define autofs_ptype_expire_indirect    4
109: 
110: /* Direct mount missing and expire requests */
111: #define autofs_ptype_missing_direct     5
112: #define autofs_ptype_expire_direct      6
113: 
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;
118:         int len;
119:         char name[NAME_MAX+1];
120: };
121: 
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;
127: };
128: 
129: /* autofs v5 common packet struct */
130: struct autofs_v5_packet {
131:         struct autofs_packet_hdr hdr;
132:         autofs_wqt_t wait_queue_token;
133:         __u32 dev;
134:         __u64 ino;
135:         __u32 uid;
136:         __u32 gid;
137:         __u32 pid;
138:         __u32 tgid;
139:         __u32 len;
140:         char name[NAME_MAX+1];
141: };
142: 
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;
147: 
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;
155: };
156: 
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)
162: 
163: 
164: #endif /* _LINUX_AUTO_FS4_H */
165: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/