auto_fs4.h
001:
002:
003:
004: <jeremy@goop.org>
005:
006:
007:
008:
009:
010:
011: #ifndef _LINUX_AUTO_FS4_H
012: #define _LINUX_AUTO_FS4_H
013:
014:
015: #include <linux/types.h>
016: #include <linux/auto_fs.h>
017:
018:
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:
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:
078:
079:
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:
093: enum autofs_notify {
094: NFY_NONE,
095: NFY_MOUNT,
096: NFY_EXPIRE
097: };
098:
099:
100:
101:
102: #define autofs_ptype_expire_multi 2
103:
104:
105:
106:
107: #define autofs_ptype_missing_indirect 3
108: #define autofs_ptype_expire_indirect 4
109:
110:
111: #define autofs_ptype_missing_direct 5
112: #define autofs_ptype_expire_direct 6
113:
114:
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:
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
165:
© Andrew Scott 2006 -
2025,
All Rights Reserved