1*53ee8cc1Swenshuai.xi /* -*- c -*- 2*53ee8cc1Swenshuai.xi * linux/include/linux/auto_fs4.h 3*53ee8cc1Swenshuai.xi * 4*53ee8cc1Swenshuai.xi * Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org> 5*53ee8cc1Swenshuai.xi * 6*53ee8cc1Swenshuai.xi * This file is part of the Linux kernel and is made available under 7*53ee8cc1Swenshuai.xi * the terms of the GNU General Public License, version 2, or at your 8*53ee8cc1Swenshuai.xi * option, any later version, incorporated herein by reference. 9*53ee8cc1Swenshuai.xi */ 10*53ee8cc1Swenshuai.xi 11*53ee8cc1Swenshuai.xi #ifndef _LINUX_AUTO_FS4_H 12*53ee8cc1Swenshuai.xi #define _LINUX_AUTO_FS4_H 13*53ee8cc1Swenshuai.xi 14*53ee8cc1Swenshuai.xi /* Include common v3 definitions */ 15*53ee8cc1Swenshuai.xi #include <linux/auto_fs.h> 16*53ee8cc1Swenshuai.xi 17*53ee8cc1Swenshuai.xi /* autofs v4 definitions */ 18*53ee8cc1Swenshuai.xi #undef AUTOFS_PROTO_VERSION 19*53ee8cc1Swenshuai.xi #undef AUTOFS_MIN_PROTO_VERSION 20*53ee8cc1Swenshuai.xi #undef AUTOFS_MAX_PROTO_VERSION 21*53ee8cc1Swenshuai.xi 22*53ee8cc1Swenshuai.xi #define AUTOFS_PROTO_VERSION 5 23*53ee8cc1Swenshuai.xi #define AUTOFS_MIN_PROTO_VERSION 3 24*53ee8cc1Swenshuai.xi #define AUTOFS_MAX_PROTO_VERSION 5 25*53ee8cc1Swenshuai.xi 26*53ee8cc1Swenshuai.xi #define AUTOFS_PROTO_SUBVERSION 0 27*53ee8cc1Swenshuai.xi 28*53ee8cc1Swenshuai.xi /* Mask for expire behaviour */ 29*53ee8cc1Swenshuai.xi #define AUTOFS_EXP_IMMEDIATE 1 30*53ee8cc1Swenshuai.xi #define AUTOFS_EXP_LEAVES 2 31*53ee8cc1Swenshuai.xi 32*53ee8cc1Swenshuai.xi /* Daemon notification packet types */ 33*53ee8cc1Swenshuai.xi enum autofs_notify { 34*53ee8cc1Swenshuai.xi NFY_NONE, 35*53ee8cc1Swenshuai.xi NFY_MOUNT, 36*53ee8cc1Swenshuai.xi NFY_EXPIRE 37*53ee8cc1Swenshuai.xi }; 38*53ee8cc1Swenshuai.xi 39*53ee8cc1Swenshuai.xi /* Kernel protocol version 4 packet types */ 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xi /* Expire entry (umount request) */ 42*53ee8cc1Swenshuai.xi #define autofs_ptype_expire_multi 2 43*53ee8cc1Swenshuai.xi 44*53ee8cc1Swenshuai.xi /* Kernel protocol version 5 packet types */ 45*53ee8cc1Swenshuai.xi 46*53ee8cc1Swenshuai.xi /* Indirect mount missing and expire requests. */ 47*53ee8cc1Swenshuai.xi #define autofs_ptype_missing_indirect 3 48*53ee8cc1Swenshuai.xi #define autofs_ptype_expire_indirect 4 49*53ee8cc1Swenshuai.xi 50*53ee8cc1Swenshuai.xi /* Direct mount missing and expire requests */ 51*53ee8cc1Swenshuai.xi #define autofs_ptype_missing_direct 5 52*53ee8cc1Swenshuai.xi #define autofs_ptype_expire_direct 6 53*53ee8cc1Swenshuai.xi 54*53ee8cc1Swenshuai.xi /* v4 multi expire (via pipe) */ 55*53ee8cc1Swenshuai.xi struct autofs_packet_expire_multi { 56*53ee8cc1Swenshuai.xi struct autofs_packet_hdr hdr; 57*53ee8cc1Swenshuai.xi autofs_wqt_t wait_queue_token; 58*53ee8cc1Swenshuai.xi int len; 59*53ee8cc1Swenshuai.xi char name[NAME_MAX+1]; 60*53ee8cc1Swenshuai.xi }; 61*53ee8cc1Swenshuai.xi 62*53ee8cc1Swenshuai.xi union autofs_packet_union { 63*53ee8cc1Swenshuai.xi struct autofs_packet_hdr hdr; 64*53ee8cc1Swenshuai.xi struct autofs_packet_missing missing; 65*53ee8cc1Swenshuai.xi struct autofs_packet_expire expire; 66*53ee8cc1Swenshuai.xi struct autofs_packet_expire_multi expire_multi; 67*53ee8cc1Swenshuai.xi }; 68*53ee8cc1Swenshuai.xi 69*53ee8cc1Swenshuai.xi /* autofs v5 common packet struct */ 70*53ee8cc1Swenshuai.xi struct autofs_v5_packet { 71*53ee8cc1Swenshuai.xi struct autofs_packet_hdr hdr; 72*53ee8cc1Swenshuai.xi autofs_wqt_t wait_queue_token; 73*53ee8cc1Swenshuai.xi __u32 dev; 74*53ee8cc1Swenshuai.xi __u64 ino; 75*53ee8cc1Swenshuai.xi __u32 uid; 76*53ee8cc1Swenshuai.xi __u32 gid; 77*53ee8cc1Swenshuai.xi __u32 pid; 78*53ee8cc1Swenshuai.xi __u32 tgid; 79*53ee8cc1Swenshuai.xi __u32 len; 80*53ee8cc1Swenshuai.xi char name[NAME_MAX+1]; 81*53ee8cc1Swenshuai.xi }; 82*53ee8cc1Swenshuai.xi 83*53ee8cc1Swenshuai.xi typedef struct autofs_v5_packet autofs_packet_missing_indirect_t; 84*53ee8cc1Swenshuai.xi typedef struct autofs_v5_packet autofs_packet_expire_indirect_t; 85*53ee8cc1Swenshuai.xi typedef struct autofs_v5_packet autofs_packet_missing_direct_t; 86*53ee8cc1Swenshuai.xi typedef struct autofs_v5_packet autofs_packet_expire_direct_t; 87*53ee8cc1Swenshuai.xi 88*53ee8cc1Swenshuai.xi union autofs_v5_packet_union { 89*53ee8cc1Swenshuai.xi struct autofs_packet_hdr hdr; 90*53ee8cc1Swenshuai.xi struct autofs_v5_packet v5_packet; 91*53ee8cc1Swenshuai.xi autofs_packet_missing_indirect_t missing_indirect; 92*53ee8cc1Swenshuai.xi autofs_packet_expire_indirect_t expire_indirect; 93*53ee8cc1Swenshuai.xi autofs_packet_missing_direct_t missing_direct; 94*53ee8cc1Swenshuai.xi autofs_packet_expire_direct_t expire_direct; 95*53ee8cc1Swenshuai.xi }; 96*53ee8cc1Swenshuai.xi 97*53ee8cc1Swenshuai.xi #define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93,0x66,int) 98*53ee8cc1Swenshuai.xi #define AUTOFS_IOC_EXPIRE_INDIRECT AUTOFS_IOC_EXPIRE_MULTI 99*53ee8cc1Swenshuai.xi #define AUTOFS_IOC_EXPIRE_DIRECT AUTOFS_IOC_EXPIRE_MULTI 100*53ee8cc1Swenshuai.xi #define AUTOFS_IOC_PROTOSUBVER _IOR(0x93,0x67,int) 101*53ee8cc1Swenshuai.xi #define AUTOFS_IOC_ASKREGHOST _IOR(0x93,0x68,int) 102*53ee8cc1Swenshuai.xi #define AUTOFS_IOC_TOGGLEREGHOST _IOR(0x93,0x69,int) 103*53ee8cc1Swenshuai.xi #define AUTOFS_IOC_ASKUMOUNT _IOR(0x93,0x70,int) 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi 106*53ee8cc1Swenshuai.xi #endif /* _LINUX_AUTO_FS4_H */ 107