linux-headers (unknown)

(root)/
include/
linux/
auto_dev-ioctl.h
       1  /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
       2  /*
       3   * Copyright 2008 Red Hat, Inc. All rights reserved.
       4   * Copyright 2008 Ian Kent <raven@themaw.net>
       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_DEV_IOCTL_H
      12  #define _LINUX_AUTO_DEV_IOCTL_H
      13  
      14  #include <linux/auto_fs.h>
      15  #include <linux/string.h>
      16  
      17  #define AUTOFS_DEVICE_NAME		"autofs"
      18  
      19  #define AUTOFS_DEV_IOCTL_VERSION_MAJOR	1
      20  #define AUTOFS_DEV_IOCTL_VERSION_MINOR	1
      21  
      22  #define AUTOFS_DEV_IOCTL_SIZE		sizeof(struct autofs_dev_ioctl)
      23  
      24  /*
      25   * An ioctl interface for autofs mount point control.
      26   */
      27  
      28  struct args_protover {
      29  	__u32	version;
      30  };
      31  
      32  struct args_protosubver {
      33  	__u32	sub_version;
      34  };
      35  
      36  struct args_openmount {
      37  	__u32	devid;
      38  };
      39  
      40  struct args_ready {
      41  	__u32	token;
      42  };
      43  
      44  struct args_fail {
      45  	__u32	token;
      46  	__s32	status;
      47  };
      48  
      49  struct args_setpipefd {
      50  	__s32	pipefd;
      51  };
      52  
      53  struct args_timeout {
      54  	__u64	timeout;
      55  };
      56  
      57  struct args_requester {
      58  	__u32	uid;
      59  	__u32	gid;
      60  };
      61  
      62  struct args_expire {
      63  	__u32	how;
      64  };
      65  
      66  struct args_askumount {
      67  	__u32	may_umount;
      68  };
      69  
      70  struct args_ismountpoint {
      71  	union {
      72  		struct args_in {
      73  			__u32	type;
      74  		} in;
      75  		struct args_out {
      76  			__u32	devid;
      77  			__u32	magic;
      78  		} out;
      79  	};
      80  };
      81  
      82  /*
      83   * All the ioctls use this structure.
      84   * When sending a path size must account for the total length
      85   * of the chunk of memory otherwise it is the size of the
      86   * structure.
      87   */
      88  
      89  struct autofs_dev_ioctl {
      90  	__u32 ver_major;
      91  	__u32 ver_minor;
      92  	__u32 size;		/* total size of data passed in
      93  				 * including this struct */
      94  	__s32 ioctlfd;		/* automount command fd */
      95  
      96  	/* Command parameters */
      97  
      98  	union {
      99  		struct args_protover		protover;
     100  		struct args_protosubver		protosubver;
     101  		struct args_openmount		openmount;
     102  		struct args_ready		ready;
     103  		struct args_fail		fail;
     104  		struct args_setpipefd		setpipefd;
     105  		struct args_timeout		timeout;
     106  		struct args_requester		requester;
     107  		struct args_expire		expire;
     108  		struct args_askumount		askumount;
     109  		struct args_ismountpoint	ismountpoint;
     110  	};
     111  
     112  	char path[0];
     113  };
     114  
     115  static __inline__ void init_autofs_dev_ioctl(struct autofs_dev_ioctl *in)
     116  {
     117  	memset(in, 0, AUTOFS_DEV_IOCTL_SIZE);
     118  	in->ver_major = AUTOFS_DEV_IOCTL_VERSION_MAJOR;
     119  	in->ver_minor = AUTOFS_DEV_IOCTL_VERSION_MINOR;
     120  	in->size = AUTOFS_DEV_IOCTL_SIZE;
     121  	in->ioctlfd = -1;
     122  }
     123  
     124  enum {
     125  	/* Get various version info */
     126  	AUTOFS_DEV_IOCTL_VERSION_CMD = 0x71,
     127  	AUTOFS_DEV_IOCTL_PROTOVER_CMD,
     128  	AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD,
     129  
     130  	/* Open mount ioctl fd */
     131  	AUTOFS_DEV_IOCTL_OPENMOUNT_CMD,
     132  
     133  	/* Close mount ioctl fd */
     134  	AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD,
     135  
     136  	/* Mount/expire status returns */
     137  	AUTOFS_DEV_IOCTL_READY_CMD,
     138  	AUTOFS_DEV_IOCTL_FAIL_CMD,
     139  
     140  	/* Activate/deactivate autofs mount */
     141  	AUTOFS_DEV_IOCTL_SETPIPEFD_CMD,
     142  	AUTOFS_DEV_IOCTL_CATATONIC_CMD,
     143  
     144  	/* Expiry timeout */
     145  	AUTOFS_DEV_IOCTL_TIMEOUT_CMD,
     146  
     147  	/* Get mount last requesting uid and gid */
     148  	AUTOFS_DEV_IOCTL_REQUESTER_CMD,
     149  
     150  	/* Check for eligible expire candidates */
     151  	AUTOFS_DEV_IOCTL_EXPIRE_CMD,
     152  
     153  	/* Request busy status */
     154  	AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD,
     155  
     156  	/* Check if path is a mountpoint */
     157  	AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD,
     158  };
     159  
     160  #define AUTOFS_DEV_IOCTL_VERSION \
     161  	_IOWR(AUTOFS_IOCTL, \
     162  	      AUTOFS_DEV_IOCTL_VERSION_CMD, struct autofs_dev_ioctl)
     163  
     164  #define AUTOFS_DEV_IOCTL_PROTOVER \
     165  	_IOWR(AUTOFS_IOCTL, \
     166  	      AUTOFS_DEV_IOCTL_PROTOVER_CMD, struct autofs_dev_ioctl)
     167  
     168  #define AUTOFS_DEV_IOCTL_PROTOSUBVER \
     169  	_IOWR(AUTOFS_IOCTL, \
     170  	      AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD, struct autofs_dev_ioctl)
     171  
     172  #define AUTOFS_DEV_IOCTL_OPENMOUNT \
     173  	_IOWR(AUTOFS_IOCTL, \
     174  	      AUTOFS_DEV_IOCTL_OPENMOUNT_CMD, struct autofs_dev_ioctl)
     175  
     176  #define AUTOFS_DEV_IOCTL_CLOSEMOUNT \
     177  	_IOWR(AUTOFS_IOCTL, \
     178  	      AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD, struct autofs_dev_ioctl)
     179  
     180  #define AUTOFS_DEV_IOCTL_READY \
     181  	_IOWR(AUTOFS_IOCTL, \
     182  	      AUTOFS_DEV_IOCTL_READY_CMD, struct autofs_dev_ioctl)
     183  
     184  #define AUTOFS_DEV_IOCTL_FAIL \
     185  	_IOWR(AUTOFS_IOCTL, \
     186  	      AUTOFS_DEV_IOCTL_FAIL_CMD, struct autofs_dev_ioctl)
     187  
     188  #define AUTOFS_DEV_IOCTL_SETPIPEFD \
     189  	_IOWR(AUTOFS_IOCTL, \
     190  	      AUTOFS_DEV_IOCTL_SETPIPEFD_CMD, struct autofs_dev_ioctl)
     191  
     192  #define AUTOFS_DEV_IOCTL_CATATONIC \
     193  	_IOWR(AUTOFS_IOCTL, \
     194  	      AUTOFS_DEV_IOCTL_CATATONIC_CMD, struct autofs_dev_ioctl)
     195  
     196  #define AUTOFS_DEV_IOCTL_TIMEOUT \
     197  	_IOWR(AUTOFS_IOCTL, \
     198  	      AUTOFS_DEV_IOCTL_TIMEOUT_CMD, struct autofs_dev_ioctl)
     199  
     200  #define AUTOFS_DEV_IOCTL_REQUESTER \
     201  	_IOWR(AUTOFS_IOCTL, \
     202  	      AUTOFS_DEV_IOCTL_REQUESTER_CMD, struct autofs_dev_ioctl)
     203  
     204  #define AUTOFS_DEV_IOCTL_EXPIRE \
     205  	_IOWR(AUTOFS_IOCTL, \
     206  	      AUTOFS_DEV_IOCTL_EXPIRE_CMD, struct autofs_dev_ioctl)
     207  
     208  #define AUTOFS_DEV_IOCTL_ASKUMOUNT \
     209  	_IOWR(AUTOFS_IOCTL, \
     210  	      AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD, struct autofs_dev_ioctl)
     211  
     212  #define AUTOFS_DEV_IOCTL_ISMOUNTPOINT \
     213  	_IOWR(AUTOFS_IOCTL, \
     214  	      AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD, struct autofs_dev_ioctl)
     215  
     216  #endif	/* _LINUX_AUTO_DEV_IOCTL_H */