at v4.16 3.4 kB view raw
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 24struct ncp_ioctl_request { 25 unsigned int function; 26 unsigned int size; 27 char __user *data; 28}; 29 30struct 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 42struct 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 56struct ncp_sign_init 57{ 58 char sign_root[8]; 59 char sign_last[16]; 60}; 61 62struct 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 77struct ncp_setroot_ioctl 78{ 79 int volNumber; 80 int namespace; 81 __le32 dirEntNum; 82}; 83 84struct 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 94struct 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 102struct 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 */