xref: /plan9/sys/src/cmd/cifs/cifs.h (revision 976d3a687802c08e9dea20e32392e7a12b1f3502)
1671dfc47SDavid du Colombier /* cifs.h */
2671dfc47SDavid du Colombier 
3671dfc47SDavid du Colombier enum {
4671dfc47SDavid du Colombier 	Proot		= 1,		/* LSBs of qid.path for root dir */
5671dfc47SDavid du Colombier 	Pinfo		= 2,		/* LSBs of qid.path for info files */
6671dfc47SDavid du Colombier 	Pshare		= 4,		/* LSBs of qid.path for share dirs */
7671dfc47SDavid du Colombier 	NBHDRLEN	= 4,		/* length of a netbios header */
8671dfc47SDavid du Colombier 	T2HDRLEN	= 64,		/* Transaction2 header length */
9671dfc47SDavid du Colombier 	NO_UID		= 0xffff,	/* initial UID on connect */
10671dfc47SDavid du Colombier 	NO_TID		= 0xffff,	/* initial TID on connect */
11671dfc47SDavid du Colombier 	MTU		= 0xefff,	/* our MTU */
12671dfc47SDavid du Colombier 	CACHETIME	= 2,		/* seconds read-ahead is valid for */
13671dfc47SDavid du Colombier 	CIFS_FNAME_MAX	= 0xff,		/* max file path component len */
14671dfc47SDavid du Colombier 	OVERHEAD	= 80,		/* max packet overhead when reading & writing */
15671dfc47SDavid du Colombier 	IDLE_TIME	= 10,		/* keepalive send rate in mins */
16671dfc47SDavid du Colombier 	NBNSTOUT	= 300,		/* Netbios Name Service Timeout (300ms x 3retrys) */
17671dfc47SDavid du Colombier 	NBRPCTOUT	= 45*60*1000,	/* Netbios RPC Timeout (45sec) */
18671dfc47SDavid du Colombier 	MAX_SHARES	= 4096,		/* static table of shares attached */
19671dfc47SDavid du Colombier 	RAP_ERR_MOREINFO= 234,		/* non-error code, more info to be fetched */
20671dfc47SDavid du Colombier 	MAX_DFS_PATH	= 512,		/* MS says never more than 250 chars... */
21671dfc47SDavid du Colombier };
22671dfc47SDavid du Colombier 
23671dfc47SDavid du Colombier enum {
24671dfc47SDavid du Colombier 	SMB_COM_CREATE_DIRECTORY	= 0x00,
25671dfc47SDavid du Colombier 	SMB_COM_DELETE_DIRECTORY	= 0x01,
26671dfc47SDavid du Colombier 	SMB_COM_OPEN			= 0x02,
27671dfc47SDavid du Colombier 	SMB_COM_CREATE			= 0x03,
28671dfc47SDavid du Colombier 	SMB_COM_CLOSE			= 0x04,
29671dfc47SDavid du Colombier 	SMB_COM_FLUSH			= 0x05,
30671dfc47SDavid du Colombier 	SMB_COM_DELETE			= 0x06,
31671dfc47SDavid du Colombier 	SMB_COM_RENAME			= 0x07,
32671dfc47SDavid du Colombier 	SMB_COM_QUERY_INFORMATION	= 0x08,
33671dfc47SDavid du Colombier 	SMB_COM_SET_INFORMATION		= 0x09,
34671dfc47SDavid du Colombier 	SMB_COM_READ			= 0x0A,
35671dfc47SDavid du Colombier 	SMB_COM_WRITE			= 0x0B,
36671dfc47SDavid du Colombier 	SMB_COM_LOCK_BYTE_RANGE		= 0x0C,
37671dfc47SDavid du Colombier 	SMB_COM_UNLOCK_BYTE_RANGE	= 0x0D,
38671dfc47SDavid du Colombier 	SMB_COM_CREATE_TEMPORARY	= 0x0E,
39671dfc47SDavid du Colombier 	SMB_COM_CREATE_NEW		= 0x0F,
40671dfc47SDavid du Colombier 	SMB_COM_CHECK_DIRECTORY		= 0x10,
41671dfc47SDavid du Colombier 	SMB_COM_PROCESS_EXIT		= 0x11,
42671dfc47SDavid du Colombier 	SMB_COM_SEEK			= 0x12,
43671dfc47SDavid du Colombier 	SMB_COM_LOCK_AND_READ		= 0x13,
44671dfc47SDavid du Colombier 	SMB_COM_WRITE_AND_UNLOCK	= 0x14,
45671dfc47SDavid du Colombier 	SMB_COM_READ_RAW		= 0x1A,
46671dfc47SDavid du Colombier 	SMB_COM_READ_MPX		= 0x1B,
47671dfc47SDavid du Colombier 	SMB_COM_READ_MPX_SECONDARY	= 0x1C,
48671dfc47SDavid du Colombier 	SMB_COM_WRITE_RAW		= 0x1D,
49671dfc47SDavid du Colombier 	SMB_COM_WRITE_MPX		= 0x1E,
50671dfc47SDavid du Colombier 	SMB_COM_WRITE_MPX_SECONDARY	= 0x1F,
51671dfc47SDavid du Colombier 	SMB_COM_WRITE_COMPLETE		= 0x20,
52671dfc47SDavid du Colombier 	SMB_COM_QUERY_SERVER		= 0x21,
53671dfc47SDavid du Colombier 	SMB_COM_SET_INFORMATION2	= 0x22,
54671dfc47SDavid du Colombier 	SMB_COM_QUERY_INFORMATION2	= 0x23,
55671dfc47SDavid du Colombier 	SMB_COM_LOCKING_ANDX		= 0x24,
56671dfc47SDavid du Colombier 	SMB_COM_TRANSACTION		= 0x25,
57671dfc47SDavid du Colombier 	SMB_COM_TRANSACTION_SECONDARY	= 0x26,
58671dfc47SDavid du Colombier 	SMB_COM_IOCTL			= 0x27,
59671dfc47SDavid du Colombier 	SMB_COM_IOCTL_SECONDARY		= 0x28,
60671dfc47SDavid du Colombier 	SMB_COM_COPY			= 0x29,
61671dfc47SDavid du Colombier 	SMB_COM_MOVE			= 0x2A,
62671dfc47SDavid du Colombier 	SMB_COM_ECHO			= 0x2B,
63671dfc47SDavid du Colombier 	SMB_COM_WRITE_AND_CLOSE		= 0x2C,
64671dfc47SDavid du Colombier 	SMB_COM_OPEN_ANDX		= 0x2D,
65671dfc47SDavid du Colombier 	SMB_COM_READ_ANDX		= 0x2E,
66671dfc47SDavid du Colombier 	SMB_COM_WRITE_ANDX		= 0x2F,
67671dfc47SDavid du Colombier 	SMB_COM_NEW_FILE_SIZE		= 0x30,
68671dfc47SDavid du Colombier 	SMB_COM_CLOSE_AND_TREE_DISC	= 0x31,
69671dfc47SDavid du Colombier 	SMB_COM_TRANSACTION2		= 0x32,
70671dfc47SDavid du Colombier 	SMB_COM_TRANSACTION2_SECONDARY	= 0x33,
71671dfc47SDavid du Colombier 	SMB_COM_FIND_CLOSE2		= 0x34,
72671dfc47SDavid du Colombier 	SMB_COM_FIND_NOTIFY_CLOSE	= 0x35,
73671dfc47SDavid du Colombier 	SMB_COM_TREE_CONNECT		= 0x70,
74671dfc47SDavid du Colombier 	SMB_COM_TREE_DISCONNECT		= 0x71,
75671dfc47SDavid du Colombier 	SMB_COM_NEGOTIATE		= 0x72,
76671dfc47SDavid du Colombier 	SMB_COM_SESSION_SETUP_ANDX	= 0x73,
77671dfc47SDavid du Colombier 	SMB_COM_LOGOFF_ANDX		= 0x74,
78671dfc47SDavid du Colombier 	SMB_COM_TREE_CONNECT_ANDX	= 0x75,
79671dfc47SDavid du Colombier 	SMB_COM_QUERY_INFORMATION_DISK	= 0x80,
80671dfc47SDavid du Colombier 	SMB_COM_SEARCH			= 0x81,
81671dfc47SDavid du Colombier 	SMB_COM_FIND			= 0x82,
82671dfc47SDavid du Colombier 	SMB_COM_FIND_UNIQUE		= 0x83,
83671dfc47SDavid du Colombier 	SMB_COM_FIND_CLOSE		= 0x84,
84671dfc47SDavid du Colombier 	SMB_COM_NT_TRANSACT		= 0xA0,
85671dfc47SDavid du Colombier 	SMB_COM_NT_TRANSACT_SECONDARY	= 0xA1,
86671dfc47SDavid du Colombier 	SMB_COM_NT_CREATE_ANDX		= 0xA2,
87671dfc47SDavid du Colombier 	SMB_COM_NT_CANCEL		= 0xA4,
88671dfc47SDavid du Colombier 	SMB_COM_NT_RENAME		= 0xA5,
89671dfc47SDavid du Colombier 	SMB_COM_OPEN_PRINT_FILE		= 0xC0,
90671dfc47SDavid du Colombier 	SMB_COM_WRITE_PRINT_FILE	= 0xC1,
91671dfc47SDavid du Colombier 	SMB_COM_CLOSE_PRINT_FILE	= 0xC2,
92671dfc47SDavid du Colombier 	SMB_COM_GET_PRINT_QUEUE		= 0xC3,
93671dfc47SDavid du Colombier 	SMB_COM_READ_BULK		= 0xD8,
94671dfc47SDavid du Colombier 	SMB_COM_WRITE_BULK		= 0xD9,
95671dfc47SDavid du Colombier 	SMB_COM_WRITE_BULK_DATA		= 0xDA,
96671dfc47SDavid du Colombier 
97671dfc47SDavid du Colombier 	TRANS2_OPEN2			= 0x00,
98671dfc47SDavid du Colombier 	TRANS2_FIND_FIRST2		= 0x01,
99671dfc47SDavid du Colombier 	TRANS2_FIND_NEXT2		= 0x02,
100671dfc47SDavid du Colombier 	TRANS2_QUERY_FS_INFORMATION	= 0x03,
101671dfc47SDavid du Colombier 	TRANS2_QUERY_PATH_INFORMATION	= 0x05,
102671dfc47SDavid du Colombier 	TRANS2_SET_PATH_INFORMATION	= 0x06,
103671dfc47SDavid du Colombier 	TRANS2_QUERY_FILE_INFORMATION	= 0x07,
104671dfc47SDavid du Colombier 	TRANS2_SET_FILE_INFORMATION	= 0x08,
105671dfc47SDavid du Colombier 	TRANS2_CREATE_DIRECTORY 	= 0x0D,
106671dfc47SDavid du Colombier 	TRANS2_SESSION_SETUP		= 0x0E,
107671dfc47SDavid du Colombier 	TRANS2_GET_DFS_REFERRAL		= 0x10,
108671dfc47SDavid du Colombier 
109671dfc47SDavid du Colombier 	NT_TRANSACT_CREATE 		= 0x01,
110671dfc47SDavid du Colombier 	NT_TRANSACT_IOCTL 		= 0x02,
111671dfc47SDavid du Colombier 	NT_TRANSACT_SET_SECURITY_DESC 	= 0x03,
112671dfc47SDavid du Colombier 	NT_TRANSACT_NOTIFY_CHANGE 	= 0x04,
113671dfc47SDavid du Colombier 	NT_TRANSACT_RENAME 		= 0x05,
114671dfc47SDavid du Colombier 	NT_TRANSACT_QUERY_SECURITY_DESC = 0x06
115671dfc47SDavid du Colombier };
116671dfc47SDavid du Colombier 
117671dfc47SDavid du Colombier enum {						/* CIFS flags */
118671dfc47SDavid du Colombier 	FL_CASELESS_NAMES	= 1<<3,
119671dfc47SDavid du Colombier 	FL_CANNONICAL_NAMES	= 1<<4,
120671dfc47SDavid du Colombier 
121671dfc47SDavid du Colombier 	FL2_KNOWS_LONG_NAMES	= 1<<0,
122671dfc47SDavid du Colombier 	FL2_PACKET_SIGNATURES	= 1<<2,
123671dfc47SDavid du Colombier 	FL2_HAS_LONG_NAMES	= 1<<6,
124671dfc47SDavid du Colombier 	FL2_EXTENDED_SECURITY	= 1<<11,
125671dfc47SDavid du Colombier 	FL2_DFS			= 1<<12,
126671dfc47SDavid du Colombier 	FL2_PAGEING_IO		= 1<<13,	/* allow read of exec only files */
127671dfc47SDavid du Colombier 	FL2_NT_ERRCODES		= 1<<14,
128671dfc47SDavid du Colombier 	FL2_UNICODE		= 1<<15,
129671dfc47SDavid du Colombier };
130671dfc47SDavid du Colombier 
131671dfc47SDavid du Colombier enum {						/* Capabilities Negoiated */
132671dfc47SDavid du Colombier 	CAP_RAW_MODE		= 1,
133671dfc47SDavid du Colombier 	CAP_MPX_MODE		= 1<<1,
134671dfc47SDavid du Colombier 	CAP_UNICODE		= 1<<2,
135671dfc47SDavid du Colombier 	CAP_LARGE_FILES		= 1<<3,		/* 64 bit files */
136671dfc47SDavid du Colombier 	CAP_NT_SMBS		= 1<<4,
137671dfc47SDavid du Colombier 	CAP_RPC_REMOTE_APIS	= 1<<5,
138671dfc47SDavid du Colombier 	CAP_STATUS32		= 1<<6,
139671dfc47SDavid du Colombier 	CAP_L2_OPLOCKS		= 1<<7,
140671dfc47SDavid du Colombier 	CAP_LOCK_READ		= 1<<8,
141671dfc47SDavid du Colombier 	CAP_NT_FIND		= 1<<9,
142671dfc47SDavid du Colombier 	CAP_DFS			= 1<<12,
143671dfc47SDavid du Colombier 	CAP_INFO_PASSTHRU	= 1<<13,
144671dfc47SDavid du Colombier 	CAP_LARGE_READX		= 1<<14,
145671dfc47SDavid du Colombier 	CAP_LARGE_WRITEX	= 1<<15,
146671dfc47SDavid du Colombier 	CAP_UNIX		= 1<<23,
147671dfc47SDavid du Colombier 	CAP_BULK_TRANSFER	= 1<<29,
148671dfc47SDavid du Colombier 	CAP_COMPRESSED		= 1<<30,
149671dfc47SDavid du Colombier 	CAP_EX_SECURE		= 1<<31
150671dfc47SDavid du Colombier };
151671dfc47SDavid du Colombier 
152671dfc47SDavid du Colombier enum {	/* string prefixes */
153671dfc47SDavid du Colombier 	STR_DIALECT 		= 2,
154671dfc47SDavid du Colombier 	STR_PATH 		= 3,
155671dfc47SDavid du Colombier 	STR_ASCII 		= 4,
156671dfc47SDavid du Colombier };
157671dfc47SDavid du Colombier 
158671dfc47SDavid du Colombier enum {	/* optional support bits in treeconnect */
159671dfc47SDavid du Colombier 	SMB_SUPPROT_SEARCH_BITS = 1,
160671dfc47SDavid du Colombier 	SMB_SHARE_IS_IN_DFS 	= 2,
161671dfc47SDavid du Colombier };
162671dfc47SDavid du Colombier 
163671dfc47SDavid du Colombier enum {	/* DFS referal header flags */
164671dfc47SDavid du Colombier 	DFS_HEADER_ROOT	 	= 1,	/* Server type, returns root targets */
165671dfc47SDavid du Colombier 	DFS_HEADER_STORAGE 	= 2,	/* server has storage, no more referals */
166671dfc47SDavid du Colombier 	DFS_HEADER_FAILBACK 	= 4,	/* target failback enabled */
167671dfc47SDavid du Colombier };
168671dfc47SDavid du Colombier 
169671dfc47SDavid du Colombier enum {	/* DFS referal entry flags */
170671dfc47SDavid du Colombier 	DFS_SERVER_ROOT	 	= 1,	/* Server type, returns root targets */
171671dfc47SDavid du Colombier 	DFS_REFERAL_LIST 	= 0x200,	/* reply is a list (v3 only) */
172671dfc47SDavid du Colombier 	DFS_REFERAL_SET 	= 0x400,	/* target is a member of a set */
173671dfc47SDavid du Colombier };
174671dfc47SDavid du Colombier 
175671dfc47SDavid du Colombier enum {	/* share types */
176671dfc47SDavid du Colombier 	STYPE_DISKTREE		= 0,
177671dfc47SDavid du Colombier 	STYPE_PRINTQ		= 1,
178671dfc47SDavid du Colombier 	STYPE_DEVICE		= 2,
179671dfc47SDavid du Colombier 	STYPE_IPC		= 3,
180671dfc47SDavid du Colombier 	STYPE_SPECIAL		= 4,
181671dfc47SDavid du Colombier 	STYPE_TEMP		= 5,
182671dfc47SDavid du Colombier };
183671dfc47SDavid du Colombier 
184671dfc47SDavid du Colombier enum {	/* Security */
185671dfc47SDavid du Colombier 	SECMODE_USER		= 0x01,	/* i.e. not share level security */
186671dfc47SDavid du Colombier 	SECMODE_PW_ENCRYPT	= 0x02,
187671dfc47SDavid du Colombier 	SECMODE_SIGN_ENABLED	= 0x04,
188671dfc47SDavid du Colombier 	SECMODE_SIGN_REQUIRED	= 0x08,
189671dfc47SDavid du Colombier };
190671dfc47SDavid du Colombier 
191671dfc47SDavid du Colombier enum {	/* file access rights */
192671dfc47SDavid du Colombier 	DELETE			= 0x00010000,
193671dfc47SDavid du Colombier 	SYNCHRONIZE		= 0x00100000,
194671dfc47SDavid du Colombier 
195671dfc47SDavid du Colombier 	READ_CONTROL		= 0x00020000,
196671dfc47SDavid du Colombier 	GENERIC_ALL		= 0x10000000,
197671dfc47SDavid du Colombier 	GENERIC_EXECUTE		= 0x20000000,
198671dfc47SDavid du Colombier 	GENERIC_WRITE		= 0x40000000,
199671dfc47SDavid du Colombier 	GENERIC_READ		= 0x80000000,
200671dfc47SDavid du Colombier 
201671dfc47SDavid du Colombier 	ATTR_READONLY 		= 0x0001,
202671dfc47SDavid du Colombier 	ATTR_HIDDEN   		= 0x0002,
203671dfc47SDavid du Colombier 	ATTR_SYSTEM   		= 0x0004,
204671dfc47SDavid du Colombier 	ATTR_VOLUME   		= 0x0008,
205671dfc47SDavid du Colombier 	ATTR_DIRECTORY		= 0x0010,
206671dfc47SDavid du Colombier 	ATTR_ARCHIVE  		= 0x0020,
207671dfc47SDavid du Colombier 	ATTR_DEVICE   		= 0x0040,
208671dfc47SDavid du Colombier 	ATTR_NORMAL   		= 0x0080,
209671dfc47SDavid du Colombier 	ATTR_TEMPORARY		= 0x0100,
210671dfc47SDavid du Colombier 	ATTR_SPARSE   		= 0x0200,
211671dfc47SDavid du Colombier 	ATTR_REPARSE  		= 0x0400,
212671dfc47SDavid du Colombier 	ATTR_COMPRESSED		= 0x0800,
213671dfc47SDavid du Colombier 	ATTR_OFFLINE   		= 0x100,	/* offline storage */
214671dfc47SDavid du Colombier 	ATTR_NOT_CONTENT_INDEXED= 0x2000,
215671dfc47SDavid du Colombier 	ATTR_ENCRYPTED 		= 0x4000,
216671dfc47SDavid du Colombier 	ATTR_POSIX_SEMANTICS	= 0x01000000,
217671dfc47SDavid du Colombier 	ATTR_BACKUP_SEMANTICS	= 0x02000000,
218671dfc47SDavid du Colombier 	ATTR_DELETE_ON_CLOSE	= 0x04000000,
219671dfc47SDavid du Colombier 	ATTR_SEQUENTIAL_SCAN	= 0x08000000,
220671dfc47SDavid du Colombier 	ATTR_RANDOM_ACCESS  	= 0x10000000,
221671dfc47SDavid du Colombier 	ATTR_NO_BUFFERING   	= 0x20000000,
222671dfc47SDavid du Colombier 	ATTR_WRITE_THROUGH  	= 0x80000000,
223671dfc47SDavid du Colombier 
224671dfc47SDavid du Colombier 	/* ShareAccess flags */
225671dfc47SDavid du Colombier 	FILE_NO_SHARE    	= 0,
226671dfc47SDavid du Colombier 	FILE_SHARE_READ  	= 1,
227671dfc47SDavid du Colombier 	FILE_SHARE_WRITE 	= 2,
228671dfc47SDavid du Colombier 	FILE_SHARE_DELETE	= 4,
229671dfc47SDavid du Colombier 	FILE_SHARE_ALL   	= 7,
230671dfc47SDavid du Colombier 
231671dfc47SDavid du Colombier 	/* CreateDisposition flags */
232671dfc47SDavid du Colombier 	FILE_SUPERSEDE   	= 0,
233671dfc47SDavid du Colombier 	FILE_OPEN		= 1,
234671dfc47SDavid du Colombier 	FILE_CREATE		= 2,
235671dfc47SDavid du Colombier 	FILE_OPEN_IF		= 3,
236671dfc47SDavid du Colombier 	FILE_OVERWRITE		= 4,
237671dfc47SDavid du Colombier 	FILE_OVERWRITE_IF	= 5,
238671dfc47SDavid du Colombier 
239671dfc47SDavid du Colombier 	/* CreateOptions */
240671dfc47SDavid du Colombier 	FILE_DIRECTORY_FILE		= 0x00000001,
241671dfc47SDavid du Colombier 	FILE_WRITE_THROUGH		= 0x00000002,
242671dfc47SDavid du Colombier 	FILE_SEQUENTIAL_ONLY		= 0x00000004,
243671dfc47SDavid du Colombier 	FILE_NO_INTERMEDIATE_BUFFERING	= 0x00000008,
244671dfc47SDavid du Colombier 	FILE_SYNCHRONOUS_IO_ALERT	= 0x00000010,
245671dfc47SDavid du Colombier 	FILE_SYNCHRONOUS_IO_NONALERT	= 0x00000020,
246671dfc47SDavid du Colombier 	FILE_NON_DIRECTORY_FILE		= 0x00000040,
247671dfc47SDavid du Colombier 	FILE_CREATE_TREE_CONNECTION	= 0x00000080,
248671dfc47SDavid du Colombier 	FILE_COMPLETE_IF_OPLOCKED	= 0x00000100,
249671dfc47SDavid du Colombier 	FILE_NO_EA_KNOWLEDGE		= 0x00000200,
250671dfc47SDavid du Colombier 	FILE_OPEN_FOR_RECOVERY		= 0x00000400,
251671dfc47SDavid du Colombier 	FILE_EIGHT_DOT_THREE_ONLY	= 0x00000400,	/* samba source says so... */
252671dfc47SDavid du Colombier 	FILE_RANDOM_ACCESS		= 0x00000800,
253671dfc47SDavid du Colombier 	FILE_DELETE_ON_CLOSE		= 0x00001000,
254671dfc47SDavid du Colombier 	FILE_OPEN_BY_FILE_ID		= 0x00002000,
255671dfc47SDavid du Colombier 	FILE_OPEN_FOR_BACKUP_INTENT	= 0x00004000,
256671dfc47SDavid du Colombier 	FILE_NO_COMPRESSION		= 0x00008000,
257671dfc47SDavid du Colombier 
258671dfc47SDavid du Colombier 	/* open/create result codes */
259671dfc47SDavid du Colombier 	FILE_WAS_OPENED			= 1,
260671dfc47SDavid du Colombier 	FILE_WAS_CREATED		= 2,
261671dfc47SDavid du Colombier 	FILE_WAS_OVERWRITTEN		= 3,
262671dfc47SDavid du Colombier 
263671dfc47SDavid du Colombier 	/* ImpersonationLevel flags */
264671dfc47SDavid du Colombier 	SECURITY_ANONYMOUS     		= 0,
265671dfc47SDavid du Colombier 	SECURITY_IDENTIFICATION		= 1,
266671dfc47SDavid du Colombier 	SECURITY_IMPERSONATION		= 2,
267671dfc47SDavid du Colombier 	SECURITY_DELEGATION		= 3,
268671dfc47SDavid du Colombier 
269671dfc47SDavid du Colombier 	/* SecurityFlags */
270671dfc47SDavid du Colombier 	SECURITY_CONTEXT_TRACKING 	= 1,
271671dfc47SDavid du Colombier 	SECURITY_EFFECTIVE_ONLY		= 2,
272671dfc47SDavid du Colombier 
273671dfc47SDavid du Colombier 	/* security descriptor bitmask */
274671dfc47SDavid du Colombier 	QUERY_OWNER_SECURITY_INFORMATION = 1,
275671dfc47SDavid du Colombier 	QUERY_GROUP_SECURITY_INFORMATION = 2,
276671dfc47SDavid du Colombier 	QUERY_DACL_SECURITY_INFORMATION = 4,
277671dfc47SDavid du Colombier 	QUERY_SACL_SECURITY_INFORMATION = 8,
278671dfc47SDavid du Colombier 
279671dfc47SDavid du Colombier };
280671dfc47SDavid du Colombier 
281671dfc47SDavid du Colombier enum {	/* PathInfo/FileInfo infolevels */
282671dfc47SDavid du Colombier 	SMB_INFO_STANDARD              	= 0x1,
283671dfc47SDavid du Colombier 	SMB_INFO_IS_NAME_VALID         	= 0x6,
284671dfc47SDavid du Colombier 	SMB_QUERY_FILE_BASIC_INFO      	= 0x101,
285671dfc47SDavid du Colombier 	SMB_QUERY_FILE_STANDARD_INFO   	= 0x102,
286671dfc47SDavid du Colombier 	SMB_QUERY_FILE_NAME_INFO       	= 0x104,
287671dfc47SDavid du Colombier 	SMB_QUERY_FILE_ALLOCATION_INFO 	= 0x105,
288671dfc47SDavid du Colombier 	SMB_QUERY_FILE_END_OF_FILE_INFO = 0x106,
289671dfc47SDavid du Colombier 	SMB_QUERY_FILE_ALL_INFO        	= 0x107,
290671dfc47SDavid du Colombier 	SMB_QUERY_ALT_NAME_INFO        	= 0x108,
291671dfc47SDavid du Colombier 	SMB_QUERY_FILE_STREAM_INFO     	= 0x109,
292671dfc47SDavid du Colombier 	SMB_QUERY_FILE_COMPRESSION_INFO	= 0x10b,
293671dfc47SDavid du Colombier 	SMB_QUERY_FILE_UNIX_BASIC      	= 0x200,
294671dfc47SDavid du Colombier 	SMB_QUERY_FILE_UNIX_LINK       	= 0x201,
295671dfc47SDavid du Colombier 
296671dfc47SDavid du Colombier 	SMB_SET_FILE_BASIC_INFO	       	= 0x101,
297671dfc47SDavid du Colombier 	SMB_SET_FILE_DISPOSITION_INFO  	= 0x102,
298671dfc47SDavid du Colombier 	SMB_SET_FILE_ALLOCATION_INFO   	= 0x103,
299671dfc47SDavid du Colombier 	SMB_SET_FILE_END_OF_FILE_INFO  	= 0x104,
300671dfc47SDavid du Colombier 	SMB_SET_FILE_UNIX_BASIC        	= 0x200,
301671dfc47SDavid du Colombier 	SMB_SET_FILE_UNIX_LINK         	= 0x201,
302671dfc47SDavid du Colombier 	SMB_SET_FILE_UNIX_HLINK        	= 0x203,
303671dfc47SDavid du Colombier 	SMB_SET_FILE_BASIC_INFO2       	= 0x3ec,
304671dfc47SDavid du Colombier 	SMB_SET_FILE_RENAME_INFORMATION	= 0x3f2,
305671dfc47SDavid du Colombier 	SMB_SET_FILE_ALLOCATION_INFO2  	= 0x3fb,
306671dfc47SDavid du Colombier 	SMB_SET_FILE_END_OF_FILE_INFO2 	= 0x3fc,
307671dfc47SDavid du Colombier 
308671dfc47SDavid du Colombier 	/* Find File infolevels */
309671dfc47SDavid du Colombier 	SMB_FIND_FILE_DIRECTORY_INFO	= 0x101,
310671dfc47SDavid du Colombier 	SMB_FIND_FILE_FULL_DIRECTORY_INFO= 0x102,
311671dfc47SDavid du Colombier 	SMB_FIND_FILE_NAMES_INFO	= 0x103,
312671dfc47SDavid du Colombier 	SMB_FIND_FILE_BOTH_DIRECTORY_INFO= 0x104,
313671dfc47SDavid du Colombier 	SMB_FIND_FILE_UNIX		= 0x202,
314671dfc47SDavid du Colombier 
315671dfc47SDavid du Colombier 	/* Trans2 FindFirst & FindNext */
316671dfc47SDavid du Colombier 	CIFS_SEARCH_CLOSE_ALWAYS	= 0x0001,
317671dfc47SDavid du Colombier 	CIFS_SEARCH_CLOSE_AT_END	= 0x0002,
318671dfc47SDavid du Colombier 	CIFS_SEARCH_RETURN_RESUME	= 0x0004,
319671dfc47SDavid du Colombier 	CIFS_SEARCH_CONTINUE_FROM_LAST	= 0x0008,
320671dfc47SDavid du Colombier 	CIFS_SEARCH_BACKUP_SEARCH	= 0x0010,
321671dfc47SDavid du Colombier 
322671dfc47SDavid du Colombier 	/* Trans2 FsInfo */
323671dfc47SDavid du Colombier 	SMB_INFO_ALLOCATION		= 0x1,
324671dfc47SDavid du Colombier 	SMB_INFO_VOLUME			= 0x2,
325671dfc47SDavid du Colombier 	SMB_QUERY_FS_VOLUME_INFO	= 0x102,
326671dfc47SDavid du Colombier 	SMB_QUERY_FS_SIZE_INFO		= 0x103,
327671dfc47SDavid du Colombier 	SMB_QUERY_FS_DEVICE_INFO	= 0x104,
328671dfc47SDavid du Colombier 	SMB_QUERY_FS_ATTRIBUTE_INFO	= 0x105,
329671dfc47SDavid du Colombier 	SMB_QUERY_CIFS_UNIX_INFO	= 0x200,
330671dfc47SDavid du Colombier };
331671dfc47SDavid du Colombier 
332671dfc47SDavid du Colombier enum {	/* things to search for in server lookups */
333671dfc47SDavid du Colombier 	LOCAL_AUTHORATIVE_ONLY	= 0x40000000,
334671dfc47SDavid du Colombier 	LIST_DOMAINS_ONLY	= 0x80000000,
335671dfc47SDavid du Colombier 	ALL_LEARNT_IN_DOMAIN	= 0xFFFFFFFF
336671dfc47SDavid du Colombier };
337671dfc47SDavid du Colombier 
338671dfc47SDavid du Colombier typedef struct {
339671dfc47SDavid du Colombier 	char	*user;		/* username */
340671dfc47SDavid du Colombier 	char	*windom;	/* remote server's domain name */
341671dfc47SDavid du Colombier 	char	*resp[2];	/* ASCII/Unicode or LM/NTLM keys */
342671dfc47SDavid du Colombier 	int	len[2];		/* length of above */
343671dfc47SDavid du Colombier 	uchar	*mackey[2];	/* Message Authentication key */
344671dfc47SDavid du Colombier } Auth;
345671dfc47SDavid du Colombier 
346671dfc47SDavid du Colombier typedef struct {
347671dfc47SDavid du Colombier 	int	fd;		/* File descriptor for I/O  */
348671dfc47SDavid du Colombier 	int	nbt;		/* am using cifs over netbios */
349671dfc47SDavid du Colombier 	int	trn;		/* TRN (unique RPC) ID  */
350671dfc47SDavid du Colombier 	int	uid;		/* user (authentication) ID  */
351671dfc47SDavid du Colombier 	int	seq;		/* sequence number */
352671dfc47SDavid du Colombier 	int	seqrun;		/* sequence numbering active */
353671dfc47SDavid du Colombier 	int	caps;		/* server capabilities */
354671dfc47SDavid du Colombier 	int	support;	/* support bits */
355671dfc47SDavid du Colombier 	int	flags;		/* SMB flags  */
356671dfc47SDavid du Colombier 	int	flags2;		/* SMB flags 2  */
357671dfc47SDavid du Colombier 	int	nocache;	/* disable write behind caching in server */
358671dfc47SDavid du Colombier 	int	pid;		/* process ID  */
359671dfc47SDavid du Colombier 	int	mid;		/* multiplex ID */
360671dfc47SDavid du Colombier 	int	mtu;		/* max size of packet  */
361671dfc47SDavid du Colombier 	int	tz;		/* Timezone, mins from UTC  */
362671dfc47SDavid du Colombier 	int	isguest;	/* logged in as guest */
363671dfc47SDavid du Colombier 	int	secmode;	/* security mode  */
364671dfc47SDavid du Colombier 	int	macidx;		/* which MAC is in use, -1 is none */
365671dfc47SDavid du Colombier 	uchar	chal[0xff +1];	/* server's challange for authentication  */
366671dfc47SDavid du Colombier 	int	challen;	/* length of challange */
367671dfc47SDavid du Colombier 	long	slip;		/* time difference between the server and us */
368671dfc47SDavid du Colombier 	uvlong	lastfind;	/* nsec when last find peformed */
369671dfc47SDavid du Colombier 	QLock	seqlock;	/* sequence number increment */
370671dfc47SDavid du Colombier 	QLock	rpclock;	/* actual remote procedure call */
371671dfc47SDavid du Colombier 	char	*cname;		/* remote hosts called name (for info) */
372671dfc47SDavid du Colombier 	char	*remos;		/* remote hosts OS (for info) */
373671dfc47SDavid du Colombier 	Auth	*auth;		/* authentication info */
374671dfc47SDavid du Colombier } Session;
375671dfc47SDavid du Colombier 
376671dfc47SDavid du Colombier typedef struct {
377671dfc47SDavid du Colombier 	Session *s;
378671dfc47SDavid du Colombier 
379671dfc47SDavid du Colombier 	int tid;		/* tree ID received from server */
380671dfc47SDavid du Colombier 	int seq;		/* sequence number expected in reply */
381671dfc47SDavid du Colombier 
382671dfc47SDavid du Colombier 	uchar *seqbase; 	/* cifs: pos of sequence number in packet */
383671dfc47SDavid du Colombier 	uchar *wordbase; 	/* cifs: base of words section of data  */
384671dfc47SDavid du Colombier 	uchar *bytebase; 	/* cifs: base of bytes section of data  */
385671dfc47SDavid du Colombier 	uchar *tbase;		/* transactions: start of trans packet */
386671dfc47SDavid du Colombier 	uchar *tsetup;		/* transactions: start of setup section */
387671dfc47SDavid du Colombier 	uchar *tparam; 		/* transactions: start of params section */
388671dfc47SDavid du Colombier 	uchar *tdata; 		/* transactions: start of data section */
389671dfc47SDavid du Colombier 
390671dfc47SDavid du Colombier 	uchar *eop;		/* received end of packet */
391671dfc47SDavid du Colombier 	uchar *pos;		/* current pos in packet  */
392671dfc47SDavid du Colombier 	uchar *buf;		/* packet buffer, must be last entry in struct  */
393671dfc47SDavid du Colombier } Pkt;
394671dfc47SDavid du Colombier 
395671dfc47SDavid du Colombier typedef struct {
396671dfc47SDavid du Colombier 	char	*name;
397671dfc47SDavid du Colombier 	int	tid;		/* not part of the protocol, housekeeping */
398671dfc47SDavid du Colombier 	int	options;	/* not part of the protocol, housekeeping */
399671dfc47SDavid du Colombier } Share;
400671dfc47SDavid du Colombier 
401671dfc47SDavid du Colombier typedef struct {
402671dfc47SDavid du Colombier 	long	created;	/* last access time */
403671dfc47SDavid du Colombier 	long	accessed;	/* last access time */
404671dfc47SDavid du Colombier 	long	written;	/* last written time */
405671dfc47SDavid du Colombier 	long	changed;	/* change time */
406671dfc47SDavid du Colombier 	uvlong	size;		/* file size */
407671dfc47SDavid du Colombier 	long	attribs;	/* attributes */
408671dfc47SDavid du Colombier 	char	name[CIFS_FNAME_MAX +1]; /* name */
409671dfc47SDavid du Colombier } FInfo;
410671dfc47SDavid du Colombier 
411671dfc47SDavid du Colombier typedef struct {
412671dfc47SDavid du Colombier 	char	*wrkstn;
413671dfc47SDavid du Colombier 	char	*user;
414671dfc47SDavid du Colombier 	long	sesstime;
415671dfc47SDavid du Colombier 	long	idletime;
416671dfc47SDavid du Colombier } Sessinfo;
417671dfc47SDavid du Colombier 
418671dfc47SDavid du Colombier typedef struct {
419671dfc47SDavid du Colombier 	char	*name;
420671dfc47SDavid du Colombier } Namelist;
421671dfc47SDavid du Colombier 
422671dfc47SDavid du Colombier typedef struct {
423671dfc47SDavid du Colombier 	char	*user;
424671dfc47SDavid du Colombier 	char	*comment;
425671dfc47SDavid du Colombier 	char	*user_comment;
426671dfc47SDavid du Colombier 	char	*fullname;
427671dfc47SDavid du Colombier } Userinfo;
428671dfc47SDavid du Colombier 
429671dfc47SDavid du Colombier typedef struct {
430671dfc47SDavid du Colombier 	char	*name;
431671dfc47SDavid du Colombier 	int	type;
432671dfc47SDavid du Colombier 	char	*comment;
433671dfc47SDavid du Colombier 	int	perms;
434671dfc47SDavid du Colombier 	int	maxusrs;
435671dfc47SDavid du Colombier 	int	activeusrs;
436671dfc47SDavid du Colombier 	char	*path;
437671dfc47SDavid du Colombier 	char	*passwd;
438671dfc47SDavid du Colombier } Shareinfo2;
439671dfc47SDavid du Colombier 
440671dfc47SDavid du Colombier typedef struct {
441671dfc47SDavid du Colombier 	char	*name;
442671dfc47SDavid du Colombier 	int	major;
443671dfc47SDavid du Colombier 	int	minor;
444671dfc47SDavid du Colombier 	int	type;
445671dfc47SDavid du Colombier 	char	*comment;
446671dfc47SDavid du Colombier } Serverinfo;
447671dfc47SDavid du Colombier 
448671dfc47SDavid du Colombier typedef struct {
449671dfc47SDavid du Colombier 	int	type;	/* o=unknown, 1=CIFS, 2=netware 3=domain */
450671dfc47SDavid du Colombier 	int	flags;	/* 1 == strip off consumed chars before resubmitting */
451671dfc47SDavid du Colombier 	int	ttl;	/* time to live of this info in secs */
452671dfc47SDavid du Colombier 	int	prox;	/* lower value is preferred */
453671dfc47SDavid du Colombier 	char	*path;	/* new path */
454671dfc47SDavid du Colombier 	char	*addr;	/* new server */
455671dfc47SDavid du Colombier } Refer;
456671dfc47SDavid du Colombier 
457671dfc47SDavid du Colombier typedef struct {
458671dfc47SDavid du Colombier 	char	*node;
459671dfc47SDavid du Colombier 	char	*user;
460671dfc47SDavid du Colombier 	char	*langroup;
461671dfc47SDavid du Colombier 	int	major;
462671dfc47SDavid du Colombier 	int	minor;
463671dfc47SDavid du Colombier 	char	*pridom;
464671dfc47SDavid du Colombier 	char	*otherdoms;
465671dfc47SDavid du Colombier } Wrkstainfo;
466671dfc47SDavid du Colombier 
467671dfc47SDavid du Colombier typedef struct {
468671dfc47SDavid du Colombier 	int	ident;
469671dfc47SDavid du Colombier 	int	perms;
470671dfc47SDavid du Colombier 	int	locks;
471671dfc47SDavid du Colombier 	char	*path;
472671dfc47SDavid du Colombier 	char	*user;
473671dfc47SDavid du Colombier } Fileinfo;
474671dfc47SDavid du Colombier 
475*976d3a68SDavid du Colombier extern int Active;
476*976d3a68SDavid du Colombier extern int Checkcase;
477671dfc47SDavid du Colombier extern int Dfstout;
478671dfc47SDavid du Colombier extern char *Debug;
479*976d3a68SDavid du Colombier extern char *Host;
480671dfc47SDavid du Colombier extern Session *Sess;
481*976d3a68SDavid du Colombier extern Share Ipc;
482671dfc47SDavid du Colombier 
483*976d3a68SDavid du Colombier extern Share Shares[MAX_SHARES];
484*976d3a68SDavid du Colombier extern int Nshares;
485671dfc47SDavid du Colombier 
486671dfc47SDavid du Colombier /* main.c */
487671dfc47SDavid du Colombier Qid	mkqid(char *, int, long, int, long);
488671dfc47SDavid du Colombier 
489671dfc47SDavid du Colombier /* auth.c */
490671dfc47SDavid du Colombier Auth	*getauth(char *, char *, char *, int, uchar *, int);
491671dfc47SDavid du Colombier void	autherr(void);
492671dfc47SDavid du Colombier int	macsign(Pkt *, int);
493671dfc47SDavid du Colombier 
494671dfc47SDavid du Colombier /* cifs.c */
495671dfc47SDavid du Colombier Session	*cifsdial(char *, char *, char *);
496671dfc47SDavid du Colombier void	cifsclose(Session *);
497671dfc47SDavid du Colombier Pkt	*cifshdr(Session *, Share *, int);
498671dfc47SDavid du Colombier void	pbytes(Pkt *);
499671dfc47SDavid du Colombier int	cifsrpc(Pkt *);
500671dfc47SDavid du Colombier int	CIFSnegotiate(Session *, long *, char *, int, char *, int);
501671dfc47SDavid du Colombier int	CIFSsession(Session *);
502671dfc47SDavid du Colombier int	CIFStreeconnect(Session *, char *, char *, Share *);
503671dfc47SDavid du Colombier int	CIFSlogoff(Session *);
504671dfc47SDavid du Colombier int	CIFStreedisconnect(Session *, Share *);
505671dfc47SDavid du Colombier int	CIFSdeletefile(Session *, Share *, char *);
506671dfc47SDavid du Colombier int	CIFSdeletedirectory(Session *, Share *, char *);
507671dfc47SDavid du Colombier int	CIFScreatedirectory(Session *, Share *, char *);
508671dfc47SDavid du Colombier int	CIFSrename(Session *, Share *, char *, char *);
509671dfc47SDavid du Colombier int	CIFS_NT_opencreate(Session *, Share *, char *, int, int, int, int, int, int, int *, FInfo *);
510671dfc47SDavid du Colombier int	CIFS_SMB_opencreate(Session *, Share *, char *, int, int, int, int *);
511671dfc47SDavid du Colombier vlong	CIFSwrite(Session *, Share *, int, uvlong, void *, vlong);
512671dfc47SDavid du Colombier vlong	CIFSread(Session *, Share *, int, uvlong, void *, vlong, vlong);
513671dfc47SDavid du Colombier int	CIFSflush(Session *, Share *, int);
514671dfc47SDavid du Colombier int	CIFSclose(Session *, Share *, int);
515671dfc47SDavid du Colombier int	CIFSfindclose2(Session *, Share *, int);
516671dfc47SDavid du Colombier int	CIFSecho(Session *);
517671dfc47SDavid du Colombier int	CIFSsetinfo(Session *, Share *, char *, FInfo *);
518671dfc47SDavid du Colombier void	goff(Pkt *, uchar *, char *, int);
519671dfc47SDavid du Colombier 
520671dfc47SDavid du Colombier /* dfs.c */
521671dfc47SDavid du Colombier char	*mapfile(char *);
522671dfc47SDavid du Colombier int	mapshare(char *, Share **);
523671dfc47SDavid du Colombier int	redirect(Session *, Share *s, char *);
524671dfc47SDavid du Colombier int	dfscacheinfo(Fmt *);
525*976d3a68SDavid du Colombier char	*trimshare(char *);
526671dfc47SDavid du Colombier 
527671dfc47SDavid du Colombier /* doserrstr.c */
528671dfc47SDavid du Colombier char	*doserrstr(uint);
529671dfc47SDavid du Colombier 
530671dfc47SDavid du Colombier /* fs.c */
531671dfc47SDavid du Colombier int	shareinfo(Fmt *);
532671dfc47SDavid du Colombier int	conninfo(Fmt *);
533671dfc47SDavid du Colombier int	sessioninfo(Fmt *);
534671dfc47SDavid du Colombier int	userinfo(Fmt *);
535671dfc47SDavid du Colombier int	groupinfo(Fmt *);
536671dfc47SDavid du Colombier int	domaininfo(Fmt *);
537671dfc47SDavid du Colombier int	workstationinfo(Fmt *);
538671dfc47SDavid du Colombier int	dfsrootinfo(Fmt *);
539671dfc47SDavid du Colombier int	openfileinfo(Fmt *);
540671dfc47SDavid du Colombier int	dfsrootinfo(Fmt *);
541671dfc47SDavid du Colombier int	filetableinfo(Fmt *); 	/* is in main.c due to C scope */
542671dfc47SDavid du Colombier 
543671dfc47SDavid du Colombier /* info.c */
544671dfc47SDavid du Colombier int	walkinfo(char *);
545671dfc47SDavid du Colombier int	numinfo(void);
546671dfc47SDavid du Colombier int	dirgeninfo(int, Dir *);
547671dfc47SDavid du Colombier int	makeinfo(int);
548671dfc47SDavid du Colombier int	readinfo(int, char *, int, int);
549671dfc47SDavid du Colombier void	freeinfo(int);
550671dfc47SDavid du Colombier 
551671dfc47SDavid du Colombier /* main.c */
552671dfc47SDavid du Colombier void	usage(void);
553671dfc47SDavid du Colombier void	dmpkey(char *, void *, int);
554671dfc47SDavid du Colombier void	main(int, char **);
555671dfc47SDavid du Colombier 
556671dfc47SDavid du Colombier /* misc.c */
557671dfc47SDavid du Colombier char	*strupr(char *);
558671dfc47SDavid du Colombier char	*strlwr(char *);
559671dfc47SDavid du Colombier 
560671dfc47SDavid du Colombier /* netbios.c */
561671dfc47SDavid du Colombier void	Gmem(uchar **, void *, int);
562671dfc47SDavid du Colombier int	calledname(char *, char *);
563671dfc47SDavid du Colombier int	nbtdial(char *, char *, char *);
564671dfc47SDavid du Colombier void	nbthdr(Pkt *);
565671dfc47SDavid du Colombier int	nbtrpc(Pkt *);
566671dfc47SDavid du Colombier void	xd(char *, void *, int);
567671dfc47SDavid du Colombier 
568671dfc47SDavid du Colombier /* nterrstr.c */
569671dfc47SDavid du Colombier char	*nterrstr(uint);
570671dfc47SDavid du Colombier 
571671dfc47SDavid du Colombier /* pack.c */
572671dfc47SDavid du Colombier void	*pmem(Pkt *, void *, int);
573671dfc47SDavid du Colombier void	*ppath(Pkt *, char *);
574671dfc47SDavid du Colombier void	*pstr(Pkt *, char *);
575671dfc47SDavid du Colombier void	*pascii(Pkt *, char *);
576671dfc47SDavid du Colombier void	*pl64(Pkt *, uvlong);
577671dfc47SDavid du Colombier void	*pb32(Pkt *, uint);
578671dfc47SDavid du Colombier void	*pl32(Pkt *, uint);
579671dfc47SDavid du Colombier void	*pb16(Pkt *, uint);
580671dfc47SDavid du Colombier void	*pl16(Pkt *, uint);
581671dfc47SDavid du Colombier void	*p8(Pkt *, uint);
582671dfc47SDavid du Colombier void	*pname(Pkt *, char *, char);
583671dfc47SDavid du Colombier void	*pvtime(Pkt *, uvlong);
584671dfc47SDavid du Colombier void	*pdatetime(Pkt *, long);
585671dfc47SDavid du Colombier void	gmem(Pkt *, void *, int);
586671dfc47SDavid du Colombier void	gstr(Pkt *, char *, int);
587671dfc47SDavid du Colombier void	gascii(Pkt *, char *, int);
588671dfc47SDavid du Colombier uvlong	gl64(Pkt *);
589671dfc47SDavid du Colombier uvlong	gb48(Pkt *);
590671dfc47SDavid du Colombier uint	gb32(Pkt *);
591671dfc47SDavid du Colombier uint	gl32(Pkt *);
592671dfc47SDavid du Colombier uint	gb16(Pkt *);
593671dfc47SDavid du Colombier uint	gl16(Pkt *);
594671dfc47SDavid du Colombier uint	g8(Pkt *);
595671dfc47SDavid du Colombier long	gdatetime(Pkt *);
596671dfc47SDavid du Colombier long	gvtime(Pkt *);
597671dfc47SDavid du Colombier void	gconv(Pkt *, int, char *, int);
598671dfc47SDavid du Colombier 
599671dfc47SDavid du Colombier /* raperrstr.c */
600671dfc47SDavid du Colombier char	*raperrstr(uint);
601671dfc47SDavid du Colombier 
602671dfc47SDavid du Colombier /* sid2name.c */
603671dfc47SDavid du Colombier void	upd_names(Session *, Share *, char *, Dir *);
604671dfc47SDavid du Colombier 
605671dfc47SDavid du Colombier /* trans.c */
606671dfc47SDavid du Colombier int	RAPshareenum(Session *, Share *, Share **);
607671dfc47SDavid du Colombier int	RAPshareinfo(Session *, Share *, char *, Shareinfo2 *);
608671dfc47SDavid du Colombier 
609671dfc47SDavid du Colombier int	RAPsessionenum(Session *, Share *, Sessinfo **);
610671dfc47SDavid du Colombier 
611671dfc47SDavid du Colombier int	RAPgroupenum(Session *, Share *, Namelist **);
612671dfc47SDavid du Colombier int	RAPgroupusers(Session *, Share *, char *, Namelist **);
613671dfc47SDavid du Colombier 
614671dfc47SDavid du Colombier int	RAPuserenum(Session *, Share *, Namelist **);
615671dfc47SDavid du Colombier int	RAPuserenum2(Session *, Share *, Namelist **);
616671dfc47SDavid du Colombier int	RAPuserinfo(Session *, Share *, char *, Userinfo *);
617671dfc47SDavid du Colombier 
618671dfc47SDavid du Colombier int	RAPServerenum2(Session *, Share *, char *, int, int *, Serverinfo **);
619671dfc47SDavid du Colombier int	RAPServerenum3(Session *, Share *, char *, int, int, Serverinfo *);
620671dfc47SDavid du Colombier 
621671dfc47SDavid du Colombier int	RAPFileenum2(Session *, Share *, char *, char *, Fileinfo **);
622671dfc47SDavid du Colombier 
623671dfc47SDavid du Colombier /* trans2.c */
624671dfc47SDavid du Colombier int	T2findfirst(Session *, Share *, int, char *, int *, long *, FInfo *);
625671dfc47SDavid du Colombier int	T2findnext(Session *, Share *, int, char *, int *, long *, FInfo *, int);
626671dfc47SDavid du Colombier int	T2queryall(Session *, Share *, char *, FInfo *);
627671dfc47SDavid du Colombier int	T2querystandard(Session *, Share *, char *, FInfo *);
628671dfc47SDavid du Colombier int	T2setpathinfo(Session *, Share *, char *, FInfo *);
629671dfc47SDavid du Colombier int	T2setfilelength(Session *, Share *, int, FInfo *);
630671dfc47SDavid du Colombier int	T2fsvolumeinfo(Session *, Share *, long *, long *, char *, int);
631671dfc47SDavid du Colombier int	T2fssizeinfo(Session *, Share *, uvlong *, uvlong *);
632671dfc47SDavid du Colombier int	T2getdfsreferral(Session *, Share *, char *, int *, int *, Refer *, int);
633671dfc47SDavid du Colombier 
634671dfc47SDavid du Colombier /* transnt.c */
635671dfc47SDavid du Colombier int	TNTquerysecurity(Session *, Share *, int, char **, char **);
636671dfc47SDavid du Colombier 
637671dfc47SDavid du Colombier /* ping.c */
638671dfc47SDavid du Colombier int	ping(char *, int);
639