]> git.ipfire.org Git - thirdparty/squid.git/blob - lib/smblib/smblib-priv.h
SourceFormat Enforcement
[thirdparty/squid.git] / lib / smblib / smblib-priv.h
1 /* UNIX SMBlib NetBIOS implementation
2
3 Version 1.0
4 SMBlib private Defines
5
6 Copyright (C) Richard Sharpe 1996
7
8 */
9
10 /*
11 This program is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2 of the License, or
14 (at your option) any later version.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software
23 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 */
25
26 #ifndef _SMBLIB_PRIV_H_
27 #define _SMBLIB_PRIV_H_
28
29 #include "smblib/std-defines.h"
30 #include "smblib/smblib-common.h"
31 #include <sys/types.h>
32 #include <unistd.h>
33
34 typedef unsigned short uint16;
35 typedef unsigned int uint32;
36
37 #include "rfcnb/byteorder.h" /* Hmmm ... hot good */
38
39 #ifndef max
40 #define max(a,b) (a < b ? b : a)
41 #endif
42
43 #define SMB_DEF_IDF 0x424D53FF /* "\377SMB" */
44
45 /* Core protocol commands */
46
47 #define SMBmkdir 0x00 /* create directory */
48 #define SMBrmdir 0x01 /* delete directory */
49 #define SMBopen 0x02 /* open file */
50 #define SMBcreate 0x03 /* create file */
51 #define SMBclose 0x04 /* close file */
52 #define SMBflush 0x05 /* flush file */
53 #define SMBunlink 0x06 /* delete file */
54 #define SMBmv 0x07 /* rename file */
55 #define SMBgetatr 0x08 /* get file attributes */
56 #define SMBsetatr 0x09 /* set file attributes */
57 #define SMBread 0x0A /* read from file */
58 #define SMBwrite 0x0B /* write to file */
59 #define SMBlock 0x0C /* lock byte range */
60 #define SMBunlock 0x0D /* unlock byte range */
61 #define SMBctemp 0x0E /* create temporary file */
62 #define SMBmknew 0x0F /* make new file */
63 #define SMBchkpth 0x10 /* check directory path */
64 #define SMBexit 0x11 /* process exit */
65 #define SMBlseek 0x12 /* seek */
66 #define SMBtcon 0x70 /* tree connect */
67 #define SMBtdis 0x71 /* tree disconnect */
68 #define SMBnegprot 0x72 /* negotiate protocol */
69 #define SMBdskattr 0x80 /* get disk attributes */
70 #define SMBsearch 0x81 /* search directory */
71 #define SMBsplopen 0xC0 /* open print spool file */
72 #define SMBsplwr 0xC1 /* write to print spool file */
73 #define SMBsplclose 0xC2 /* close print spool file */
74 #define SMBsplretq 0xC3 /* return print queue */
75 #define SMBsends 0xD0 /* send single block message */
76 #define SMBsendb 0xD1 /* send broadcast message */
77 #define SMBfwdname 0xD2 /* forward user name */
78 #define SMBcancelf 0xD3 /* cancel forward */
79 #define SMBgetmac 0xD4 /* get machine name */
80 #define SMBsendstrt 0xD5 /* send start of multi-block message */
81 #define SMBsendend 0xD6 /* send end of multi-block message */
82 #define SMBsendtxt 0xD7 /* send text of multi-block message */
83
84 /* CorePlus protocol */
85
86 #define SMBlockread 0x13 /* Lock a range and read it */
87 #define SMBwriteunlock 0x14 /* Unlock a range and then write */
88 #define SMBreadbraw 0x1a /* read a block of data without smb header ohead*/
89 #define SMBwritebraw 0x1d /* write a block of data without smb header ohead*/
90 #define SMBwritec 0x20 /* secondary write request */
91 #define SMBwriteclose 0x2c /* write a file and then close it */
92
93 /* DOS Extended Protocol */
94
95 #define SMBreadBraw 0x1A /* read block raw */
96 #define SMBreadBmpx 0x1B /* read block multiplexed */
97 #define SMBreadBs 0x1C /* read block (secondary response) */
98 #define SMBwriteBraw 0x1D /* write block raw */
99 #define SMBwriteBmpx 0x1E /* write block multiplexed */
100 #define SMBwriteBs 0x1F /* write block (secondary request) */
101 #define SMBwriteC 0x20 /* write complete response */
102 #define SMBsetattrE 0x22 /* set file attributes expanded */
103 #define SMBgetattrE 0x23 /* get file attributes expanded */
104 #define SMBlockingX 0x24 /* lock/unlock byte ranges and X */
105 #define SMBtrans 0x25 /* transaction - name, bytes in/out */
106 #define SMBtranss 0x26 /* transaction (secondary request/response) */
107 #define SMBioctl 0x27 /* IOCTL */
108 #define SMBioctls 0x28 /* IOCTL (secondary request/response) */
109 #define SMBcopy 0x29 /* copy */
110 #define SMBmove 0x2A /* move */
111 #define SMBecho 0x2B /* echo */
112 #define SMBopenX 0x2D /* open and X */
113 #define SMBreadX 0x2E /* read and X */
114 #define SMBwriteX 0x2F /* write and X */
115 #define SMBsesssetupX 0x73 /* Session Set Up & X (including User Logon) */
116 #define SMBtconX 0x75 /* tree connect and X */
117 #define SMBffirst 0x82 /* find first */
118 #define SMBfunique 0x83 /* find unique */
119 #define SMBfclose 0x84 /* find close */
120 #define SMBinvalid 0xFE /* invalid command */
121
122 /* Any more ? */
123
124 #define SMBdatablockID 0x01 /* A data block identifier */
125 #define SMBdialectID 0x02 /* A dialect id */
126 #define SMBpathnameID 0x03 /* A pathname ID */
127 #define SMBasciiID 0x04 /* An ascii string ID */
128 #define SMBvariableblockID 0x05 /* A variable block ID */
129
130 /* some other defines we need */
131
132 /* Flags defines ... */
133
134 #define SMB_FLG2_NON_DOS 0x01 /* We know non dos names */
135 #define SMB_FLG2_EXT_ATR 0x02 /* We know about Extended Attributes */
136 #define SMB_FLG2_LNG_NAM 0x04 /* Long names ? */
137
138 typedef unsigned short WORD;
139 typedef unsigned short UWORD;
140 typedef unsigned int ULONG;
141 typedef unsigned char BYTE;
142 typedef unsigned char UCHAR;
143
144 /* Some macros to allow access to actual packet data so that we */
145 /* can change the underlying representation of packets. */
146 /* */
147 /* The current formats vying for attention are a fragment */
148 /* approach where the SMB header is a fragment linked to the */
149 /* data portion with the transport protocol (rfcnb or whatever) */
150 /* being linked on the front. */
151 /* */
152 /* The other approach is where the whole packet is one array */
153 /* of bytes with space allowed on the front for the packet */
154 /* headers. */
155
156 #define SMB_Hdr(p) (char *)(p -> data)
157
158 /* SMB Hdr def for File Sharing Protocol? From MS and Intel, */
159 /* Intel PN 138446 Doc Version 2.0, Nov 7, 1988. This def also */
160 /* applies to LANMAN1.0 as well as the Core Protocol */
161 /* The spec states that wct and bcc must be present, even if 0 */
162
163 /* We define these as offsets into a char SMB[] array for the */
164 /* sake of portability */
165
166 /* NOTE!. Some of the lenght defines, SMB_<protreq>_len do not include */
167 /* the data that follows in the SMB packet, so the code will have to */
168 /* take that into account. */
169
170 #define SMB_hdr_idf_offset 0 /* 0xFF,'SMB' 0-3 */
171 #define SMB_hdr_com_offset 4 /* BYTE 4 */
172 #define SMB_hdr_rcls_offset 5 /* BYTE 5 */
173 #define SMB_hdr_reh_offset 6 /* BYTE 6 */
174 #define SMB_hdr_err_offset 7 /* WORD 7 */
175 #define SMB_hdr_reb_offset 9 /* BYTE 9 */
176 #define SMB_hdr_flg_offset 9 /* same as reb ...*/
177 #define SMB_hdr_res_offset 10 /* 7 WORDs 10 */
178 #define SMB_hdr_res0_offset 10 /* WORD 10 */
179 #define SMB_hdr_flg2_offset 10 /* WORD */
180 #define SMB_hdr_res1_offset 12 /* WORD 12 */
181 #define SMB_hdr_res2_offset 14
182 #define SMB_hdr_res3_offset 16
183 #define SMB_hdr_res4_offset 18
184 #define SMB_hdr_res5_offset 20
185 #define SMB_hdr_res6_offset 22
186 #define SMB_hdr_tid_offset 24
187 #define SMB_hdr_pid_offset 26
188 #define SMB_hdr_uid_offset 28
189 #define SMB_hdr_mid_offset 30
190 #define SMB_hdr_wct_offset 32
191
192 #define SMB_hdr_len 33 /* 33 byte header? */
193
194 #define SMB_hdr_axc_offset 33 /* AndX Command */
195 #define SMB_hdr_axr_offset 34 /* AndX Reserved */
196 #define SMB_hdr_axo_offset 35 /* Offset from start to WCT of AndX cmd */
197
198 /* Format of the Negotiate Protocol SMB */
199
200 #define SMB_negp_bcc_offset 33
201 #define SMB_negp_buf_offset 35 /* Where the buffer starts */
202 #define SMB_negp_len 35 /* plus the data */
203
204 /* Format of the Negotiate Response SMB, for CoreProtocol, LM1.2 and */
205 /* NT LM 0.12. wct will be 1 for CoreProtocol, 13 for LM 1.2, and 17 */
206 /* for NT LM 0.12 */
207
208 #define SMB_negrCP_idx_offset 33 /* Response to the neg req */
209 #define SMB_negrCP_bcc_offset 35
210 #define SMB_negrLM_idx_offset 33 /* dialect index */
211 #define SMB_negrLM_sec_offset 35 /* Security mode */
212 #define SMB_sec_user_mask 0x01 /* 0 = share, 1 = user */
213 #define SMB_sec_encrypt_mask 0x02 /* pick out encrypt */
214 #define SMB_negrLM_mbs_offset 37 /* max buffer size */
215 #define SMB_negrLM_mmc_offset 39 /* max mpx count */
216 #define SMB_negrLM_mnv_offset 41 /* max number of VCs */
217 #define SMB_negrLM_rm_offset 43 /* raw mode support bit vec*/
218 #define SMB_read_raw_mask 0x01
219 #define SMB_write_raw_mask 0x02
220 #define SMB_negrLM_sk_offset 45 /* session key, 32 bits */
221 #define SMB_negrLM_st_offset 49 /* Current server time */
222 #define SMB_negrLM_sd_offset 51 /* Current server date */
223 #define SMB_negrLM_stz_offset 53 /* Server Time Zone */
224 #define SMB_negrLM_ekl_offset 55 /* encryption key length */
225 #define SMB_negrLM_res_offset 57 /* reserved */
226 #define SMB_negrLM_bcc_offset 59 /* bcc */
227 #define SMB_negrLM_len 61 /* 61 bytes ? */
228 #define SMB_negrLM_buf_offset 61 /* Where the fun begins */
229
230 #define SMB_negrNTLM_idx_offset 33 /* Selected protocol */
231 #define SMB_negrNTLM_sec_offset 35 /* Security more */
232 #define SMB_negrNTLM_mmc_offset 36 /* Different format above */
233 #define SMB_negrNTLM_mnv_offset 38 /* Max VCs */
234 #define SMB_negrNTLM_mbs_offset 40 /* MBS now a long */
235 #define SMB_negrNTLM_mrs_offset 44 /* Max raw size */
236 #define SMB_negrNTLM_sk_offset 48 /* Session Key */
237 #define SMB_negrNTLM_cap_offset 52 /* Capabilities */
238 #define SMB_negrNTLM_stl_offset 56 /* Server time low */
239 #define SMB_negrNTLM_sth_offset 60 /* Server time high */
240 #define SMB_negrNTLM_stz_offset 64 /* Server time zone */
241 #define SMB_negrNTLM_ekl_offset 66 /* Encrypt key len */
242 #define SMB_negrNTLM_bcc_offset 67 /* Bcc */
243 #define SMB_negrNTLM_len 69
244 #define SMB_negrNTLM_buf_offset 69
245
246 /* Offsets related to Tree Connect */
247
248 #define SMB_tcon_bcc_offset 33
249 #define SMB_tcon_buf_offset 35 /* where the data is for tcon */
250 #define SMB_tcon_len 35 /* plus the data */
251
252 #define SMB_tconr_mbs_offset 33 /* max buffer size */
253 #define SMB_tconr_tid_offset 35 /* returned tree id */
254 #define SMB_tconr_bcc_offset 37
255 #define SMB_tconr_len 39
256
257 #define SMB_tconx_axc_offset 33 /* And X Command */
258 #define SMB_tconx_axr_offset 34 /* reserved */
259 #define SMB_tconx_axo_offset 35 /* Next command offset */
260 #define SMB_tconx_flg_offset 37 /* Flags, bit0=1 means disc TID */
261 #define SMB_tconx_pwl_offset 39 /* Password length */
262 #define SMB_tconx_bcc_offset 41 /* bcc */
263 #define SMB_tconx_buf_offset 43 /* buffer */
264 #define SMB_tconx_len 43 /* up to data ... */
265
266 #define SMB_tconxr_axc_offset 33 /* Where the AndX Command is */
267 #define SMB_tconxr_axr_offset 34 /* Reserved */
268 #define SMB_tconxr_axo_offset 35 /* AndX offset location */
269
270 /* Offsets related to tree_disconnect */
271
272 #define SMB_tdis_bcc_offset 33 /* bcc */
273 #define SMB_tdis_len 35 /* total len */
274
275 #define SMB_tdisr_bcc_offset 33 /* bcc */
276 #define SMB_tdisr_len 35
277
278 /* Offsets related to Open Request */
279
280 #define SMB_open_mod_offset 33 /* Mode to open with */
281 #define SMB_open_atr_offset 35 /* Attributes of file */
282 #define SMB_open_bcc_offset 37 /* bcc */
283 #define SMB_open_buf_offset 39 /* File name */
284 #define SMB_open_len 39 /* Plus the file name */
285
286 #define SMB_openx_axc_offset 33 /* Next command */
287 #define SMB_openx_axr_offset 34 /* Reserved */
288 #define SMB_openx_axo_offset 35 /* offset of next wct */
289 #define SMB_openx_flg_offset 37 /* Flags, bit0 = need more info */
290 /* bit1 = exclusive oplock */
291 /* bit2 = batch oplock */
292 #define SMB_openx_mod_offset 39 /* mode to open with */
293 #define SMB_openx_atr_offset 41 /* search attributes */
294 #define SMB_openx_fat_offset 43 /* File attributes */
295 #define SMB_openx_tim_offset 45 /* time and date of creat */
296 #define SMB_openx_ofn_offset 49 /* Open function */
297 #define SMB_openx_als_offset 51 /* Space to allocate on */
298 #define SMB_openx_res_offset 55 /* reserved */
299 #define SMB_openx_bcc_offset 63 /* bcc */
300 #define SMB_openx_buf_offset 65 /* Where file name goes */
301 #define SMB_openx_len 65
302
303 #define SMB_openr_fid_offset 33 /* FID returned */
304 #define SMB_openr_atr_offset 35 /* Attributes opened with */
305 #define SMB_openr_tim_offset 37 /* Last mod time of file */
306 #define SMB_openr_fsz_offset 41 /* File size 4 bytes */
307 #define SMB_openr_acc_offset 45 /* Access allowed */
308 #define SMB_openr_bcc_offset 47
309 #define SMB_openr_len 49
310
311 #define SMB_openxr_axc_offset 33 /* And X command */
312 #define SMB_openxr_axr_offset 34 /* reserved */
313 #define SMB_openxr_axo_offset 35 /* offset to next command */
314 #define SMB_openxr_fid_offset 37 /* FID returned */
315 #define SMB_openxr_fat_offset 39 /* File attributes returned*/
316 #define SMB_openxr_tim_offset 41 /* File creation date etc */
317 #define SMB_openxr_fsz_offset 45 /* Size of file */
318 #define SMB_openxr_acc_offset 49 /* Access granted */
319
320 #define SMB_clos_fid_offset 33 /* FID to close */
321 #define SMB_clos_tim_offset 35 /* Last mod time */
322 #define SMB_clos_bcc_offset 39 /* bcc */
323 #define SMB_clos_len 41
324
325 /* Offsets related to Write requests */
326
327 #define SMB_write_fid_offset 33 /* FID to write */
328 #define SMB_write_cnt_offset 35 /* bytes to write */
329 #define SMB_write_ofs_offset 37 /* location to write to */
330 #define SMB_write_clf_offset 41 /* advisory count left */
331 #define SMB_write_bcc_offset 43 /* bcc = data bytes + 3 */
332 #define SMB_write_buf_offset 45 /* Data=0x01, len, data */
333 #define SMB_write_len 45 /* plus the data ... */
334
335 #define SMB_writr_cnt_offset 33 /* Count of bytes written */
336 #define SMB_writr_bcc_offset 35 /* bcc */
337 #define SMB_writr_len 37
338
339 /* Offsets related to read requests */
340
341 #define SMB_read_fid_offset 33 /* FID of file to read */
342 #define SMB_read_cnt_offset 35 /* count of words to read */
343 #define SMB_read_ofs_offset 37 /* Where to read from */
344 #define SMB_read_clf_offset 41 /* Advisory count to go */
345 #define SMB_read_bcc_offset 43
346 #define SMB_read_len 45
347
348 #define SMB_readr_cnt_offset 33 /* Count of bytes returned */
349 #define SMB_readr_res_offset 35 /* 4 shorts reserved, 8 bytes */
350 #define SMB_readr_bcc_offset 43 /* bcc */
351 #define SMB_readr_bff_offset 45 /* buffer format char = 0x01 */
352 #define SMB_readr_len_offset 46 /* buffer len */
353 #define SMB_readr_len 45 /* length of the readr before data */
354
355 /* Offsets for Create file */
356
357 #define SMB_creat_atr_offset 33 /* Attributes of new file ... */
358 #define SMB_creat_tim_offset 35 /* Time of creation */
359 #define SMB_creat_dat_offset 37 /* 4004BCE :-) */
360 #define SMB_creat_bcc_offset 39 /* bcc */
361 #define SMB_creat_buf_offset 41
362 #define SMB_creat_len 41 /* Before the data */
363
364 #define SMB_creatr_fid_offset 33 /* FID of created file */
365
366 /* Offsets for Delete file */
367
368 #define SMB_delet_sat_offset 33 /* search attribites */
369 #define SMB_delet_bcc_offset 35 /* bcc */
370 #define SMB_delet_buf_offset 37
371 #define SMB_delet_len 37
372
373 /* Offsets for SESSION_SETUP_ANDX for both LM and NT LM protocols */
374
375 #define SMB_ssetpLM_mbs_offset 37 /* Max buffer Size, allow for AndX */
376 #define SMB_ssetpLM_mmc_offset 39 /* max multiplex count */
377 #define SMB_ssetpLM_vcn_offset 41 /* VC number if new VC */
378 #define SMB_ssetpLM_snk_offset 43 /* Session Key */
379 #define SMB_ssetpLM_pwl_offset 47 /* password length */
380 #define SMB_ssetpLM_res_offset 49 /* reserved */
381 #define SMB_ssetpLM_bcc_offset 53 /* bcc */
382 #define SMB_ssetpLM_len 55 /* before data ... */
383 #define SMB_ssetpLM_buf_offset 55
384
385 #define SMB_ssetpNTLM_mbs_offset 37 /* Max Buffer Size for NT LM 0.12 */
386 /* and above */
387 #define SMB_ssetpNTLM_mmc_offset 39 /* Max Multiplex count */
388 #define SMB_ssetpNTLM_vcn_offset 41 /* VC Number */
389 #define SMB_ssetpNTLM_snk_offset 43 /* Session key */
390 #define SMB_ssetpNTLM_cipl_offset 47 /* Case Insensitive PW Len */
391 #define SMB_ssetpNTLM_cspl_offset 49 /* Unicode pw len */
392 #define SMB_ssetpNTLM_res_offset 51 /* reserved */
393 #define SMB_ssetpNTLM_cap_offset 55 /* server capabilities */
394 #define SMB_ssetpNTLM_bcc_offset 59 /* bcc */
395 #define SMB_ssetpNTLM_len 61 /* before data */
396 #define SMB_ssetpNTLM_buf_offset 61
397
398 #define SMB_ssetpr_axo_offset 35 /* Offset of next response ... */
399 #define SMB_ssetpr_act_offset 37 /* action, bit 0 = 1 => guest */
400 #define SMB_ssetpr_bcc_offset 39 /* bcc */
401 #define SMB_ssetpr_buf_offset 41 /* Native OS etc */
402
403 /* Offsets for SMB create directory */
404
405 #define SMB_creatdir_bcc_offset 33 /* only a bcc here */
406 #define SMB_creatdir_buf_offset 35 /* Where things start */
407 #define SMB_creatdir_len 35
408
409 /* Offsets for SMB delete directory */
410
411 #define SMB_deletdir_bcc_offset 33 /* only a bcc here */
412 #define SMB_deletdir_buf_offset 35 /* where things start */
413 #define SMB_deletdir_len 35
414
415 /* Offsets for SMB check directory */
416
417 #define SMB_checkdir_bcc_offset 33 /* Only a bcc here */
418 #define SMB_checkdir_buf_offset 35 /* where things start */
419 #define SMB_checkdir_len 35
420
421 /* Offsets for SMB search */
422
423 #define SMB_search_mdc_offset 33 /* Max Dir ents to return */
424 #define SMB_search_atr_offset 35 /* Search attributes */
425 #define SMB_search_bcc_offset 37 /* bcc */
426 #define SMB_search_buf_offset 39 /* where the action is */
427 #define SMB_search_len 39
428
429 #define SMB_searchr_dec_offset 33 /* Dir ents returned */
430 #define SMB_searchr_bcc_offset 35 /* bcc */
431 #define SMB_searchr_buf_offset 37 /* Where the action starts */
432 #define SMB_searchr_len 37 /* before the dir ents */
433
434 #define SMB_searchr_dirent_len 43 /* 53 bytes */
435
436 /* Defines for SMB transact and transact2 calls */
437
438 #define SMB_trans_tpc_offset 33 /* Total param count */
439 #define SMB_trans_tdc_offset 35 /* total Data count */
440 #define SMB_trans_mpc_offset 37 /* Max params bytes to return */
441 #define SMB_trans_mdc_offset 39 /* Max data bytes to return */
442 #define SMB_trans_msc_offset 41 /* Max setup words to return */
443 #define SMB_trans_rs1_offset 42 /* Reserved byte */
444 #define SMB_trans_flg_offset 43 /* flags */
445 #define SMB_trans_tmo_offset 45 /* Timeout, long */
446 #define SMB_trans_rs2_offset 49 /* Next reserved */
447 #define SMB_trans_pbc_offset 51 /* Param Byte count in buf */
448 #define SMB_trans_pbo_offset 53 /* Offset to param bytes */
449 #define SMB_trans_dbc_offset 55 /* Data byte count in buf */
450 #define SMB_trans_dbo_offset 57 /* Data byte offset */
451 #define SMB_trans_suc_offset 59 /* Setup count - byte */
452 #define SMB_trans_rs3_offset 60 /* Reserved to pad ... */
453 #define SMB_trans_len 61 /* Up to setup, still need bcc */
454
455 #define SMB_transr_tpc_offset 33 /* Total param bytes returned */
456 #define SMB_transr_tdc_offset 35
457 #define SMB_transr_rs1_offset 37
458 #define SMB_transr_pbc_offset 39
459 #define SMB_transr_pbo_offset 41
460 #define SMB_transr_pdi_offset 43 /* parameter displacement */
461 #define SMB_transr_dbc_offset 45
462 #define SMB_transr_dbo_offset 47
463 #define SMB_transr_ddi_offset 49
464 #define SMB_transr_suc_offset 51
465 #define SMB_transr_rs2_offset 52
466 #define SMB_transr_len 53
467
468 /* Bit masks for SMB Capabilities ... */
469
470 #define SMB_cap_raw_mode 0x0001
471 #define SMB_cap_mpx_mode 0x0002
472 #define SMB_cap_unicode 0x0004
473 #define SMB_cap_large_files 0x0008
474 #define SMB_cap_nt_smbs 0x0010
475 #define SMB_rpc_remote_apis 0x0020
476 #define SMB_cap_nt_status 0x0040
477 #define SMB_cap_level_II_oplocks 0x0080
478 #define SMB_cap_lock_and_read 0x0100
479 #define SMB_cap_nt_find 0x0200
480
481 /* SMB LANMAN api call defines */
482
483 #define SMB_LMapi_SetUserInfo 0x0072
484 #define SMB_LMapi_UserPasswordSet 0x0073
485
486 /* Structures and defines we use in the client interface */
487
488 /* The protocols we might support. Perhaps a bit ambitious, as only RFCNB */
489 /* has any support so far 0(sometimes called NBT) */
490
491 typedef enum {SMB_RFCNB, SMB_IPXNB, SMB_NETBEUI, SMB_X25} SMB_Transport_Types;
492
493 typedef enum {SMB_Con_FShare, SMB_Con_PShare, SMB_Con_IPC} SMB_Con_Types;
494
495 typedef enum {SMB_State_NoState, SMB_State_Stopped, SMB_State_Started} SMB_State_Types;
496
497 /* The following two arrays need to be in step! */
498 /* We must make it possible for callers to specify these ... */
499
500 extern int SMB_Types[];
501
502 typedef struct SMB_Status {
503
504 union {
505 struct {
506 unsigned char ErrorClass;
507 unsigned char Reserved;
508 unsigned short Error;
509 } DosError;
510 unsigned int NtStatus;
511 } status;
512 } SMB_Status;
513
514 #define SMBLIB_DEFAULT_DOMAIN "SMBlib_dom"
515 #define SMBLIB_DEFAULT_OSNAME "UNIX of some type"
516 #define SMBLIB_DEFAULT_LMTYPE "SMBlib LM2.1 minus a bit"
517 #define SMBLIB_MAX_XMIT 65535
518
519 #define SMB_Sec_Mode_Share 0
520 #define SMB_Sec_Mode_User 1
521
522 typedef struct SMB_File_Def SMB_File;
523
524 struct SMB_File_Def {
525
526 SMB_Tree_Handle tree;
527 char filename[256]; /* We should malloc this ... */
528 UWORD fid;
529 unsigned int lastmod;
530 unsigned int size; /* Could blow up if 64bit files supported */
531 UWORD access;
532 off_t fileloc;
533
534 };
535
536 /* global Variables for the library */
537
538 extern SMB_State_Types SMBlib_State;
539
540 #ifndef SMBLIB_ERRNO
541 extern int SMBlib_errno;
542 extern int SMBlib_SMB_Error; /* last Error */
543 #endif
544
545 void SMB_Get_My_Name(char *name, int len);
546
547 #endif /* _SMBLIB_PRIV_H_ */