Home | History | Annotate | Download | only in linux
      1 /* -*- c -*-
      2  * linux/include/linux/auto_fs4.h
      3  *
      4  * Copyright 1999-2000 Jeremy Fitzhardinge <jeremy (at) 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 
     22 #define AUTOFS_PROTO_VERSION		5
     23 #define AUTOFS_MIN_PROTO_VERSION	3
     24 #define AUTOFS_MAX_PROTO_VERSION	5
     25 
     26 #define AUTOFS_PROTO_SUBVERSION		0
     27 
     28 /* Mask for expire behaviour */
     29 #define AUTOFS_EXP_IMMEDIATE		1
     30 #define AUTOFS_EXP_LEAVES		2
     31 
     32 /* Daemon notification packet types */
     33 enum autofs_notify {
     34 	NFY_NONE,
     35 	NFY_MOUNT,
     36 	NFY_EXPIRE
     37 };
     38 
     39 /* Kernel protocol version 4 packet types */
     40 
     41 /* Expire entry (umount request) */
     42 #define autofs_ptype_expire_multi	2
     43 
     44 /* Kernel protocol version 5 packet types */
     45 
     46 /* Indirect mount missing and expire requests. */
     47 #define autofs_ptype_missing_indirect	3
     48 #define autofs_ptype_expire_indirect	4
     49 
     50 /* Direct mount missing and expire requests */
     51 #define autofs_ptype_missing_direct	5
     52 #define autofs_ptype_expire_direct	6
     53 
     54 /* v4 multi expire (via pipe) */
     55 struct autofs_packet_expire_multi {
     56 	struct autofs_packet_hdr hdr;
     57         autofs_wqt_t wait_queue_token;
     58 	int len;
     59 	char name[NAME_MAX+1];
     60 };
     61 
     62 union autofs_packet_union {
     63 	struct autofs_packet_hdr hdr;
     64 	struct autofs_packet_missing missing;
     65 	struct autofs_packet_expire expire;
     66 	struct autofs_packet_expire_multi expire_multi;
     67 };
     68 
     69 /* autofs v5 common packet struct */
     70 struct autofs_v5_packet {
     71 	struct autofs_packet_hdr hdr;
     72 	autofs_wqt_t wait_queue_token;
     73 	__u32 dev;
     74 	__u64 ino;
     75 	__u32 uid;
     76 	__u32 gid;
     77 	__u32 pid;
     78 	__u32 tgid;
     79 	__u32 len;
     80 	char name[NAME_MAX+1];
     81 };
     82 
     83 typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
     84 typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
     85 typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
     86 typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
     87 
     88 union autofs_v5_packet_union {
     89 	struct autofs_packet_hdr hdr;
     90 	struct autofs_v5_packet v5_packet;
     91 	autofs_packet_missing_indirect_t missing_indirect;
     92 	autofs_packet_expire_indirect_t expire_indirect;
     93 	autofs_packet_missing_direct_t missing_direct;
     94 	autofs_packet_expire_direct_t expire_direct;
     95 };
     96 
     97 #define AUTOFS_IOC_EXPIRE_MULTI		_IOW(0x93,0x66,int)
     98 #define AUTOFS_IOC_EXPIRE_INDIRECT	AUTOFS_IOC_EXPIRE_MULTI
     99 #define AUTOFS_IOC_EXPIRE_DIRECT	AUTOFS_IOC_EXPIRE_MULTI
    100 #define AUTOFS_IOC_PROTOSUBVER		_IOR(0x93,0x67,int)
    101 #define AUTOFS_IOC_ASKREGHOST           _IOR(0x93,0x68,int)
    102 #define AUTOFS_IOC_TOGGLEREGHOST        _IOR(0x93,0x69,int)
    103 #define AUTOFS_IOC_ASKUMOUNT		_IOR(0x93,0x70,int)
    104 
    105 
    106 #endif /* _LINUX_AUTO_FS4_H */
    107