smbfns.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. ushort smbnhgets(uchar *);
  2. ulong smbnhgetl(uchar *);
  3. vlong smbnhgetv(uchar *);
  4. void smbhnputs(uchar *, ushort);
  5. void smbhnputl(uchar *, ulong);
  6. void smbhnputv(uchar *, vlong);
  7. SMBPROCESSFN smbnegotiate;
  8. SMBPROCESSFN smbcomsessionsetupandx;
  9. SMBPROCESSFN smbcomtreeconnectandx;
  10. SMBPROCESSFN smbcomtransaction;
  11. SMBPROCESSFN smbcomcheckdirectory;
  12. SMBPROCESSFN smbcomtransaction2;
  13. SMBPROCESSFN smbcomecho;
  14. SMBPROCESSFN smbcomopenandx;
  15. SMBPROCESSFN smbcomcreate;
  16. SMBPROCESSFN smbcomopen;
  17. SMBPROCESSFN smbcomclose;
  18. SMBPROCESSFN smbcomreadandx;
  19. SMBPROCESSFN smbcomwriteandx;
  20. SMBPROCESSFN smbcomqueryinformation;
  21. SMBPROCESSFN smbcomfindclose2;
  22. SMBPROCESSFN smbcomtreedisconnect;
  23. SMBPROCESSFN smbcomqueryinformation2;
  24. SMBPROCESSFN smbcomdelete;
  25. SMBPROCESSFN smbcomflush;
  26. SMBPROCESSFN smbcomwrite;
  27. SMBPROCESSFN smbcomsetinformation2;
  28. SMBPROCESSFN smbcomcreatedirectory;
  29. SMBPROCESSFN smbcomdeletedirectory;
  30. SMBPROCESSFN smbcomrename;
  31. SMBPROCESSFN smbcomlockingandx;
  32. SMBPROCESSFN smbcomsetinformation;
  33. SMBPROCESSFN smbcomntcreateandx;
  34. void *smbemalloc(ulong size);
  35. void *smbemallocz(ulong size, int clear);
  36. void smberealloc(void **pp, ulong size);
  37. char *smbestrdup(char *s);
  38. void smbfree(void **pp);
  39. int smbcheckwordcount(char *name, SmbHeader *h, ushort wordcount);
  40. int smbcheckwordandbytecount(char *name, SmbHeader *h, ushort wordcount, uchar **bdatap, uchar **edatap);
  41. int smbsendunicode(SmbPeerInfo *i);
  42. char *smbstringdup(SmbHeader *h, uchar *base, uchar **bdatap, uchar *edata);
  43. char *smbstrdup(uchar **bdatap, uchar *edata);
  44. char *smbstrinline(uchar **bdatap, uchar *edata);
  45. int smbstrlen(char *string);
  46. int smbstringlen(SmbPeerInfo *i, char *string);
  47. void smbstringprint(char **p, char *fmt, ...);
  48. int smbucs2len(char *string);
  49. int smbstringput(SmbPeerInfo *p, ulong flags, uchar *buf, ushort n, ushort maxlen, char *string);
  50. int smbstrput(ulong flags, uchar *buf, ushort n, ushort maxlen, char *string);
  51. int smbstrnput(uchar *buf, ushort n, ushort maxlen, char *string, ushort size, int upcase);
  52. int smbucs2put(ulong flags, uchar *buf, ushort n, ushort maxlen, char *string);
  53. void smbresponseinit(SmbSession *s, ushort maxlen);
  54. int smbresponsealignl2(SmbSession *s, int l2a);
  55. ushort smbresponseoffset(SmbSession *s);
  56. int smbresponseputheader(SmbSession *s, SmbHeader *h, uchar errclass, ushort error);
  57. int smbresponseputandxheader(SmbSession *s, SmbHeader *h, ushort andxcommand, ulong *andxoffsetfixup);
  58. int smbresponseputb(SmbSession *s, uchar b);
  59. int smbresponseputs(SmbSession *s, ushort s);
  60. int smbresponseputl(SmbSession *s, ulong l);
  61. int smbresponseoffsetputs(SmbSession *s, ushort offset, ushort s);
  62. int smbresponseputstring(SmbSession *s, int mustalign, char *string);
  63. int smbresponseputstr(SmbSession *s, char *string);
  64. SmbProcessResult smbresponsesend(SmbSession *s);
  65. int smbresponseputerror(SmbSession *s, SmbHeader *h, uchar errclass, ushort error);
  66. int smbresponseskip(SmbSession *s, ushort amount);
  67. ushort smbresponsespace(SmbSession *s);
  68. void smbresponsereset(SmbSession *s);
  69. int smbresponsecpy(SmbSession *s, uchar *data, ushort datalen);
  70. void smbtreedisconnect(SmbSession *s, SmbTree *t);
  71. void smbtreedisconnectbyid(SmbSession *s, ushort id);
  72. SmbTree *smbtreeconnect(SmbSession *s, SmbService *serv);
  73. int smbchaincommand(SmbSession *s, SmbHeader *h, ulong andxfixupoffset, uchar cmd, ushort offset, SmbBuffer *b);
  74. SmbService *smbservicefind(SmbSession *s, char *path, char *service, uchar *errclassp, ushort *errorp);
  75. void smbserviceput(SmbService *serv);
  76. void smbserviceget(SmbService *serv);
  77. int smbrap2(SmbSession *s);
  78. void smbglobalsguess(int client);
  79. SmbBuffer *smbbuffernew(ulong maxlen);
  80. void smbbufferfree(SmbBuffer **bp);
  81. SmbBuffer *smbbufferinit(void *base, void *bdata, ulong blen);
  82. ulong smbbufferwriteoffset(SmbBuffer *s);
  83. ulong smbbufferwritemaxoffset(SmbBuffer *s);
  84. ulong smbbufferreadoffset(SmbBuffer *s);
  85. void *smbbufferwritepointer(SmbBuffer *s);
  86. void *smbbufferreadpointer(SmbBuffer *s);
  87. int smbbufferputheader(SmbBuffer *s, SmbHeader *h, SmbPeerInfo *p);
  88. int smbbufferputandxheader(SmbBuffer *s, SmbHeader *h, SmbPeerInfo *p, uchar andxcommand, ulong *andxoffsetfixup);
  89. int smbbufferputb(SmbBuffer *s, uchar b);
  90. int smbbufferputs(SmbBuffer *s, ushort s);
  91. int smbbufferputl(SmbBuffer *s, ulong l);
  92. int smbbufferoffsetputs(SmbBuffer *s, ulong offset, ushort s);
  93. int smbbufferputstring(SmbBuffer *b, SmbPeerInfo *p, ulong flags, char *string);
  94. int smbbufferpututstring(SmbBuffer *b, SmbPeerInfo *p, int mustalign, char *string);
  95. int smbbufferputucs2(SmbBuffer *b, int mustalign, char *string);
  96. int smbbufferputstr(SmbBuffer *s, char *string);
  97. int smbbufferputstrn(SmbBuffer *s, char *string, int len, int upcase);
  98. int smbbufferputerror(SmbBuffer *s, SmbHeader *h, SmbPeerInfo *p, uchar errclass, ushort error);
  99. int smbbufferskip(SmbBuffer *s, ulong amount);
  100. ulong smbbufferspace(SmbBuffer *s);
  101. void smbbufferreset(SmbBuffer *s);
  102. int smbbufferputbytes(SmbBuffer *s, void *data, ulong datalen);
  103. int smbbuffergetbytes(SmbBuffer *b, void *buf, ulong len);
  104. void smbbuffersetreadlen(SmbBuffer *b, ulong len);
  105. int smbbuffertrimreadlen(SmbBuffer *b, ulong len);
  106. ulong smbbufferwritespace(SmbBuffer *b);
  107. int smbbuffergets(SmbBuffer *b, ushort *sp);
  108. int smbbuffergetstr(SmbBuffer *b, ulong flags, char **sp);
  109. int smbbuffergetstrinline(SmbBuffer *b, char **sp);
  110. int smbbuffergetstrn(SmbBuffer *b, ushort size, char **sp);
  111. int smbbuffergetstring(SmbBuffer *b, SmbHeader *h, ulong flags, char **sp);
  112. int smbbuffergetucs2(SmbBuffer *b, ulong flags, char **sp);
  113. void *smbbufferpointer(SmbBuffer *b, ulong offset);
  114. int smbbuffergetb(SmbBuffer *b, uchar *bp);
  115. int smbbuffergetl(SmbBuffer *b, ulong *lp);
  116. int smbbuffergetv(SmbBuffer *b, vlong *vp);
  117. ulong smbbufferreadspace(SmbBuffer *b);
  118. void smbbufferwritelimit(SmbBuffer *b, ulong limit);
  119. int smbbufferreadskipto(SmbBuffer *b, ulong offset);
  120. int smbbufferpushreadlimit(SmbBuffer *b, ulong offset);
  121. int smbbufferpopreadlimit(SmbBuffer *b);
  122. int smbbufferalignl2(SmbBuffer *b, int al2);
  123. int smbbufferwritebackup(SmbBuffer *b, ulong offset);
  124. int smbbufferreadbackup(SmbBuffer *b, ulong offset);
  125. int smbbufferfixuprelatives(SmbBuffer *b, ulong fixupoffset);
  126. int smbbufferfixuprelativel(SmbBuffer *b, ulong fixupoffset);
  127. int smbbufferfixuprelativeinclusivel(SmbBuffer *b, ulong fixupoffset);
  128. int smbbufferfixupabsolutes(SmbBuffer *b, ulong fixupoffset);
  129. int smbbufferfixupabsolutel(SmbBuffer *b, ulong fixupoffset);
  130. int smbbufferfixupl(SmbBuffer *b, ulong fixupoffset, ulong val);
  131. int smbbufferputv(SmbBuffer *b, vlong v);
  132. int smbbufferputack(SmbBuffer *b, SmbHeader *h, SmbPeerInfo *p);
  133. int smbbufferfill(SmbBuffer *b, uchar c, ulong len);
  134. int smbbufferoffsetgetb(SmbBuffer *b, ulong offset, uchar *bp);
  135. int smbbuffercopy(SmbBuffer *to, SmbBuffer *from, ulong amount);
  136. int smbbufferoffsetcopystr(SmbBuffer *b, ulong offset, char *buf, int buflen, int *lenp);
  137. SmbClient *smbconnect(char *to, char *share, char **errmsgp);
  138. void smbclientfree(SmbClient *s);
  139. int smbsuccess(SmbHeader *h, char **errmsgp);
  140. int smbtransactiondecodeprimary(SmbTransaction *t, SmbHeader *h, uchar *pdata, SmbBuffer *b, char **errmsgp);
  141. int smbtransactiondecodeprimary2(SmbTransaction *t, SmbHeader *h, uchar *pdata, SmbBuffer *b, char **errmsgp);
  142. void smbtransactionfree(SmbTransaction *t);
  143. int smbtransactionencoderesponse(SmbTransaction *t, SmbHeader *h, SmbPeerInfo *p, SmbBuffer *ob, char **errmsgp);
  144. int smbtransactionencoderesponse2(SmbTransaction *t, SmbHeader *h, SmbPeerInfo *p, SmbBuffer *ob, char **errmsgp);
  145. int smbtransactionencodeprimary(SmbTransaction *t, SmbHeader *h, SmbPeerInfo *p, SmbBuffer *ob,
  146. uchar *wordcountp, ushort *bytecountp, char **errmsgp);
  147. int smbtransactionencodeprimary2(SmbTransaction *t, SmbHeader *h, SmbPeerInfo *p, SmbBuffer *ob,
  148. uchar *wordcountp, ushort *bytecountp, char **errmsgp);
  149. int smbtransactiondecoderesponse(SmbTransaction *t, SmbHeader *h, uchar *pdata, SmbBuffer *b, char **errmsgp);
  150. int smbtransactiondecoderesponse2(SmbTransaction *t, SmbHeader *h, uchar *pdata, SmbBuffer *b, char **errmsgp);
  151. int smbtransactionclientsend(void *magic, SmbBuffer *ob, char **errmsgp);
  152. int smbtransactionclientreceive(void *magic, SmbBuffer *ib, char **errmsgp);
  153. int smbtransactionexecute(SmbTransaction *t, SmbHeader *h, SmbPeerInfo *p,
  154. SmbBuffer *ob, SmbTransactionMethod *method, void *magic, SmbHeader *rh, char **errmsgp);
  155. int smbtransactionrespond(SmbTransaction *t, SmbHeader *h, SmbPeerInfo *p, SmbBuffer *ob,
  156. SmbTransactionMethod *method, void *magic, char **errmsgp);
  157. SmbProcessResult smbtrans2findfirst2(SmbSession *s, SmbHeader *h);
  158. SmbProcessResult smbtrans2findnext2(SmbSession *s, SmbHeader *h);
  159. SmbProcessResult smbtrans2queryfileinformation(SmbSession *s, SmbHeader *h);
  160. SmbProcessResult smbtrans2queryfsinformation(SmbSession *s, SmbHeader *h);
  161. SmbProcessResult smbtrans2querypathinformation(SmbSession *s, SmbHeader *h);
  162. SmbProcessResult smbtrans2setfileinformation(SmbSession *s, SmbHeader *h);
  163. SmbProcessResult smbtrans2setpathinformation(SmbSession *s, SmbHeader *h);
  164. SmbIdMap *smbidmapnew(void);
  165. long smbidmapadd(SmbIdMap *m, void *p);
  166. void smbidmapremovebyid(SmbIdMap *m, long id);
  167. void smbidmapremove(SmbIdMap *m, void *thing);
  168. void smbidmapfree(SmbIdMap **mp, SMBIDMAPAPPLYFN *free, void *magic);
  169. void smbidmapapply(SmbIdMap *mp, SMBIDMAPAPPLYFN *free, void *magic);
  170. void *smbidmapfind(SmbIdMap *m, long id);
  171. void smbidmapremoveif(SmbIdMap *m, int (*f)(void *p, void *arg), void *arg);
  172. void smbsearchfree(SmbSearch **searchp);
  173. void smbsearchclose(SmbSession *s, SmbSearch *search);
  174. void smbsearchclosebyid(SmbSession *s, ushort sid);
  175. void smbseterror(SmbSession *s, uchar errclass, ushort error);
  176. void smbplan9time2datetime(ulong time, int tzoff, ushort *datep, ushort *timep);
  177. ulong smbdatetime2plan9time(ushort date, ushort time, int tzoff);
  178. vlong smbplan9time2time(ulong time);
  179. ulong smbplan9time2utime(ulong time, int tzoff);
  180. ulong smbutime2plan9time(ulong time, int tzoff);
  181. ulong smbtime2plan9time(vlong);
  182. void smbpathcanon(char *path);
  183. void smbpathsplit(char *path, char **dirp, char **namep);
  184. ushort smbplan9mode2dosattr(ulong mode);
  185. ulong smbdosattr2plan9wstatmode(ulong oldmode, ushort attr);
  186. ulong smbdosattr2plan9mode(ushort attr);
  187. ulong smbplan9length2size32(vlong size);
  188. void smbfileclose(SmbSession *s, SmbFile *f);
  189. void smbloglock(void);
  190. void smblogunlock(void);
  191. int smblogvprint(int cmd, char *fmt, va_list ap);
  192. int translogprint(int cmd, char *fmt, ...);
  193. int smblogprint(int cmd, char *fmt, ...);
  194. int smblogprintif(int v, char *fmt, ...);
  195. void smblogdata(int cmd, int (*print)(int cmd, char *fmt, ...), void *p, long data, long limit);
  196. SmbSharedFile *smbsharedfileget(Dir *d, int p9mode, int *sharep);
  197. void smbsharedfileput(SmbFile *f, SmbSharedFile *sf, int share);
  198. int smbsharedfilelock(SmbSharedFile *sf, SmbSession *s, ushort pid, vlong base, vlong limit);
  199. int smbsharedfileunlock(SmbSharedFile *sf, SmbSession *s, ushort pid, vlong base, vlong limit);
  200. vlong smbl2roundupvlong(vlong v, int l2);
  201. int smblistencifs(SMBCIFSACCEPTFN *accept);
  202. int smbnetserverenum2(SmbClient *c, ulong stype, char *domain, int *entriesp, SmbRapServerInfo1 **sip, char **errmsgp);
  203. int smbbuffergetheader(SmbBuffer *b, SmbHeader *h, uchar **parametersp, ushort *bytecountp);
  204. int smbbuffergetandcheckheader(SmbBuffer *b, SmbHeader *h, uchar command, int response,
  205. uchar **pdatap, ushort *bytecountp, char **errmsgp);
  206. int smbcheckheader(SmbHeader *h, uchar command, int response, char **errmsgp);
  207. int smbcheckheaderdirection(SmbHeader *h, int response, char **errmsgp);
  208. SmbDirCache *smbmkdircache(SmbTree *t, char *path);
  209. void smbdircachefree(SmbDirCache **cp);
  210. int smbmatch(char *name, Reprog *rep);
  211. Reprog *smbmkrep(char *pattern);
  212. int smbclientopen(SmbClient *c, ushort mode, char *name, uchar *errclassp, ushort *errorp, ushort *fid, ushort *attrp,
  213. ulong *mtimep, ulong *sizep, ushort *accessallowedp, char **errmsgp);
  214. Rune smbruneconvert(Rune r, ulong flags);
  215. int smbslut(SmbSlut *table, char *name);
  216. char *smbrevslut(SmbSlut *table, int val);
  217. SmbProcessResult smbtruncatefile(SmbSession *s, SmbFile *f, vlong offset);
  218. #ifdef LEAK
  219. #define smbemallocz(n, z) mallocz(n, z)
  220. #define smbemalloc(n) malloc(n)
  221. #define smbestrdup(p) strcpy(malloc(strlen(p) + 1), p)
  222. #endif
  223. int smbremovefile(SmbTree *t, char *dir, char *name);
  224. int smbbrowsesendhostannouncement(char *name, ulong periodms, ulong type, char *comment, char **errmsgp);