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