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