130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ncp_fs.h 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (C) 1995, 1996 by Volker Lendecke 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _LINUX_NCP_FS_H 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _LINUX_NCP_FS_H 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/fs.h> 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/in.h> 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/magic.h> 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/ipx.h> 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/ncp_no.h> 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ioctl commands 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_ioctl_request { 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int function; 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int size; 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char __user *data; 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_fs_info { 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int version; 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct sockaddr_ipx addr; 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __kernel_uid_t mounted_uid; 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int connection; /* Connection number the server assigned us */ 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int buffer_size; /* The negotiated buffer size, to be 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng used for read/write requests! */ 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int volume_number; 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 directory_id; 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_fs_info_v2 { 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int version; 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned long mounted_uid; 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int connection; 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int buffer_size; 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int volume_number; 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 directory_id; 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 dummy1; 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 dummy2; 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 dummy3; 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_sign_init 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng{ 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char sign_root[8]; 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char sign_last[16]; 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_lock_ioctl 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng{ 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_LOCK_LOG 0 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_LOCK_SH 1 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_LOCK_EX 2 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_LOCK_CLEAR 256 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int cmd; 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int origin; 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int offset; 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int length; 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_LOCK_DEFAULT_TIMEOUT 18 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_LOCK_MAX_TIMEOUT 180 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int timeout; 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_setroot_ioctl 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng{ 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int volNumber; 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int namespace; 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __le32 dirEntNum; 8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_objectname_ioctl 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng{ 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_AUTH_NONE 0x00 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_AUTH_BIND 0x31 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_AUTH_NDS 0x32 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int auth_type; 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng size_t object_name_len; 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng void __user * object_name; /* a userspace data, in most cases user name */ 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_privatedata_ioctl 9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng{ 9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng size_t len; 9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng void __user * data; /* ~1000 for NDS */ 9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* NLS charsets by ioctl */ 10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOCSNAME_LEN 20 10130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_nls_ioctl 10230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng{ 10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char codepage[NCP_IOCSNAME_LEN+1]; 10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char iocharset[NCP_IOCSNAME_LEN+1]; 10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 10630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_NCPREQUEST _IOR('n', 1, struct ncp_ioctl_request) 10830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_GETMOUNTUID _IOW('n', 2, __kernel_old_uid_t) 10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_GETMOUNTUID2 _IOW('n', 2, unsigned long) 11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_CONN_LOGGED_IN _IO('n', 3) 11230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_GET_FS_INFO_VERSION (1) 11430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_GET_FS_INFO _IOWR('n', 4, struct ncp_fs_info) 11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_GET_FS_INFO_VERSION_V2 (2) 11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_GET_FS_INFO_V2 _IOWR('n', 4, struct ncp_fs_info_v2) 11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_SIGN_INIT _IOR('n', 5, struct ncp_sign_init) 11930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_SIGN_WANTED _IOR('n', 6, int) 12030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_SET_SIGN_WANTED _IOW('n', 6, int) 12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 12230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_LOCKUNLOCK _IOR('n', 7, struct ncp_lock_ioctl) 12330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 12430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_GETROOT _IOW('n', 8, struct ncp_setroot_ioctl) 12530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_SETROOT _IOR('n', 8, struct ncp_setroot_ioctl) 12630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 12730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_GETOBJECTNAME _IOWR('n', 9, struct ncp_objectname_ioctl) 12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_SETOBJECTNAME _IOR('n', 9, struct ncp_objectname_ioctl) 12930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_GETPRIVATEDATA _IOWR('n', 10, struct ncp_privatedata_ioctl) 13030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_SETPRIVATEDATA _IOR('n', 10, struct ncp_privatedata_ioctl) 13130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 13230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_GETCHARSETS _IOWR('n', 11, struct ncp_nls_ioctl) 13330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_SETCHARSETS _IOR('n', 11, struct ncp_nls_ioctl) 13430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_GETDENTRYTTL _IOW('n', 12, __u32) 13630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_IOC_SETDENTRYTTL _IOR('n', 12, __u32) 13730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 13830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 13930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * The packet size to allocate. One page should be enough. 14030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 14130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_PACKET_SIZE 4070 14230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 14330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_MAXPATHLEN 255 14430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_MAXNAMELEN 14 14530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 14630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _LINUX_NCP_FS_H */ 147