Home | History | Annotate | Download | only in linux
      1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2 /*
      3  *  ncp_fs.h
      4  *
      5  *  Copyright (C) 1995, 1996 by Volker Lendecke
      6  *
      7  */
      8 
      9 #ifndef _LINUX_NCP_FS_H
     10 #define _LINUX_NCP_FS_H
     11 
     12 #include <linux/fs.h>
     13 #include <linux/in.h>
     14 #include <linux/types.h>
     15 #include <linux/magic.h>
     16 
     17 #include <linux/ipx.h>
     18 #include <linux/ncp_no.h>
     19 
     20 /*
     21  * ioctl commands
     22  */
     23 
     24 struct ncp_ioctl_request {
     25 	unsigned int function;
     26 	unsigned int size;
     27 	char __user *data;
     28 };
     29 
     30 struct ncp_fs_info {
     31 	int version;
     32 	struct sockaddr_ipx addr;
     33 	__kernel_uid_t mounted_uid;
     34 	int connection;		/* Connection number the server assigned us */
     35 	int buffer_size;	/* The negotiated buffer size, to be
     36 				   used for read/write requests! */
     37 
     38 	int volume_number;
     39 	__le32 directory_id;
     40 };
     41 
     42 struct ncp_fs_info_v2 {
     43 	int version;
     44 	unsigned long mounted_uid;
     45 	unsigned int connection;
     46 	unsigned int buffer_size;
     47 
     48 	unsigned int volume_number;
     49 	__le32 directory_id;
     50 
     51 	__u32 dummy1;
     52 	__u32 dummy2;
     53 	__u32 dummy3;
     54 };
     55 
     56 struct ncp_sign_init
     57 {
     58 	char sign_root[8];
     59 	char sign_last[16];
     60 };
     61 
     62 struct ncp_lock_ioctl
     63 {
     64 #define NCP_LOCK_LOG	0
     65 #define NCP_LOCK_SH	1
     66 #define NCP_LOCK_EX	2
     67 #define NCP_LOCK_CLEAR	256
     68 	int		cmd;
     69 	int		origin;
     70 	unsigned int	offset;
     71 	unsigned int	length;
     72 #define NCP_LOCK_DEFAULT_TIMEOUT	18
     73 #define NCP_LOCK_MAX_TIMEOUT		180
     74 	int		timeout;
     75 };
     76 
     77 struct ncp_setroot_ioctl
     78 {
     79 	int		volNumber;
     80 	int		namespace;
     81 	__le32		dirEntNum;
     82 };
     83 
     84 struct ncp_objectname_ioctl
     85 {
     86 #define NCP_AUTH_NONE	0x00
     87 #define NCP_AUTH_BIND	0x31
     88 #define NCP_AUTH_NDS	0x32
     89 	int		auth_type;
     90 	size_t		object_name_len;
     91 	void __user *	object_name;	/* a userspace data, in most cases user name */
     92 };
     93 
     94 struct ncp_privatedata_ioctl
     95 {
     96 	size_t		len;
     97 	void __user *	data;		/* ~1000 for NDS */
     98 };
     99 
    100 /* NLS charsets by ioctl */
    101 #define NCP_IOCSNAME_LEN 20
    102 struct ncp_nls_ioctl
    103 {
    104 	unsigned char codepage[NCP_IOCSNAME_LEN+1];
    105 	unsigned char iocharset[NCP_IOCSNAME_LEN+1];
    106 };
    107 
    108 #define	NCP_IOC_NCPREQUEST		_IOR('n', 1, struct ncp_ioctl_request)
    109 #define	NCP_IOC_GETMOUNTUID		_IOW('n', 2, __kernel_old_uid_t)
    110 #define NCP_IOC_GETMOUNTUID2		_IOW('n', 2, unsigned long)
    111 
    112 #define NCP_IOC_CONN_LOGGED_IN          _IO('n', 3)
    113 
    114 #define NCP_GET_FS_INFO_VERSION    (1)
    115 #define NCP_IOC_GET_FS_INFO             _IOWR('n', 4, struct ncp_fs_info)
    116 #define NCP_GET_FS_INFO_VERSION_V2 (2)
    117 #define NCP_IOC_GET_FS_INFO_V2		_IOWR('n', 4, struct ncp_fs_info_v2)
    118 
    119 #define NCP_IOC_SIGN_INIT		_IOR('n', 5, struct ncp_sign_init)
    120 #define NCP_IOC_SIGN_WANTED		_IOR('n', 6, int)
    121 #define NCP_IOC_SET_SIGN_WANTED		_IOW('n', 6, int)
    122 
    123 #define NCP_IOC_LOCKUNLOCK		_IOR('n', 7, struct ncp_lock_ioctl)
    124 
    125 #define NCP_IOC_GETROOT			_IOW('n', 8, struct ncp_setroot_ioctl)
    126 #define NCP_IOC_SETROOT			_IOR('n', 8, struct ncp_setroot_ioctl)
    127 
    128 #define NCP_IOC_GETOBJECTNAME		_IOWR('n', 9, struct ncp_objectname_ioctl)
    129 #define NCP_IOC_SETOBJECTNAME		_IOR('n', 9, struct ncp_objectname_ioctl)
    130 #define NCP_IOC_GETPRIVATEDATA		_IOWR('n', 10, struct ncp_privatedata_ioctl)
    131 #define NCP_IOC_SETPRIVATEDATA		_IOR('n', 10, struct ncp_privatedata_ioctl)
    132 
    133 #define NCP_IOC_GETCHARSETS		_IOWR('n', 11, struct ncp_nls_ioctl)
    134 #define NCP_IOC_SETCHARSETS		_IOR('n', 11, struct ncp_nls_ioctl)
    135 
    136 #define NCP_IOC_GETDENTRYTTL		_IOW('n', 12, __u32)
    137 #define NCP_IOC_SETDENTRYTTL		_IOR('n', 12, __u32)
    138 
    139 /*
    140  * The packet size to allocate. One page should be enough.
    141  */
    142 #define NCP_PACKET_SIZE 4070
    143 
    144 #define NCP_MAXPATHLEN 255
    145 #define NCP_MAXNAMELEN 14
    146 
    147 #endif				/* _LINUX_NCP_FS_H */
    148