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