xref: /plan9/sys/src/cmd/aquarela/smbbrowse.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
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