1 #include "headers.h"
2
3 int
smbmailslotsend(NbDgramSendParameters * p,SmbBuffer * msg,char ** errmsgp)4 smbmailslotsend(NbDgramSendParameters *p, SmbBuffer *msg, char **errmsgp)
5 {
6 ushort setup[3];
7 int rv;
8 SmbTransaction transaction;
9 SmbBuffer *b;
10 SmbHeader h;
11 setup[0] = 1;
12 setup[1] = 0;
13 setup[2] = 0;
14 memset(&transaction, 0, sizeof(transaction));
15 transaction.in.name = smbglobals.mailslotbrowse;
16 transaction.in.scount = 3;
17 transaction.in.setup = setup;
18 transaction.in.tdcount = smbbufferreadspace(msg);
19 transaction.in.data = smbbufferreadpointer(msg);
20 b = smbbuffernew(NbDgramMaxLen);
21 memset(&h, 0, sizeof(h));
22 rv = smbtransactionexecute(&transaction, &h, nil, b, &smbtransactionmethoddgram, p, nil, errmsgp);
23 smbbufferfree(&b);
24 return rv;
25 }
26
27 int
smbbrowsesendhostannouncement(char * name,ulong periodms,ulong type,char * comment,char ** errmsgp)28 smbbrowsesendhostannouncement(char *name, ulong periodms, ulong type, char *comment, char **errmsgp)
29 {
30 NbDgramSendParameters p;
31 SmbBuffer *b;
32 int rv;
33 // NbName msbrowse;
34
35 // msbrowse[0] = 1;
36 // msbrowse[1] = 2;
37 // memcpy(msbrowse + 2, "__MSBROWSE__", 12);
38 // msbrowse[14] = 2;
39 // msbrowse[15] = 1;
40 // nbnamecpy(p.to, msbrowse);
41 nbmknamefromstringandtype(p.to, smbglobals.primarydomain, 0x1d);
42 p.type = NbDgramDirectUnique;
43 b = smbbuffernew(NbDgramMaxLen);
44 smbbufferputb(b, 1);
45 smbbufferputb(b, 0);
46 smbbufferputl(b, periodms);
47 smbbufferputstrn(b, name, 16, 1);
48 smbbufferputb(b, 4);
49 smbbufferputb(b, 0);
50 smbbufferputl(b, type);
51 smbbufferputl(b, 0xaa55011f);
52 smbbufferputstring(b, nil, 0, comment);
53 rv = smbmailslotsend(&p, b, errmsgp);
54 smbbufferfree(&b);
55 return rv;
56 }
57