4 Proot = 1, /* LSBs of qid.path for root dir */
5 Pinfo = 2, /* LSBs of qid.path for info files */
6 Pshare = 4, /* LSBs of qid.path for share dirs */
7 NBHDRLEN = 4, /* length of a netbios header */
8 T2HDRLEN = 64, /* Transaction2 header length */
9 NO_UID = 0xffff, /* initial UID on connect */
10 NO_TID = 0xffff, /* initial TID on connect */
11 MTU = 0xefff, /* our MTU */
12 CACHETIME = 2, /* seconds read-ahead is valid for */
13 CIFS_FNAME_MAX = 0xff, /* max file path component len */
14 OVERHEAD = 80, /* max packet overhead when reading & writing */
15 IDLE_TIME = 10, /* keepalive send rate in mins */
16 NBNSTOUT = 300, /* Netbios Name Service Timeout (300ms x 3retrys) */
17 NBRPCTOUT = 45*60*1000, /* Netbios RPC Timeout (45sec) */
18 MAX_SHARES = 4096, /* static table of shares attached */
19 RAP_ERR_MOREINFO= 234, /* non-error code, more info to be fetched */
20 MAX_DFS_PATH = 512, /* MS says never more than 250 chars... */
21 Bits16 = 0xFFFF, /* max Unicode value Windows supports */
25 SMB_COM_CREATE_DIRECTORY = 0x00,
26 SMB_COM_DELETE_DIRECTORY = 0x01,
28 SMB_COM_CREATE = 0x03,
31 SMB_COM_DELETE = 0x06,
32 SMB_COM_RENAME = 0x07,
33 SMB_COM_QUERY_INFORMATION = 0x08,
34 SMB_COM_SET_INFORMATION = 0x09,
37 SMB_COM_LOCK_BYTE_RANGE = 0x0C,
38 SMB_COM_UNLOCK_BYTE_RANGE = 0x0D,
39 SMB_COM_CREATE_TEMPORARY = 0x0E,
40 SMB_COM_CREATE_NEW = 0x0F,
41 SMB_COM_CHECK_DIRECTORY = 0x10,
42 SMB_COM_PROCESS_EXIT = 0x11,
44 SMB_COM_LOCK_AND_READ = 0x13,
45 SMB_COM_WRITE_AND_UNLOCK = 0x14,
46 SMB_COM_READ_RAW = 0x1A,
47 SMB_COM_READ_MPX = 0x1B,
48 SMB_COM_READ_MPX_SECONDARY = 0x1C,
49 SMB_COM_WRITE_RAW = 0x1D,
50 SMB_COM_WRITE_MPX = 0x1E,
51 SMB_COM_WRITE_MPX_SECONDARY = 0x1F,
52 SMB_COM_WRITE_COMPLETE = 0x20,
53 SMB_COM_QUERY_SERVER = 0x21,
54 SMB_COM_SET_INFORMATION2 = 0x22,
55 SMB_COM_QUERY_INFORMATION2 = 0x23,
56 SMB_COM_LOCKING_ANDX = 0x24,
57 SMB_COM_TRANSACTION = 0x25,
58 SMB_COM_TRANSACTION_SECONDARY = 0x26,
60 SMB_COM_IOCTL_SECONDARY = 0x28,
64 SMB_COM_WRITE_AND_CLOSE = 0x2C,
65 SMB_COM_OPEN_ANDX = 0x2D,
66 SMB_COM_READ_ANDX = 0x2E,
67 SMB_COM_WRITE_ANDX = 0x2F,
68 SMB_COM_NEW_FILE_SIZE = 0x30,
69 SMB_COM_CLOSE_AND_TREE_DISC = 0x31,
70 SMB_COM_TRANSACTION2 = 0x32,
71 SMB_COM_TRANSACTION2_SECONDARY = 0x33,
72 SMB_COM_FIND_CLOSE2 = 0x34,
73 SMB_COM_FIND_NOTIFY_CLOSE = 0x35,
74 SMB_COM_TREE_CONNECT = 0x70,
75 SMB_COM_TREE_DISCONNECT = 0x71,
76 SMB_COM_NEGOTIATE = 0x72,
77 SMB_COM_SESSION_SETUP_ANDX = 0x73,
78 SMB_COM_LOGOFF_ANDX = 0x74,
79 SMB_COM_TREE_CONNECT_ANDX = 0x75,
80 SMB_COM_QUERY_INFORMATION_DISK = 0x80,
81 SMB_COM_SEARCH = 0x81,
83 SMB_COM_FIND_UNIQUE = 0x83,
84 SMB_COM_FIND_CLOSE = 0x84,
85 SMB_COM_NT_TRANSACT = 0xA0,
86 SMB_COM_NT_TRANSACT_SECONDARY = 0xA1,
87 SMB_COM_NT_CREATE_ANDX = 0xA2,
88 SMB_COM_NT_CANCEL = 0xA4,
89 SMB_COM_NT_RENAME = 0xA5,
90 SMB_COM_OPEN_PRINT_FILE = 0xC0,
91 SMB_COM_WRITE_PRINT_FILE = 0xC1,
92 SMB_COM_CLOSE_PRINT_FILE = 0xC2,
93 SMB_COM_GET_PRINT_QUEUE = 0xC3,
94 SMB_COM_READ_BULK = 0xD8,
95 SMB_COM_WRITE_BULK = 0xD9,
96 SMB_COM_WRITE_BULK_DATA = 0xDA,
99 TRANS2_FIND_FIRST2 = 0x01,
100 TRANS2_FIND_NEXT2 = 0x02,
101 TRANS2_QUERY_FS_INFORMATION = 0x03,
102 TRANS2_QUERY_PATH_INFORMATION = 0x05,
103 TRANS2_SET_PATH_INFORMATION = 0x06,
104 TRANS2_QUERY_FILE_INFORMATION = 0x07,
105 TRANS2_SET_FILE_INFORMATION = 0x08,
106 TRANS2_CREATE_DIRECTORY = 0x0D,
107 TRANS2_SESSION_SETUP = 0x0E,
108 TRANS2_GET_DFS_REFERRAL = 0x10,
110 NT_TRANSACT_CREATE = 0x01,
111 NT_TRANSACT_IOCTL = 0x02,
112 NT_TRANSACT_SET_SECURITY_DESC = 0x03,
113 NT_TRANSACT_NOTIFY_CHANGE = 0x04,
114 NT_TRANSACT_RENAME = 0x05,
115 NT_TRANSACT_QUERY_SECURITY_DESC = 0x06
118 enum { /* CIFS flags */
119 FL_CASELESS_NAMES = 1<<3,
120 FL_CANNONICAL_NAMES = 1<<4,
122 FL2_KNOWS_LONG_NAMES = 1<<0,
123 FL2_PACKET_SIGNATURES = 1<<2,
124 FL2_HAS_LONG_NAMES = 1<<6,
125 FL2_EXTENDED_SECURITY = 1<<11,
127 FL2_PAGEING_IO = 1<<13, /* allow read of exec only files */
128 FL2_NT_ERRCODES = 1<<14,
132 enum { /* Capabilities Negoiated */
136 CAP_LARGE_FILES = 1<<3, /* 64 bit files */
138 CAP_RPC_REMOTE_APIS = 1<<5,
140 CAP_L2_OPLOCKS = 1<<7,
141 CAP_LOCK_READ = 1<<8,
144 CAP_INFO_PASSTHRU = 1<<13,
145 CAP_LARGE_READX = 1<<14,
146 CAP_LARGE_WRITEX = 1<<15,
148 CAP_BULK_TRANSFER = 1<<29,
149 CAP_COMPRESSED = 1<<30,
150 CAP_EX_SECURE = 1<<31
153 enum { /* string prefixes */
159 enum { /* optional support bits in treeconnect */
160 SMB_SUPPROT_SEARCH_BITS = 1,
161 SMB_SHARE_IS_IN_DFS = 2,
164 enum { /* DFS referal header flags */
165 DFS_HEADER_ROOT = 1, /* Server type, returns root targets */
166 DFS_HEADER_STORAGE = 2, /* server has storage, no more referals */
167 DFS_HEADER_FAILBACK = 4, /* target failback enabled */
170 enum { /* DFS referal entry flags */
171 DFS_SERVER_ROOT = 1, /* Server type, returns root targets */
172 DFS_REFERAL_LIST = 0x200, /* reply is a list (v3 only) */
173 DFS_REFERAL_SET = 0x400, /* target is a member of a set */
176 enum { /* share types */
185 enum { /* Security */
186 SECMODE_USER = 0x01, /* i.e. not share level security */
187 SECMODE_PW_ENCRYPT = 0x02,
188 SECMODE_SIGN_ENABLED = 0x04,
189 SECMODE_SIGN_REQUIRED = 0x08,
192 enum { /* file access rights */
194 SYNCHRONIZE = 0x00100000,
196 READ_CONTROL = 0x00020000,
197 GENERIC_ALL = 0x10000000,
198 GENERIC_EXECUTE = 0x20000000,
199 GENERIC_WRITE = 0x40000000,
200 GENERIC_READ = 0x80000000,
202 ATTR_READONLY = 0x0001,
203 ATTR_HIDDEN = 0x0002,
204 ATTR_SYSTEM = 0x0004,
205 ATTR_VOLUME = 0x0008,
206 ATTR_DIRECTORY = 0x0010,
207 ATTR_ARCHIVE = 0x0020,
208 ATTR_DEVICE = 0x0040,
209 ATTR_NORMAL = 0x0080,
210 ATTR_TEMPORARY = 0x0100,
211 ATTR_SPARSE = 0x0200,
212 ATTR_REPARSE = 0x0400,
213 ATTR_COMPRESSED = 0x0800,
214 ATTR_OFFLINE = 0x100, /* offline storage */
215 ATTR_NOT_CONTENT_INDEXED= 0x2000,
216 ATTR_ENCRYPTED = 0x4000,
217 ATTR_POSIX_SEMANTICS = 0x01000000,
218 ATTR_BACKUP_SEMANTICS = 0x02000000,
219 ATTR_DELETE_ON_CLOSE = 0x04000000,
220 ATTR_SEQUENTIAL_SCAN = 0x08000000,
221 ATTR_RANDOM_ACCESS = 0x10000000,
222 ATTR_NO_BUFFERING = 0x20000000,
223 ATTR_WRITE_THROUGH = 0x80000000,
225 /* ShareAccess flags */
228 FILE_SHARE_WRITE = 2,
229 FILE_SHARE_DELETE = 4,
232 /* CreateDisposition flags */
238 FILE_OVERWRITE_IF = 5,
241 FILE_DIRECTORY_FILE = 0x00000001,
242 FILE_WRITE_THROUGH = 0x00000002,
243 FILE_SEQUENTIAL_ONLY = 0x00000004,
244 FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008,
245 FILE_SYNCHRONOUS_IO_ALERT = 0x00000010,
246 FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020,
247 FILE_NON_DIRECTORY_FILE = 0x00000040,
248 FILE_CREATE_TREE_CONNECTION = 0x00000080,
249 FILE_COMPLETE_IF_OPLOCKED = 0x00000100,
250 FILE_NO_EA_KNOWLEDGE = 0x00000200,
251 FILE_OPEN_FOR_RECOVERY = 0x00000400,
252 FILE_EIGHT_DOT_THREE_ONLY = 0x00000400, /* samba source says so... */
253 FILE_RANDOM_ACCESS = 0x00000800,
254 FILE_DELETE_ON_CLOSE = 0x00001000,
255 FILE_OPEN_BY_FILE_ID = 0x00002000,
256 FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000,
257 FILE_NO_COMPRESSION = 0x00008000,
259 /* open/create result codes */
261 FILE_WAS_CREATED = 2,
262 FILE_WAS_OVERWRITTEN = 3,
264 /* ImpersonationLevel flags */
265 SECURITY_ANONYMOUS = 0,
266 SECURITY_IDENTIFICATION = 1,
267 SECURITY_IMPERSONATION = 2,
268 SECURITY_DELEGATION = 3,
271 SECURITY_CONTEXT_TRACKING = 1,
272 SECURITY_EFFECTIVE_ONLY = 2,
274 /* security descriptor bitmask */
275 QUERY_OWNER_SECURITY_INFORMATION = 1,
276 QUERY_GROUP_SECURITY_INFORMATION = 2,
277 QUERY_DACL_SECURITY_INFORMATION = 4,
278 QUERY_SACL_SECURITY_INFORMATION = 8,
282 enum { /* PathInfo/FileInfo infolevels */
283 SMB_INFO_STANDARD = 0x1,
284 SMB_INFO_IS_NAME_VALID = 0x6,
285 SMB_QUERY_FILE_BASIC_INFO = 0x101,
286 SMB_QUERY_FILE_STANDARD_INFO = 0x102,
287 SMB_QUERY_FILE_NAME_INFO = 0x104,
288 SMB_QUERY_FILE_ALLOCATION_INFO = 0x105,
289 SMB_QUERY_FILE_END_OF_FILE_INFO = 0x106,
290 SMB_QUERY_FILE_ALL_INFO = 0x107,
291 SMB_QUERY_ALT_NAME_INFO = 0x108,
292 SMB_QUERY_FILE_STREAM_INFO = 0x109,
293 SMB_QUERY_FILE_COMPRESSION_INFO = 0x10b,
294 SMB_QUERY_FILE_UNIX_BASIC = 0x200,
295 SMB_QUERY_FILE_UNIX_LINK = 0x201,
297 SMB_SET_FILE_BASIC_INFO = 0x101,
298 SMB_SET_FILE_DISPOSITION_INFO = 0x102,
299 SMB_SET_FILE_ALLOCATION_INFO = 0x103,
300 SMB_SET_FILE_END_OF_FILE_INFO = 0x104,
301 SMB_SET_FILE_UNIX_BASIC = 0x200,
302 SMB_SET_FILE_UNIX_LINK = 0x201,
303 SMB_SET_FILE_UNIX_HLINK = 0x203,
304 SMB_SET_FILE_BASIC_INFO2 = 0x3ec,
305 SMB_SET_FILE_RENAME_INFORMATION = 0x3f2,
306 SMB_SET_FILE_ALLOCATION_INFO2 = 0x3fb,
307 SMB_SET_FILE_END_OF_FILE_INFO2 = 0x3fc,
309 /* Find File infolevels */
310 SMB_FIND_FILE_DIRECTORY_INFO = 0x101,
311 SMB_FIND_FILE_FULL_DIRECTORY_INFO= 0x102,
312 SMB_FIND_FILE_NAMES_INFO = 0x103,
313 SMB_FIND_FILE_BOTH_DIRECTORY_INFO= 0x104,
314 SMB_FIND_FILE_UNIX = 0x202,
316 /* Trans2 FindFirst & FindNext */
317 CIFS_SEARCH_CLOSE_ALWAYS = 0x0001,
318 CIFS_SEARCH_CLOSE_AT_END = 0x0002,
319 CIFS_SEARCH_RETURN_RESUME = 0x0004,
320 CIFS_SEARCH_CONTINUE_FROM_LAST = 0x0008,
321 CIFS_SEARCH_BACKUP_SEARCH = 0x0010,
324 SMB_INFO_ALLOCATION = 0x1,
325 SMB_INFO_VOLUME = 0x2,
326 SMB_QUERY_FS_VOLUME_INFO = 0x102,
327 SMB_QUERY_FS_SIZE_INFO = 0x103,
328 SMB_QUERY_FS_DEVICE_INFO = 0x104,
329 SMB_QUERY_FS_ATTRIBUTE_INFO = 0x105,
330 SMB_QUERY_CIFS_UNIX_INFO = 0x200,
333 enum { /* things to search for in server lookups */
334 LOCAL_AUTHORATIVE_ONLY = 0x40000000,
335 LIST_DOMAINS_ONLY = 0x80000000,
336 ALL_LEARNT_IN_DOMAIN = 0xFFFFFFFF
340 char *user; /* username */
341 char *windom; /* remote server's domain name */
342 char *resp[2]; /* ASCII/Unicode or LM/NTLM keys */
343 int len[2]; /* length of above */
344 uchar *mackey[2]; /* Message Authentication key */
348 int fd; /* File descriptor for I/O */
349 int nbt; /* am using cifs over netbios */
350 int trn; /* TRN (unique RPC) ID */
351 int uid; /* user (authentication) ID */
352 int seq; /* sequence number */
353 int seqrun; /* sequence numbering active */
354 int caps; /* server's capabilities */
355 int support; /* support bits */
356 int flags; /* SMB flags that we will send in the next packet */
357 int flags2; /* SMB flags 2 that we will send in the next packet */
358 int nocache; /* disable write behind caching in server */
359 int pid; /* process ID */
360 int mid; /* multiplex ID */
361 int mtu; /* max size of packet */
362 int tz; /* Timezone, mins from UTC */
363 int isguest; /* logged in as guest */
364 int secmode; /* security mode */
365 int macidx; /* which MAC is in use, -1 is none */
366 uchar chal[0xff +1]; /* server's challange for authentication */
367 int challen; /* length of challange */
368 long slip; /* time difference between the server and us */
369 uvlong lastfind; /* nsec when last find peformed */
370 QLock seqlock; /* sequence number increment */
371 QLock rpclock; /* actual remote procedure call */
372 char *cname; /* remote hosts called name (for info) */
373 char *remos; /* remote hosts OS (for info) */
374 Auth *auth; /* authentication info */
380 int tid; /* tree ID received from server */
381 int seq; /* sequence number expected in reply */
382 int request; /* request cmd no (for debug) */
383 int flags2; /* flags2 received with this packet */
385 uchar *seqbase; /* cifs: pos of sequence number in packet */
386 uchar *wordbase; /* cifs: base of words section of data */
387 uchar *bytebase; /* cifs: base of bytes section of data */
388 uchar *tbase; /* transactions: start of trans packet */
389 uchar *tsetup; /* transactions: start of setup section */
390 uchar *tparam; /* transactions: start of params section */
391 uchar *tdata; /* transactions: start of data section */
393 uchar *eop; /* received end of packet */
394 uchar *pos; /* current pos in packet */
395 uchar *buf; /* packet buffer, must be last entry in struct */
400 int tid; /* not part of the protocol, housekeeping */
401 int options; /* not part of the protocol, housekeeping */
405 long created; /* last access time */
406 long accessed; /* last access time */
407 long written; /* last written time */
408 long changed; /* change time */
409 uvlong size; /* file size */
410 long attribs; /* attributes */
411 char name[CIFS_FNAME_MAX +1]; /* name */
452 int type; /* o=unknown, 1=CIFS, 2=netware 3=domain */
453 int flags; /* 1 == strip off consumed chars before resubmitting */
454 int ttl; /* time to live of this info in secs */
455 char *path; /* new path */
456 char *addr; /* new server */
478 extern int Checkcase;
482 extern Session *Sess;
485 extern Share Shares[MAX_SHARES];
489 extern void autherr(void);
490 extern Auth *getauth(char *name, char *windom, char *keyp, int secmode, uchar *chal, int len);
491 extern int macsign(Pkt *p, int seq);
494 extern Session *cifsdial(char *host, char *called, char *sysname);
495 extern void cifsclose(Session *s);
496 extern Pkt *cifshdr(Session *s, Share *sp, int cmd);
497 extern void pbytes(Pkt *p);
498 extern int cifsrpc(Pkt *p);
499 extern int CIFSnegotiate(Session *s, long *svrtime, char *domain, int domlen, char *cname, int cnamlen);
500 extern int CIFSsession(Session *s);
501 extern int CIFStreeconnect(Session *s, char *cname, char *tree, Share *sp);
502 extern int CIFSlogoff(Session *s);
503 extern int CIFStreedisconnect(Session *s, Share *sp);
504 extern int CIFSdeletefile(Session *s, Share *sp, char *name);
505 extern int CIFSdeletedirectory(Session *s, Share *sp, char *name);
506 extern int CIFScreatedirectory(Session *s, Share *sp, char *name);
507 extern int CIFSrename(Session *s, Share *sp, char *old, char *new);
508 extern int CIFS_NT_opencreate(Session *s, Share *sp, char *name, int flags, int options, int attrs, int access, int share, int action, int *result, FInfo *fi);
509 extern int CIFS_SMB_opencreate(Session *s, Share *sp, char *name, int access, int attrs, int action, int *result);
510 extern vlong CIFSwrite(Session *s, Share *sp, int fh, uvlong off, void *buf, vlong n);
511 extern vlong CIFSread(Session *s, Share *sp, int fh, uvlong off, void *buf, vlong n, vlong minlen);
512 extern int CIFSflush(Session *s, Share *sp, int fh);
513 extern int CIFSclose(Session *s, Share *sp, int fh);
514 extern int CIFSfindclose2(Session *s, Share *sp, int sh);
515 extern int CIFSecho(Session *s);
516 extern int CIFSsetinfo(Session *s, Share *sp, char *path, FInfo *fip);
519 extern int dfscacheinfo(Fmt *f);
520 extern char *trimshare(char *s);
521 extern char *mapfile(char *opath);
522 extern int mapshare(char *path, Share **osp);
523 extern int redirect(Session *s, Share *sp, char *path);
526 extern char *doserrstr(uint err);
529 extern int shareinfo(Fmt *f);
530 extern int openfileinfo(Fmt *f);
531 extern int conninfo(Fmt *f);
532 extern int sessioninfo(Fmt *f);
533 extern int dfsrootinfo(Fmt *f);
534 extern int userinfo(Fmt *f);
535 extern int groupinfo(Fmt *f);
536 extern int domaininfo(Fmt *f);
537 extern int workstationinfo(Fmt *f);
540 extern int walkinfo(char *name);
541 extern int numinfo(void);
542 extern int dirgeninfo(int slot, Dir *d);
543 extern int makeinfo(int path);
544 extern int readinfo(int path, char *buf, int len, int off);
545 extern void freeinfo(int path);
548 extern void setup(void);
549 extern int filetableinfo(Fmt *f);
550 extern Qid mkqid(char *s, int is_dir, long vers, int subtype, long path);
551 extern int rdonly(Session *s, Share *sp, char *path, int rdonly);
552 extern void usage(void);
553 extern void dmpkey(char *s, void *v, int n);
554 extern void main(int argc, char **argv);
557 extern char *strupr(char *s);
558 extern char *strlwr(char *s);
561 extern void Gmem(uchar **p, void *v, int n);
562 extern int calledname(char *host, char *name);
563 extern int nbtdial(char *addr, char *called, char *sysname);
564 extern void nbthdr(Pkt *p);
565 extern int nbtrpc(Pkt *p);
566 extern void xd(char *str, void *buf, int n);
569 extern char *nterrstr(uint err);
572 extern void *pmem(Pkt *p, void *v, int len);
573 extern void *ppath(Pkt *p, char *str);
574 extern void *pstr(Pkt *p, char *str);
575 extern void *pascii(Pkt *p, char *str);
576 extern void *pl64(Pkt *p, uvlong n);
577 extern void *pb32(Pkt *p, uint n);
578 extern void *pl32(Pkt *p, uint n);
579 extern void *pb16(Pkt *p, uint n);
580 extern void *pl16(Pkt *p, uint n);
581 extern void *p8(Pkt *p, uint n);
582 extern void *pname(Pkt *p, char *name, char pad);
583 extern void *pvtime(Pkt *p, uvlong n);
584 extern void *pdatetime(Pkt *p, long utc);
585 extern void gmem(Pkt *p, void *v, int n);
586 extern void gstr(Pkt *p, char *str, int n);
587 extern void gstr_noalign(Pkt *p, char *str, int n);
588 extern void gascii(Pkt *p, char *str, int n);
589 extern uvlong gl64(Pkt *p);
590 extern uvlong gb48(Pkt *p);
591 extern uint gb32(Pkt *p);
592 extern uint gl32(Pkt *p);
593 extern uint gb16(Pkt *p);
594 extern uint gl16(Pkt *p);
595 extern uint g8(Pkt *p);
596 extern long gdatetime(Pkt *p);
597 extern long gvtime(Pkt *p);
598 extern void gconv(Pkt *p, int conv, char *str, int n);
599 extern void goff(Pkt *p, uchar *base, char *str, int n);
602 extern int ping(char *host, int timeout);
605 extern char *raperrstr(uint err);
608 extern void upd_names(Session *s, Share *sp, char *path, Dir *d);
611 extern int RAPshareenum(Session *s, Share *sp, Share **ent);
612 extern int RAPshareinfo(Session *s, Share *sp, char *share, Shareinfo2 *si2p);
613 extern int RAPsessionenum(Session *s, Share *sp, Sessinfo **sip);
614 extern int RAPgroupenum(Session *s, Share *sp, Namelist **nlp);
615 extern int RAPgroupusers(Session *s, Share *sp, char *group, Namelist **nlp);
616 extern int RAPuserenum(Session *s, Share *sp, Namelist **nlp);
617 extern int RAPuserenum2(Session *s, Share *sp, Namelist **nlp);
618 extern int RAPuserinfo(Session *s, Share *sp, char *user, Userinfo *uip);
619 extern int RAPServerenum2(Session *s, Share *sp, char *workgroup, int type, int *more, Serverinfo **si);
620 extern int RAPServerenum3(Session *s, Share *sp, char *workgroup, int type, int last, Serverinfo *si);
621 extern int RAPFileenum2(Session *s, Share *sp, char *user, char *path, Fileinfo **fip);
624 extern int T2findfirst(Session *s, Share *sp, int slots, char *path, int *got, long *resume, FInfo *fip);
625 extern int T2findnext(Session *s, Share *sp, int slots, char *path, int *got, long *resume, FInfo *fip, int sh);
626 extern int T2queryall(Session *s, Share *sp, char *path, FInfo *fip);
627 extern int T2querystandard(Session *s, Share *sp, char *path, FInfo *fip);
628 extern int T2setpathinfo(Session *s, Share *sp, char *path, FInfo *fip);
629 extern int T2setfilelength(Session *s, Share *sp, int fh, FInfo *fip);
630 extern int T2fsvolumeinfo(Session *s, Share *sp, long *created, long *serialno, char *label, int labellen);
631 extern int T2fssizeinfo(Session *s, Share *sp, uvlong *total, uvlong *unused);
632 extern int T2getdfsreferral(Session *s, Share *sp, char *path, int *gflags, int *used, Refer *re, int nent);
633 extern int T2fsdeviceinfo(Session *s, Share *sp, int *type, int *flags);
636 extern int TNTquerysecurity(Session *s, Share *sp, int fh, char **usid, char **gsid);