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